Страница 1 из 1
ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 11:48:10
evgen_kz
Всем привет!
Помогите, пожалуйста, с таким заданием.
К порту D микроконтроллера подключены кнопки (7 шт). Нажатие кнопки должно обеспечить "высвечивание" её номера (начиная от единицы) в двоичном коде на цепочке светодиодов, подключённых к порту B.
Подскажите, как это можно осуществить?
Re: ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 13:43:13
Vov123
Re: ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 14:07:01
BOB51
evgen_kz писал(а):Всем привет!
Помогите, пожалуйста, с таким заданием.
... Нажатие кнопки должно обеспечить "высвечивание" её номера (начиная от единицы) в двоичном коде на цепочке светодиодов, подключённых к порту B.
Подскажите, как это можно осуществить?
цепочка последовательно включенных светиков на один вывод МК?

Re: ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 15:04:57
alex_
Код: Выделить всё
void main()
{
DDRB=0b01111111; // настроен на выход
DDRD=0; // на вход, но можно было и не писать
while(1)
{
PORTB=PIND; // считаем из D порта и скопируем в B порт
}
}
Re: ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 15:11:45
ARV
alex_ писал(а):Код: Выделить всё
void main()
{
DDRB=0b01111111; // настроен на выход
DDRD=0; // на вход, но можно было и не писать
while(1)
{
PORTB=PIND; // считаем из D порта и скопируем в B порт
}
}
жестоко

Re: ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 15:24:13
a_skr
alex_ писал(а):Код: Выделить всё
void main()
{
DDRB=0b01111111; // настроен на выход
DDRD=0; // на вход, но можно было и не писать
while(1)
{
PORTB=PIND; // считаем из D порта и скопируем в B порт
}
}
Неправильно. Нужно же номер кнопки в двоичном коде. И было бы логично кнопки на корпус.
Код: Выделить всё
PORTD = 0x7F;
DDRB = 0x07;
while(1)
{
if((PIND & (1<<0)) == 0) PORTB = 1;
if((PIND & (1<<1)) == 0) PORTB = 2;
if((PIND & (1<<2)) == 0) PORTB = 3;
if((PIND & (1<<3)) == 0) PORTB = 4;
if((PIND & (1<<4)) == 0) PORTB = 5;
if((PIND & (1<<5)) == 0) PORTB = 6;
if((PIND & (1<<6)) == 0) PORTB = 7;
}
Re: ATtiny2313: порты ввода-вывода
Добавлено: Чт ноя 10, 2016 15:33:05
ARV
ну вот и еще один горе-студент зачёт получил...
Re: ATtiny2313: порты ввода-вывода
Добавлено: Пт ноя 11, 2016 05:57:05
evgen_kz
a_skr писал(а):alex_ писал(а):Код: Выделить всё
void main()
{
DDRB=0b01111111; // настроен на выход
DDRD=0; // на вход, но можно было и не писать
while(1)
{
PORTB=PIND; // считаем из D порта и скопируем в B порт
}
}
Неправильно. Нужно же номер кнопки в двоичном коде. И было бы логично кнопки на корпус.
Код: Выделить всё
PORTD = 0x7F;
DDRB = 0x07;
while(1)
{
if((PIND & (1<<0)) == 0) PORTB = 1;
if((PIND & (1<<1)) == 0) PORTB = 2;
if((PIND & (1<<2)) == 0) PORTB = 3;
if((PIND & (1<<3)) == 0) PORTB = 4;
if((PIND & (1<<4)) == 0) PORTB = 5;
if((PIND & (1<<5)) == 0) PORTB = 6;
if((PIND & (1<<6)) == 0) PORTB = 7;
}
Спасибо за помощь. Но а можно это реализовать как то графически в Algorithm Builder?
Не могу понять как можно отобразить while
Re: ATtiny2313: порты ввода-вывода
Добавлено: Пт ноя 11, 2016 07:39:10
oleg110592
evgen_kz писал(а):графически в Algorithm Builder

Re: ATtiny2313: порты ввода-вывода
Добавлено: Пт ноя 11, 2016 09:44:31
alex_
evgen_kz писал(а):Спасибо за помощь.
Если помогло плюсани товарищу

Re: ATtiny2313: порты ввода-вывода
Добавлено: Сб ноя 12, 2016 11:38:35
evgen_kz
alex_ писал(а):evgen_kz писал(а):Спасибо за помощь.
Если помогло плюсани товарищу

Не нажимается "+", идет загрузка и все на этом....
Добавлено after 2 minutes 14 seconds:
oleg110592 писал(а):evgen_kz писал(а):графически в Algorithm Builder

Спасибо за помощь.
Еще такой вопрос, а как сделать если не нажата кнопка, чтобы и светодиод не горел, т.к. горит последняя нажатая комбинация?
И необходимо, чтобы порт D был включен в режим ввода.
Re: ATtiny2313: порты ввода-вывода
Добавлено: Сб ноя 12, 2016 11:39:48
Jack_A
не '+' на клаве, а кнопка '+' в соответствующем сообщении

билдеровскими протезами никогда не пользовался, но по смыслу "если D = 0хFF, то 0 -> PORTB" - добавить еще одно условие.
Re: ATtiny2313: порты ввода-вывода
Добавлено: Сб ноя 12, 2016 15:17:45
oleg110592

порт D после сброса включен в режим ввода