Hallo, vieleicht kann mich (Bin abs. Newbie im Programmieren) irgend jemand etwas unterstützen. Ich hab mir ein 8051 Entwicklunsboard (peter Dannegger) nachgebaut und kann auch schon mit Flip 3.3.0 und MCtools mit meinem Board kommunizieren. Der uP ist ein T89C51RD2-IM. Aber beim Anfangen gibt es schon Schwierigkeiten. Habe mir aus verschiedenen Foren ein Lauflicht abgeschaut. Leider setzt meine Wartefunktion nicht ein. Es leuchtet immer nur LED1. Ich stell den Code einfach mal ein. Gebe ich beim Startwert 11111101 ein, leuchtet auch LED2. Mit Umstellungen war auch nichts zu erreichen. Vieleicht ist es ja nur ein kleiner Tip. ORG 0000h ljmp main main: mov P0, #11111110b ; Startwert zu Tor 4 ausgeben warte: mov R7, #00000001b ; CPU-Reg R6 mit 01h laden mov R6, #00000000b ; CPU-Reg R6 mit 00h laden mov R5, #00000000b ; CPU-Reg R5 mit 00h laden inc R7 inc R6 inc R5 loop: djnz R5,loop djnz R6,loop djnz R7,loop ret mlop: call warte ; eine Zeit warten mov A,P0 ; Wert in Tor 4 zum Akku rl A ; Inhalt A rotiere rechts mov P0,A ; Inhalt nach P0 ausgeben jmp mlop ; nach mlop springen end Hoffe auf feedback Danke Rainer
Der Hauptfehler ist der Befehl RET. Dadurch wird mlop nie erreicht.In MAIN muss der Befehl jmp mlop folgen. Sonst erfolgt ein undefinierter Rücksprung.
Mit PC-Programmierung hat das ja nun doch recht wenig zu tun -> Verschoben
In Unterfunktionen (warte:) darf man nicht hineinlaufen, schreibe sie hinter die Mainloop oder springe darüber hinweg. Und hau das inc r7, inc r6, inc r5 raus. Peter
Vielen Dank für Eure Hilfe. Ich habe es geschafft, und werde mich gleich an weitere Aufgaben trauen.
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.