;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; AVR-Tutorial Tasten ; ; Entprellung und Autorepeat für 4 Tasten nach Peter Dannegger ; ; ; ; 4 Tasten, 1 LED, beim Drücken der Taste1/2/3/4 wechselt der Zustand ; ; der LED. Beim Halten der Taste2/3 automatisches Togglen der LED ; ; ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .include "m8def.inc" ;-------------------------------------------------------------------------------- ; Definitionen ;-------------------------------------------------------------------------------- .def iwr0 = r1 .def iwr1 = r2 .def key_state = r4 .def key_press = r5 .def key_rep_press = r6 .def key_rep = r16 .def temp1 = r17 .def leds = r20 .equ led_port = PORTD .equ led_ddr = DDRD .equ LED = 0 .equ Taste1 = 0 .equ Taste2 = 1 .equ Taste3 = 2 .equ Taste4 = 3 .equ KEY_PIN = PINB .equ KEY_PORT = PORTB .equ KEY_DDR = DDRB .equ KEY_REPEAT_START = 50 ; Dauer, die gewartet werden muss, ; bevor Autorepeat startet .equ KEY_REPEAT_NEXT = 30 ; Togglefrequenz ;.equ XTAL = 3686400 .equ XTAL = 1000000 .org 0x0000 rjmp init .org OVF0addr rjmp timer_overflow0 ;-------------------------------------------------------------------------------- ; Initilisierung ;-------------------------------------------------------------------------------- init: ldi temp1, LOW(RAMEND) ; Stackpointer initialisieren out SPL, temp1 ldi temp1, HIGH(RAMEND) out SPH, temp1 ldi temp1, 1<