Опрос клавиатуры по прерыванию. AVR-ка. Сделал, но работает коряво...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Oleg Danilov 05 ноября 2004 г. 06:17

клава на 4 кнопки, в силу причин сделал не на землю замыкание, а именно сканированием. Работает странно - 2 кнопки нормально, две - "черти что и сбоку бантик" - то перепрыгивают, то вообще не срабатываю. Задержку пробовал ставить до опроса - еще хуже. Крутится на 4 Мгц на 2313. Дребезг устранять в прерывании!! (каковы величины задержки удобней - кто подскажет?)

kscan: ;( -> kcode=scan) tmpi damaged
in tmpi, sreg
push tmpi
in tmpi, DDRD ;set mask direction
andi tmpi, 0b11110011
ori tmpi, 0b00000011
out DDRD, tmpi ;done

in tmpi, PORTD ;mask PORTD
andi tmpi, 0b11111110
ori tmpi, 0b00001110
out PORTD, tmpi ;row0
nop
sbis PIND, 2
ldi kcode, 0x01
sbis PIND, 3
ldi kcode, 0x02
andi tmpi, 0b11111101 ;mask PORTD
ori tmpi, 0b00001101
out PORTD, tmpi ;row1
nop
sbis PIND, 2
ldi kcode, 0x04
sbis PIND, 3
ldi kcode, 0x08
andi tmpi, 0b11111100
out PORTD, tmpi
ldi tmpi, 0xFF
w: dec tmpi
brne w
lp1: in tmpi, PIND
andi tmpi, 0b00001100
cpi tmpi, 0b00001100
brne lp1
pop tmpi
out SREG, tmpi
reti

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru