und so kappieren sie das am schnellsten!
was habi ich gesagt?
Vollkommen richtig, was Du da sagst.
also muß er einfach nur in rjmp loop reinspringen, weil wir garkein Hauptprogramm haben,
nur die eine Zeile
Jetzt zu den zwei retis.
Du hast Dein Blinkprogramm auf der Grundlage von meinem Taster/Entprellprogramm aufgebaut, ist auch nicht schlimm, nur auf einmal mußtest Du doch was abändern, und dadurch wurde es unsauber.
Das Programm von mir enthält noch Sachen, die Du noch nicht verstehst, und ich habe keine Lust jetzt Dich durcheinanderzubringen, wo Du langsam anfängst kein Beginner mehr zu sein !!!
Ich entferne mal sachen aus der Interruptroutine, die JETZT keinen Sinn ergeben,
und dann kannst Du mal schauen, wie Du mit nur einem reti auskommen kannst.
Code:
pruefZaehler:
inc zaehler ;Zählregister um 1 erhöhen
cpi zaehler, 0x28 ;Wenn Zählregister = 65 ist
breq zeitum ;spring zu "zeitum:" wenn zaehler = 65
ldi tmp, time ;Hier wird der Timmer vorgelaen und zwar mit 255-254
out TCNT0, tmp
reti
zeitum:
clr zaehler ;Zählregister auf 0 setzen
sbrs status, sperre ;überspringe, wenn r17.7 = 1 ist (LED an?)
rjmp zeitum0 ;zu "zeitum0:" springen
sbrc status, sperre ;überspringe, wenn r17.7 = 0 ist (LED aus?)
rjmp zeitum1 ;zu "zeitum1:" springen
zeitum0:
sbr status, (1<<sperre) ;r17.7 = 1 setzen (LED an)
sbi PORTD, LED ;B.2 = 1 setzen -> LED an
rjmp zeitum2
zeitum1:
cbr status, (1<<sperre) ;r17.7 = 0 setzen (LED aus)
cbi PORTD, LED ;B.2 auf 0 setzen -> LED aus
rjmp zeitum2
zeitum2:
reti ;die Interrupt-Routine wird verlassen
So, frag aber bitte noch nicht, warum ich dort etwas weggemacht habe,
dabei kommen wir noch aus, irgendwann ......
Schaue Dir diese Code an überlege, lass Dir Zeit, und schicke Das Programm zurück,
wo nur ein reti ganz unten im code steht, vor dem Du dann den zaehler neu lädst.
Müßte jetzt gaaaaanz einfach sein, was kannst Du sonst noch schreiben an der stelle, wo das erste reti steht.......
Gruß Sebastian
Lesezeichen