Forum: Mikrocontroller und Digitale Elektronik T89C51RD2 Assembleranfänger


von Rainer ". (rayxyz)


Angehängte Dateien:

Lesenswert?

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

von Werner Lötknecht (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mit PC-Programmierung hat das ja nun doch recht wenig zu tun -> 
Verschoben

von Peter D. (peda)


Lesenswert?

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

von Rainer ". (rayxyz)


Lesenswert?

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
Noch kein Account? Hier anmelden.