So hat etwas gedauert, aber nun komme ich mit EOR halbwegs klar und habe mir da auch ein kleines Prog. zusammen gebastelt.
Im Simulator läuft es im Pollinboard ist es gestern auch mal gelaufen, nun habe ich die HEX heute noch mal übertragen aber es läuft nicht mehr.
Die Testtool.hex läuft, also liegt es am Prog. nur ist mir mal wieder nicht klar wieso. Da es ja im Simulator läuft.
Code:
.include "m16def.inc"
.def arbeitsregister = r16
.def Tastmerker = r17
.equ Timerwert = 65536 - 100
start:
ldi arbeitsregister, 0b11100000
out DDRd, arbeitsregister
cbi POrtd,pb6
cbi PORTD,PB7
taster: ;Auswahl ob Taster betätigt
sbic PIND,PB2
rjmp reset
sbis PIND,PB2
rjmp taster
reset:
ldi r16,0b00000001
eor r17, r16
cpi r17,0x01
brne lichtaus
breq lichtan
Schleife:
ldi arbeitsregister, (1<<tov1)
out TIFR, arbeitsregister
Timer:
ldi arbeitsregister, HIGH(Timerwert)
out TCNT1H, arbeitsregister
ldi arbeitsregister, LOW(Timerwert)
out TCNT1L, arbeitsregister
ldi arbeitsregister, (1<<CS12)
out TCCR1B, arbeitsregister
loop:
in arbeitsregister, TIFR
sbrs arbeitsregister, TOV1
rjmp loop
rjmp taster
lichtan:
sbi portd,pb6
sbic pind,pb2
rjmp lichtan
rjmp schleife
lichtaus:
cbi portd,pb6
sbic pind,pb2
rjmp lichtaus
rjmp schleife
Wenn der Taster betätigt wird, wird über EOR die LED ein geschaltet.
Ist der Taster wieder 0 springt das Prog in eine Timer Schleife und von dort wieder in die Tasterabfrage.
Wenn der Taster nun betätigt wird, folgt nun der gleiche Ablauf nur das über EOR die LED diesmal Aus statt Ein geschaltet wird.
Lesezeichen