Hoe te implementeren 8051 port3 als bidirection I / O?

H

hch16550

Guest
Ik wil het gebruik van 8051-poort 3 als bidirection I / O.
Hoe te implementeren 8051 port3 als bidirection I / O?

Bedankt.

hch16550

<img src="http://www.edaboard.com/images/smiles/icon_cry.gif" alt="Huilen of zeer triest" border="0" />
 
Hi hch16550,

Alle vier de havens 0,1,2,3 van MCS51 zijn bidirectioneel.Echter alleen poort 0 wordt beschouwd als "echte" bidirectionele, want toen geconfigureerd als input, het zweeft.
Havens 1,2 en 3 worden ook wel "quasi - bidirectionele" toe te schrijven aan de vaste interne pullups.

U kunt lezen een goed document over hardware binnen standaard MCS51 op:

http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_HARDWARE_1.pdf

Dus, als je wil een "echte" bidirectionele (hoge impedantie ingang) op poort 3 moet je gebruik maken van een externe buffer met drie state uitgang.
Anderszins, voor "quasi - bidirectionele" moet u akkoord gaan met een zwakke pullup weerstand over de volgorde van 100K Ohm trekt de haven pin-up naar Vcc.Duidelijk wanneer u wilt dat alle bits, moet je offers diverse speciale functies die door de micro op poort 3, zoals: INT0, 1 T0, 1 RX TX RD WR

Dit gedrag zou kunnen enigszins afwijken van een MCS51 afgeleide naar de andere, maar van de meeste van hen, volgt de regels afgebeeld in 80C51_FAM_HARDWARE_1.pdf

Groeten,
Silvio

 
Hoi, mijn beste vrienden.
Ik gebruik aduc814 (8051 dergelijke) port3 ergens als input poort, enige tijd als output poort plaatsvervanger.
Ik gebruik de haven als handshak haven, somt tijd output gegevens, somtime gegevens.
Bij lage snelheid de gegevens correct is.
Met hoge snelheid de gegevens ergens verkeerd is.
Ik weet niet wat er gebeurd is?
; inputgegevens
MOV A, # 0FFH
KNO-P3, A
MOV A, P3
CLR IBF_RST; handshak signaal
MOV A, P3; LEES A / D-PORT
SETB IBF_RST
MOV B, A; PASS TE B

; outputgegevens
MOV P3, # 0; MAKE P3 OUTPUT STAAT
MOV P3, A
CLR OBF_SET; OBF_SET SIGNAL
NOP
SETB OBF_SET
MOV A, # 0FFH; MAKE P3 als INPUT STAAT
MOV P3, ABedankt.

hch16550

<img src="http://www.edaboard.com/images/smiles/icon_confused.gif" alt="Verward" border="0" />
 
Hi hch16550,

Kunt u alle code?
Gelieve te vermelden wat voor u betekent lage en hoge snelheid.
Wat voor soort randapparaat heeft u aan de P3-poort (draden configuratie)?
Hoe je erachter te komen dat de gegevens verkeerd?Welke resultaten heeft u verwacht te zien?

Alles wat ik kan u vertellen tot nu toe is:
1.U kunt direct naar de haven 3.Geen noodzaak om door Accumulator.
2.Het heeft weinig zin om te schrijven # 00h tot P3 om het output-poort.In feite, schrijf je de output vergrendeling.Als je 0 op output, schrijf 0.Als u 1, dan schrijf 1.Als je schrijft 1 betekent niet dat zij automatisch input.Het
is waar dat de pull-up is ingeschakeld en kunt u gebruik maken van de haven als input.Maar je kunt gebruiken als output als goed, en P3 zal bron huidige als extern getrokken laag.
3.Sorry om te zeggen dat de code, maar het
is zinloos voor mij tot ik
je zie voltooid.

Groeten,
Silvio

 

Welcome to EDABoard.com

Sponsor

Back
Top