ВитГо, у меня ведь до сих пор нет обработчика прерывания...
вот такой код определения кнопок сойдет?
Спойлер
Код: Выделить всё
certain_buttons_keyboard:
ldi temp1,5 ; УСТАНОВИМ СЧЕТЧИК столбцов клавы
; загружаем адрес метки (key_buff) находящейся в ОЗУ в регистровую пару "Z"
ldi ZL,low (key_buff) ; младший байт адреса
ldi ZH,high(key_buff) ; старший байт адреса
Certain_button:
ld Temp,Z+ ; загрузим данные в регистр из ОЗУ по адресу из регистровой пары "Z",
; и после этого адресс в регистровой паре автоматически увеличится на едениуц
sbrs temp,4 ; проверяем пятый бит справа
rjmp zero ; кнопка не нажата
rjmp unit ; здесь обрабатываем нажатую кнопку
sbrs temp,5 ; проверяем шестой бит справа
rjmp zero ; кнопка не нажата
rjmp unit ; здесь обрабатываем нажатую кнопку
sbrs temp,6 ; проверяем седьмойбит справа
rjmp zero ; кнопка не нажата
rjmp unit ; здесь обрабатываем нажатую кнопку
sbrs temp,7 ; проверяем восьмой бит справа
rjmp zero ; кнопка не нажата
rjmp unit ; здесь обрабатываем нажатую кнопку
dec temp1 ; уменьшим счетчик
brne Certain_buttons ; если не все столбцы, то циклимся
ret

