Ich bin gerade dabei meinen PIC18F46k22 in C zu programmieren und bin auf folgendes Problem gestoßen: Ich müsste zu einem Registerpaar (CCPR1H und CCP1L) aus zwei 8-bit Register eine 16-bit Integer addieren. In ASM hätte ich damit kein Problem: CCPR1H = INThigh + CCPR1H CCPR1L = INTlow + CCPR1L wenn carry = 1 : Increment CCPR1H Wie kann ich das in C machen? kann ich auch einfach das Carry Flag abfragen? Gibt es eine elegantere Lösung?
asdf schrieb: > Wie kann ich das in C machen? Einfach addieren. In C sind alle Operationen immer mindestens 16bittig. Der Compiler darf aber auf 8Bit optimieren, wenn das Eergebnis keinen Unterschied macht.
Ich habe aber da Problem, dass CCPR1 keine 16-bit Zahl sit, sonder 2 getrennte 8-bit Register
Ich kenne weder die PIC Architektur noch die dazugehörigen Werkzeuge, aber im Falle von AVRs könnte man auch mittels "CCPR1" zugreifen. Der Compiler wandelt das dann entsprechend in zwei Zugriffe um. Laut [1] sollte das auch in deinem Fall klappen. Ansonsten wird dort auch noch die Möglichkeit mittels Bit-Shift vorgestellt. Mit freundlichen Grüßen, Karol Babioch [1]: http://www.mikroe.com/forum/viewtopic.php?t=19166
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.