Hallo alle zusammen. Ich habe ein Problem mit meinem Programm. Es geht um die Stelle ab dem Label count_up. Hier erfolgt die Rückkehr aus dem Unterprogramm wait_1s. Im Arbeitsregister steht bei der Rückkehr, der Wert .255. Nach clrf PORTD und incf count_number,1 soll mit movf count_number, der Wert, der in count_number steht (in diesem Fall .1), in das Arbeitsregister geladen werden. Laut MPLAP SIM passiert dies aber nicht. Der Wert im Arbeitsregister bleibt bei .255. Was mache ich hier falsch? Ich habe das Assemblerfile angehängt. Bitte nicht wundern. Das Programm ist zur Fehlerermittlung etwas gekürzt. Ich hoffe Ihr könnt mir helfen. L.G. Micha
Hallo Micha versuch doch einmal anstatt "movf" "movfw" zu verwenden. lies dazu einmal folgendes durch: http://www.to-pic.com/movf.php MfG
Ah, mit movfw bzw. mit movf count_number,w funzt es! Vielen lieben Dank. Ich hatte die Erklärung zum movf- Befehl, auf Sprut´s Homepage, so verstanden, dass wenn man nur movf eingibt, automatisch davon ausgegangen wird, dass der Inhalt der danach genannten Speicherzelle, in das Arbeitsregister geladen werden soll. So kann man sich irren. Man muss also doch noch definieren das der Inhalt der Speicherzelle nach w kopiert werden soll. Danke für deine schnelle Hilfe. L.G. Micha
Michael R. schrieb: > in > das Arbeitsregister geladen werden soll. W ist beim PIC eigentlich kein Arbeitsregister oder gar Akku, sondern eher ein Ergebnis-Auffang-Register. Am besten, du gewöhnst dir an, immer nur ,W oder ,F zu schreiben, also z.B. MOVF PortA,W MOVF PortA,F (wenn dein Assembler das ,F mitmacht). Da kommst du nicht so leicht in die Versuchung, was Falsches darunter zu verstehen. W.S.
PIC Assembler, das waren noch Zeiten ;) Mit movfw kopert man den Wert einer Speicherzelle in das Arbeitsregister W Mit movwf kopiert man W wieder in eine Speicherzelle. Das hätte ich auch noch gewusst ;)
W.S. schrieb: > W ist beim PIC eigentlich kein Arbeitsregister oder gar Akku, sondern > eher ein Ergebnis-Auffang-Register. Worin begründet sich Deine Aussage? Laut MC: W = "Working register (accumulator)" W kann Quelle und/oder Ziel einer Operation der ALU sein. Christian schrieb: > Mit movfw kopert man den Wert einer Speicherzelle in das Arbeitsregister > W Diese Instruktion gibt es nicht wirklich (pseudo-instruction).
Hans Franz schrieb: > Worin begründet sich Deine Aussage? Auf langjähriges Programmieren von PICs. Guck dir einfach mal den Befehlssatz an. W.S.
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.