Register nach Reset nicht leer?

Gast #599806
Lesenswert?

Hi..

Mein Programmchen hat mich grade zur verzweiflung gebracht, im Simulator 
funktionierte es wunderbar doch auf meine ATmega8 machte es was es 
möchte..

Habe dann in meinem code u.A. soetwas drin:

sbrc  R4, 7
reti

D.h. der rücksprungbefehl aus dem interrupt wird ausgeführt wenn das 7. 
Bit in R4 gesetzt ist.

wenn ich nun dieses bit setze und die versorgungsspannung komplett 
wegnehme und dann wieder anschließe, passiert es dass in R4 doch wohl 
noch irgendetwas drin ist und der rücksprungbefehl ausgeführt wird 
obwohl er das an dieser stelle noch auf keinen Fall soll...

werden die register beim reset nicht zurückgesetzt? d.h. muss ich alle 
register die ich mal benutzen werde mit 0x00 vorbelegen?

mfg Paul H.
Gast #599827
Lesenswert?

Danke, das hat der Funktionalität meines Programmes schon sehr 
weitergeholfen, leider funktionieren nun andere dinge so überhaupt nicht 
aber ich versuch mich weiterhin..
1
cpr        R28, R2
2
cpr        R29, R3
3
brne       timer1

Ich möchte zwei 16-bit zahlen vergleichen und wenn sie ungleich sind zu 
timer1 springen. Das müsste doch so gehen oder?

mfg Paul H.
Gast #599860
Lesenswert?

>timer1 ist ein normales label.
OK, dann ist es gut.
Für mich klingt "timer1" etwas nach ISR oder ähnlichem, deshalb war ich 
etwas skeptisch.

Simon Küppers schrieb:

>cp R28, R2
>cpc R29, R3
>brne timer1

Danke für den Hinweis, mein AVR-Assembler ist momentan doch stark 
eingerostet. Ich wollte auch nur darauf hinweisen, dass zwei identische 
"compare" nicht sinnvoll sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren