Forum: Mikrocontroller und Digitale Elektronik PIC carry bit im STATUS-Register


von latissimo (Gast)


Lesenswert?

Hallo!

was ist das Status.C von einem PIC controller?
bei arithmetischen Operationen wo 0 rauskommt wird ein anderes Bit 
gesetzt.
Was aber ist status.c(nennt sich Carry Bit)

in dem datasheet steht folgendes:

1 = A carry-out from the Most Significant bit of the result occurred

HÄH?!?

Danke im Voraus für Antwort

von Frank (Gast)


Lesenswert?


von latissimo (Gast)


Lesenswert?

folgende situation:



CODE: (alles sind 8 bit char variablen)

prox_count_high = prox_count_low - prox_count_high;
prox_count_low += 2;

if(STATUS.0 != 0) {.....}


die abfrage des carry flags sagt mir dann was?

von tastendrücker (Gast)


Lesenswert?

>CODE: (alles sind 8 bit char variablen)

>prox_count_high = prox_count_low - prox_count_high;
>prox_count_low += 2;

> if(STATUS.0 != 0) {.....}

> die abfrage des carry flags sagt mir dann was?

Dass bei der Addition

  prox_count_low += 2;

das Ergebnis nicht in 'prox_count_low' passt (grösser als 255). Aber 
wieso programmierst du in 'C' und fragst dabei das Statusregister ab???

von latissimo (Gast)


Lesenswert?

praxissemester

assembler programm war vorgegeben, soll es in c aufbauen, hab es also 
analog umgeschrieben(Kapazitive sensoren abfragen, ladepulse zählen)

von Mark (Gast)


Lesenswert?

In C kanns auch einen overflow geben, oder nicht?

Wie oben schon geschrieben wurde:
Wenn du eine Variable aufaddierst und das Ergebnis größer als 255 werden 
würde, dann gibts nen overflow, die Variable beginnt wieder bei 0 und 
das Carry-Bit wird gesetzt.
Das braucht man z.B., wenn man von Hand mit einer Variable mit mehr als 
8 Bit rechnet.

von Mark (Gast)


Lesenswert?

Ach ja:
falls es in deiner Anwendung gerade um eine in ASM angelegte 16 oder 32 
Bit Variable geht, dann kannst dir das ganze sparen und gleich in C eine 
solche Variable anlegen. Der Compiler macht dann den Rest selbst.

von stepp64 (Gast)


Lesenswert?

Und bei den Rotationsbefehlen ist das neue Bit (welches rein geschoben 
wird) immer das CARRY-BIT und das Bit welches rausgeschoben wird landet 
auch in CARRY. Damit hast du als ASM-Programmierer die Möglichkeit auf 
diese Bits zuzugreifen, bevor sie verloren gehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.