Hallo Pebisoft,

Ich mochte es nochmal zusammenfassen um es fur michselbst gut zu verstehen.

In assemblercode werden registers r24/r25 benutzt um variabelen werte zu testen.

//hier wird 0x33 in r24 geladen und r24 nach myChar ram speicherplatz kopiert
myChar=0x33;

//Bei non-volatile wird angenommen das 0x33 sich noch immer in r24 bevindet und wird nur r24 abgefragt..
if(myChar){} while(myChar){}

//Bei volatile wird angenommen das 0x33 sich nicht mehr in r24 bevindet und wird zuerst speicherplatz myChar nach r24 kopiert und dann wird r24 abgefragt..
if(myChar){} while(myChar){}

'volatile' heisst 'fluchtig' dass heist die wert konnte sich inzwissen geanderd haben.

Zuzammengefasst:
non-volatile:
- neuwert von variable x wird nicht getestet
- anfangswert unbekannt
volatile:
- immer die neuwert von variabele x wird getestet
- anfangswert immer 0

Ich hab die anfangswert mit Asuro Robot ausgetestet und ist auch bei volatile und non-volatile immer 0 aber vielleicht macht das bootprogram eine ram initialisation.

Gruss

Henk