;************************************************************************* ;* * ;* Testing Read and debounce up to 8 keys * ;* Bulletproof: 4 equal samples needed * ;* * ;************************************************************************* .nolist .include "c:\avr\inc\1200def.inc" .list .def save_sreg = r0 .def iwr0 = r1 .def key_ct0 = r2 .def key_ct1 = r3 .def key_state = r4 .def key_press = r5 .def leds = r16 .def wr0 = r17 .equ key_port = pind .equ led_port = portb rjmp init .org OVF0addr ;timer interrupt 6ms in save_sreg, SREG get8key: in iwr0, key_port com iwr0 ;low active eor iwr0, key_state and key_ct0, iwr0 ;reset counter and key_ct1, iwr0 com key_ct0 ;count eor key_ct1, key_ct0 and iwr0, key_ct0 ;input AND last counterstate and iwr0, key_ct1 eor key_state, iwr0 ;toggle state and iwr0, key_state ;0-1-transition or key_press, iwr0 ;store key press detect ; ; insert other timer functions here ; out SREG, save_sreg reti ;------------------------------------------------------------------------- init: ldi wr0, 0xFF out ddrb, wr0 ldi wr0, 1<