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?
evtl ist 00 = alles an? aber den port muss man im ddr schon definieren sonnst weiss der µC nicht, um was es sich handelt
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.