Gast
#238861
Hallo,
ich möchte zu einer uint16 Variable "sum" zyklisch eine zweite uint16
Variable "Wert" addieren. Jedes mal, wenn bei dieser Addition ein
Übertrag stattfindet möchte ich eine dritte uint8 Variable "cnt"
inkrementieren.
In Assembler würde ich nun einfach nach der Addition das Carry-Flag
prüfen und gegebenenfalls die Inkrementierung auslösen.
Wie kann ich dies am einfachsten in C realisieren. Meine einzige Idee
wäre die Werte der Variablen "sum" vor und nach der Addition zu
vergleichen. Ist die nachher kleiner als vorher, so hat ein Übertrag
stattgefunden. Quasi so:
ISR:
{
...
sum_old=sum;
sum+=wert;
if (sum<sumold) cnt++;
...
}
Geht das nicht einfacher ohne zusätzliche Variable? Oder kann ich nach
der Addition einfach das Carryflag über "bit_is_set" prüfen?
Danke
Gruß
Thomas