Ach, übrigens, da Du ja eh' ein ganzes Byte für das Taster-Flag nimmst, wäre das mit dem Abfragen unter dem Betrieb auch ganz leicht gemacht: Wenn der Taster gedrückt ist, zählst Du das Byte hoch, bei 254 (nach ca. ner Sekunde) wird dann der Autoconfig durchgeführt, das Byte auf 255 gesetzt (heisst, Autoconfig wurde durchgeführt), und bei 255 bleibt's dann eben, solange der Taster gedrückt ist - dann gibt's auch keine Mehrfachabfragen, wenn man den Taster nicht zwischendurch loslässt...
Du müsstest dann nur hier:
statt dessen schreiben:
und bei durchgeführtem Autoconfig eben das Register nicht löschen
sondern auf 255 setzen:
die Taster-Abfrage dann in die PWM-Routine mit rein, an dieser Stelle:
; ------------------------------------------------------------------------------------------------
; Status-LED blinken lassen, Taster abfragen
; ------------------------------------------------------------------------------------------------
tst PWM_Count ; 1 Zyklus durch?
brne PWM_Ende ; nein, Ende
(hier Code für Taster-Abfrage, siehe unten)
Status_LED:
inc Blink ; ja, Blink-Z‰hler 1 weiter (244x pro Sekunde)
usw.
Alles anzeigen
dann wird sie 244x in der Sekunde durchgeführt - sieht dann so aus:
sbis PinD, 1 ; Taste losgelassen, nächsten Befehl überspringen
rjump Autoconfig_gedrueckt
clr Autoconfig ; zurücksetzen, auf nächsten Tastendruck warten
rjmp Status_LED
Autoconfig_gedrueckt:
cpi Autoconfig, 255 ; bei 255 wurde Autoconfig durchgeführt
breq Status_LED ; da Taste aber immer noch gedrückt, keine weitere Aktion, bleibt bei 255
cseq Autonconfig, 254 ; bei 254 soll Autoconfig durchgeführt werden, wurde aber noch nicht
inc Autoconfig ; also nur weiterzählen, wenn Autoconfig unter 254
Alles anzeigen
das entprellen ist da "automatisch" mit dabei - wenn der Taster prellt, dann zählt Autoconfig meinetwegen bis 27, dann macht der Taster wieder auf (prellen), also Autoconfig wieder auf 0 - usw. bis der Taster zu bleibt, erst dann wird weiter gezählt bis 254, und da dann der Autoconfig durchgeführt...
wegen dem "cpi" musst Du aber dann für "Autoconfig" eines der Register 16-27 nehmen (geht bei R7 nicht)... und nur als Tipp: es bietet sich an, statt sbis PinD, 1 lieber sbis Taster_Pin, Taster zu schreiben, und das dann oben anzugeben (so wie bei der Status-LED auch), das erleichtert die Portierung, falls man mal den Taster woanders hat...