Ldi R24,0b00000000

out 02,R20 настройка линий E0-3 на ввод, а E4-7 на вывод;

out 0x11,R23 установить режим вывода для порта D;

out 0x12, R23 погасить все светодиоды;

loop1: стартовая метка цикла опроса;

out 03,R18 обнулить бит E4 для опроса клавиш 1-го столбца;

nop установить задержку в один такт;

in R16,01 считать данные из регистра PINE в R16;

out 03,R19 обнулить бит E5 для опроса клавиш 2-го столбца;

nop установить задержку в один такт;

in R17,01 считать данные из регистра PINE в R16;

or R16,R20 установить в 1 биты старшей тетрады R16;

or R17,R20 установить в 1 биты старшей тетрады R17;

swap R17 поменять местами старшую и младшую тетрады в R17;

and R17,R16 объединить информацию о нажатии клавиш в R17;

out 0x12,R17 вывести данные о номерах нажатых клавиш в порт D;

in R26,0 считать данные из регистра ввода порта F;

and R26,R22 обнулить все биты регистра R26, кроме 7-го.

cpi R26,0 сравнить значение в регистре R26 с нулем.

brne loop1 если клавиша не нажата – то выполнить переход для повторения опроса, иначе –

out 0x12,r24 выполнить команду включить все светодиоды;

#endasm завершение кода ассемблерной вставки;

} завершающая операторная скобка программы.

Для установки и обнуления битов регистров ввода/вывода можно использовать команды sbi и cbi соответственно. Однако эти команды необходимо будет использовать попарно, что ухудшает наглядность исходного кода программы.

Рисунок 2.7 – Алгоритм программы считывания данных с клавиатуры

Таблица 2.1 – Варианты индивидуальных заданий

№ п.п. Задание
  Разработать программу, фиксирующую нажатия клавиш 1, 6 и 12 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F1.
  Разработать программу, фиксирующую нажатия клавиш 3, 7 и 11 матричной клавиатуры включением светодиодов 5, 6 и 7 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F2.
  Разработать программу, фиксирующую нажатия клавиш 4, 7 и 10 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F1.
  Разработать программу, фиксирующую нажатия клавиш 1, 2 и 3 матричной клавиатуры включением светодиодов 4, 5 и 6 соответственно. Выход из цикла опроса осуществляется при одновременном нажатии клавиш F1+F3.
  Разработать программу, фиксирующую нажатия клавиш 2, 5 и 9 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при одновременном нажатии клавиш F1+F2.
  Разработать программу, фиксирующую нажатия клавиш 4, 8 и 11 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F3.
  Разработать программу, фиксирующую нажатия клавиш 3, 7 и 10 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F1.
  Разработать программу, фиксирующую нажатия клавиш 5, 6 и 7 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при одновременном нажатии клавиш F2+F3.
  Разработать программу, фиксирующую нажатия клавиш 1, 6 и 8 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F2.
  Разработать программу, фиксирующую нажатия клавиш 9, 10 и 11 матричной клавиатуры включением светодиодов 1, 2 и 3 соответственно. Выход из цикла опроса осуществляется при нажатии клавиши F1.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: