Versuch das mal:
Code:
$crystal = 8000000
Config Timer0 = Timer , Prescale = 1 , Clear Timer = 1
Timer0 = 8
On Int0 Int0_ovf
Enable Interrupts
Enable Int0
Dim Wert As Byte
Do
Loop
Int0_ovf:
Timer0 = 8
$asm
lds r16,{Wert} '1µs Wert in R16 laden
cpi r16,65 'Wert=65 ?
brne _label0 'nein weiter Label0
clr r16 'sonst Wert=0
_label0:
cpi r16,21
brlo _label1 'wenn kleiner 21 -> label1
brge _label2 'wenn größer oder gleich 21 -> label2
jmp _label3 'sonst label3
_label1:
ldi r17,1
Out Portd , R17 'Portd.1=1
jmp _end
_label2:
ldi r17,2
Out Portd , R17 'Portd.2=1
jmp _end
_label3:
ldi r17,1
Out Portd , R17 'Portd.1=1
_end:
inc r16 'Wert erhöhen
sts {wert},r16 'Wert speichern
$end Asm
Return
Lesezeichen