Hey Leute.. Hab den oben genannten PIC mit einem 7Segment Display verbunden.. Möchte auf dem Display Zahlen runterzählen lassen automatisch.. Funzt leider nicht. Zeigt mir lediglich ne sek null an und dann aus.. Hoffe ihr könnt mir helfen.. Danke im Vorraus! Tobias
Hi, > MOVLW B'00001001' ; Binärzahl für Dezimalzahl 9 und warum schreibst du das binär? Machs dir doch nicht so schwär! (hehe) movlw 9 und das > GOTO WAIT0 ; Warteschleife sollte wohl besser so sein: call WAIT0 ; x ms warten
Genau. Durch das GOTO macht dein PIC vermutlich ein Reset nach dem RETLW der Warteschleife. RETLW und RETURN beenden ein Unterprogramm welches durch CALL aufgerufen werden muss. Bei einem CALL wird der Programmcounter auf den Stack gerettet und das Programm springt zu der Adresse auf die das CALL verweist. Wenn das Unterprogramm nun zu Ende ist (RETLW) wird der gerettete Programmcounter wieder geladen und das Programm macht mit dem Befehl weiter, welcher nach dem CALL kommt. GOTO dagegen springt einfach zu der Adresse auf die verwiesen wird ohne den PC zu retten. Wenn du also mit GOTO in einen Programmteil springst, welcher mit RETLW beendet wird, lädt der µC den Wert in den PC zurück welcher gerade auf dem Stack liegt und das geht normalerweise immer schief. Ändere das mal ab. Ansonsten wir dein Prog wohl nie die Null anzeigen, da der DECFSZ-Befehl immer erst herunterzählt und dann auf Null vergleicht. Wenn du also eine Eins in Zahl hast, wird DECFSZ auf Null zählen, feststellen dass Zahl nun Null ist und den zweiten GOTO-Befehl ausführen. Da du dort dann wieder die 9 lädst, kann nie die Null angezeigt werden. Sven
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.