www.mikrocontroller.net

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


Autor: latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: latissimo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
praxissemester

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

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: stepp64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.