www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik muss man ports als Ausgänge definieren?


Autor: Herbert Hassinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die Antworten zum 8051 Befehlssatz, jetzt habe ich noch ne
Frage, habe in Keil ein kleines programm geschrieben um zu testen,
allerdings wird nix angezeigt. Muss man vielleicht z.B. den Port 2 als
Ausgang definieren wie z.B. beim Atmega um ne Led anzusteuern.
Habe ne LED an Port 2.0 geklemmt und wollte das nur diese Leuchte.

main: mov p2, #01 ;damit die led am ersten bit leuchtet
ljmp main
end

Mach ich nen Denkfehler, dieser Pin müsste doch dann auf VCC gehen
oder?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
evtl ist 00 = alles an?
aber den port muss man im ddr schon definieren
sonnst weiss der µC nicht, um was es sich handelt

Autor: plitzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 8051 haben keine Gegentaktausgangsstufen. D.h. sie können zwar
teilweise bis zu 20mA "aufnehmen" (also gegen GND schalten) aber nur
seeeehr wenig Strom "ausgeben". Ein H-Pegel am Ausgang wir nur durch
einen internen PullUp gegen VCC in Größenordnung von 100kOhm erzeugt,
das reicht oft nichteinmal, um einen npn-Transistor durchzuschalten.

Deshalb beim 8051: "Verbraucher" sollten grundsätzlich gegen VCC
geschalten werden (LED mit der Anode an VCC, Katode über R an den
Ausgang, LED leuchtet, wenn Ausgang auf 0 geschalten wird).

Jörg

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Herbert,

vergiß mal ganz schnell was Jens geschrieben hat: Beim 8051 gibt es
keine DDR (DataDirectionRegister). Vermutlich bezieht er sich da auf
einen anderen Prozessor.

Was Jörg schrieb war da schon eher die Antwort auf Deine Fragen. Also,
schalte die LED mit Vorwiderstand gegen Vcc, dann klappt es. Denke auch
daran, daß beim 8051 alle Portpins nach dem Reset High-Potential
führen.
Weiterhin solltest Du beachten, Wenn du mehrere LEDs betreibst, daß es
nicht nur eine Strombegrenzung pro Pin, sondern auch noch eine gesamte
maximale Stromaufnahme gibt, die einzuhalten ist. (Steht im Datenblatt
deines µCs)
Zu den internen Pullups: 100kOhm ist etwas viel, der Wert liegt eher
bei 15-20kOhm. Port 0 hat gar keine Pullups, wenn man hier ein High
erwartet, muß man die Leitungen extern hochziehen. (So ist es zumindest
bei der AT89... Serie von Atmel.

Welchen 8051 verwendest Du?

Gruß,
Markus_8051

Autor: Krischan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Jens hat mit dem DataDirectionRegister nicht ganz unrecht (sorry
Markus). Soweit ich weiß gibt es von Philips 8051-Derivate (LPC9xx) die
über Gegentaktausgangsstufen verfügen. Sie benehmen sich an den Ports
nicht wie der Ur-8051 sondern die Portleitungen müssen bei der
Verwendung als Ausgang über das entsprechende Register
(PxM1.y-Register) initialisiert werden.

Gruss

Krischan

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Krischan,

danke für die Info. Tz, das so etwas noch den Namen 8051 tragen
darf....

Nun, ich werde mir diese Käfer mal anschauen, nicht das ich hier
weiterhin solchen Unsinn erzähle.

Gruß,
Markus_8051

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es stimmt, einige neuere Derivate, z.B. von Silabs oder der neue 20MIPS
von Atmel können auch echte Gegentaktausgänge.

Allerdings schlachtet keiner die heilige Kompatibilitätskuh, d.h. nach
dem Reset sind es ganz normale 8051-Ausgänge und high.

D.h. die Philipse bilden eine Ausnahme, die können per Fuse als "nach
reset low" definiert werden.


Ich würde aber sagen, daß es keine Schande ist, wenn ein
8051-Programmierer nicht alle der über 600 Typen kennt.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.