Forum: Mikrocontroller und Digitale Elektronik 80C51 IO


von Koko Lores (Gast)


Lesenswert?

Kann der zuletzt ausgegebene Wert eines Ports wieder eingelesen werden? 
Soweit ich mitbekommen habe, hat der Rechner ja keine einstellbare 
Betriebsrichtung des Ports, sprich, Lesen ist direktes Lesen.

von Jack B. (jackbraun)


Lesenswert?

Wenn man den Ausgang von aussen auf Masse zieht, und vom Programm her 
eine 1 schreibt, wird beim Zurücklesen eine 0 gelesen.

von Koko Lores (Gast)


Lesenswert?

Ich frage nämlich, weil ich einen Pin togglen möchte, aber das geht dann 
wohl nur, wenn ich noch ein Register benutze, wo das ausgegebene Byte 
drinsteht.

Merkwürdigerweise hat es aber gestern im Simulator trotzdem 
funktioniert..

von Jack B. (jackbraun)


Lesenswert?

>Ich frage nämlich, weil ich einen Pin togglen möchte

Dazu mußt Du doch nicht zurücklesen.

von roquema (Gast)


Lesenswert?

>Ich frage nämlich, weil ich einen Pin togglen möchte

wieso? die Ports kann man direkt ansprechen, sogar bitweise.
z.B. CPL P3.1 togelt den Pin 1 an Port 3...

von Peter D. (peda)


Lesenswert?

Pin toggle gehört zu den read-modify-write Befehlen, liest also das 
Ausgangsregister und ändert es.



Peter

von Koko Lores (Gast)


Lesenswert?

Kannst Du mir zufällig sagen, wie ich der Keil-Umgebung den Watchdog für 
den Controller deaktivieren kann?
In den Debug-Options für das Target läßt sich ein Ini-File angeben, aber 
ich habe diese Datei nicht, und weiß auch nicht, was da drin stehen 
sollte.

von Koko Lores (Gast)


Lesenswert?

Oh, das ist ja gut! Erste Schritte in ASM.. Danke!

von Andreas K. (oldcoolman)


Lesenswert?

Hi,
also in Assembler:

Einlesebefehle lesen den Portpin:

Mov,ziel,port  ;ziel ist A, register0-7, interne Ram adresse
ADD A,port
ANL A, port
jnb portpin,rel.adr

Hingegen Änderungsbefehle lesen den Ausgangsspeicher zurück:

anl port,operand2
orl port,operand2
xrl port,opernad2

inc port
dec port
djnz port,rel.adr

mov portpin,c
clr portpin
setbit portpin
CPL portpin      <------------ dein toggle
jbc portpin,rel


Gruß
Andi

von Koko Lores (Gast)


Lesenswert?

hier der inhalt der sagenumwobenen initialisierungsdatei zum ausschalten 
des watchdog

PE_SWD = 0          /* Disable Watchdog with pin PE_SWD */
reset               /* perform CPU reset: uses value at PE_SWD */

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.