; Projekt-Name: Projekt01 Datum: 22.01.2014
; Datei: Tiny2313-tasteprellen.asm
; AVR: Tiny2313-20PU
.INCLUDE "tn2313def.inc" ; Deklaration für Tiny2313
rjmp reset ; Reseteinsprung
.ORG OVF0addr ; Interrupt-Vektor
rjmp TIMER0_OVF ; Sprung zur ISR
.def akku =r16
.def temp17=r17 ; r17 zum Entprellen
#define sw1 PIND,PD0
reset:
;Timer0 initial.
ldi akku,(1<<CS02)|(1<<CS00)
out TCCR0B,akku ; Prescale = 1024
ldi akku,(1<<TOIE0)
out TIMSK,akku
sei
;Vorbereitung PORTB und PIND
ldi akku,(1<<PB0) | (1<<PB1)
out DDRB,akku ; PB0 + PB1=Output
ldi akku,0x00 ; alle Pins in r16=Low
out DDRD,akku ; Datenricht. PD0-PD6=Input
ldi akku,0x7F ; 0b0111.1111
out PORTD,akku ; PD0 bis PD6=PULLUP
clr akku ; beide LEDs zu Beginn AUS
out PORTB,akku
loop:
sbis sw1 ; überspringe, wenn PD0=HIGH
sbi PORTB,PB0
rcall prellen
sbis sw1 ; überspringe, wenn PD0=HIGH
sbi PORTB,PB1
rcall prellen
sbis sw1 ; überspringe, wenn PD0=HIGH
cbi PORTB,PB0
rcall prellen
sbis sw1 ; überspringe, wenn PD0=HIGH
cbi PORTB,PB1
rcall prellen
rjmp loop
prellen:
ldi temp17,0x02 ; r17 = 02
pause1:
tst temp17
brne pause1
ret
;Interrupt-ISR
TIMER0_OVF:
push r2
in r2,SREG
dec temp17
out SREG,r2
pop r2
reti
.EXIT
Lesezeichen