PIC carry bit im STATUS-Register

Gast #807232
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
Gast #807266
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?
Gast #807285
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???
Gast #807292
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.
Gast #807298
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.
Gast #811491
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.

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