Ports AT89S8253

Gast #3976159
Lesenswert?

P0 = 0xFF;                             // Set P0 as high impedance input
  P1 = 0xFF;                             // Set P1 as input
  P2 = 0xFF;                             // Set P2 as input
  P3 = 0xFF;                             // Set P3 as input


Hallo,
im Datenblatt kann ich dass so rauslesen. wie muss ich sie als output 
initialiseieren?
Alle mit 0x00?
Gast #3976232
Lesenswert?

die 8051 (zu denen dein µC gehört) haben ein anderes Konzept zu 
Ein/Ausgängen als die meisten anderen µC. Es gibt keine Umschaltung 
zwischen Eingang und Ausgang.

Es funktioniert darüber, dass die Ausgangstreiber stark asymmetrisch 
sind. Wenn du eine 1 ausgibst, dann wird der Pin nur schwach nach oben 
gezogen (µA Bereich, auf Port 0 floatet er sogar völlig). Wenn du außen 
einen Treiber an diesen Pin anschließt, dann kann er die 1 locker 
übertreiben und den Pegel beliebig festlegen. Wenn kein externer Treiber 
angeschlossen ist, dann wird der Pin durch den schwachen Pullup auf 1 
gezogen.

Wenn du eine 0 ausgibst, dann wird diese stark nach außen getrieben - 
dann sollte möglichst kein externer Treiber versuchen, den Pin auf 1 zu 
ziehen, sonst fließt viel Strom.

Also:
- um den Pin als Ausgang zu benutzen einfach den gewünschten Wert 
reinschreiben (und an Port 0 zusätzlich externe Pullups vorsehen).
- um den Pin als Eingang zu benutzen einfach 1 reinschreiben, und den 
Pegel durch den externen Treiber festlegen lassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren