Hallo Leute, Ich hab mal eine Frage: Bei dieser simplen Schaltung, und bei dem noch simpleren Programm soll wenn man den Schalter zu P3 drückt eine 1 auf der 7Segment anzeige angezeigt werden. Das funktioniert auch, nur wird zwischen den Schritten immer wieder die 8 angezeigt. Es sollte folgende Anzeige ausgegeben werden: 1. Eine 1 soll angezeigt werden 2. Die Anzeige soll garnichts mehr anzeigen (keine LED Leuchtet) 3. Das ganze wieder von vorne. Es wird folgende Anzeige ausgegeben: 1. Es wird eine 8 angezeigt 2. Es wird eine 1 angezeigt 3. es wird nichts angezeigt, also keine LED leuchtet 4. Es beginnt wieder von vorne. Die Schaltung wird mit Multisim simuliert. An was kann denn das liegen, dass zwischen drinnen noch die 8 Angezeigt wird? Tut mir leid, bin noch total neu auf diesem Gebiet... :) Nico
Ich hab hier mal noch die Multisim-Dateien hochgeladen. Vielleich kann sich das ja jemand kurz anschauen, weil ich glaube ich hab nun schon alles ausprobiert, finde den Fehler aber nicht, bzw. in der Debug Ansicht kann man ja den Assembler Quellcode anschauen, und da wird in folgender Zeile die 8 ausgegeben: ljmp _segcode _segcode, _main: sjmp l5 f1600, l4: jb P3.0, u11 sjmp u10 u11: sjmp l6 u10: mov DPTR, #002ah u11: clr A movc A, @A+DPTR <<<---- In dieser Zeile setzt er die 8 (alle LEDs leuchten) u10: mov P2, A <<<---- In dieser Zeile setzt er dann die 1 (also es leuchten nur die LEDs für die 1) l6, l3: mov P2, #0ffh l6, l3: sjmp f1600 l5, l2, f1601: ret l5, l2, f1601: sjmp f1600 LB8 clr A mov PSW, A mov SP, #20h lcall _segcode ljmp l5 ljmp LB8 _segcode, _main: mov R1, A mul AB Aber warum in dieser Zeile alle LED's auf einmal leuchten verstehe ich nicht... Vielen dank schon mal :)
Du sollest deine LEDs nicht am Adressbus anschliessen:
1 | : |
2 | u10: mov DPTR, #002ah |
3 | : |
4 | movc A, @A+DPTR <<<---- hier passiert ein externes Buszyklus mit oberem Adressbyte = 00 --> LEDs an |
5 | : |
Der P0 und der P2 sind Adress- und Datenbus und sollten nur sehr kontrolliert als EA-Ports verwendet werden. Mich wundert stark, dass deine Simulation überhaupt läuft. In der harten Realität fehlt dem 8051 nämlich der komplette externe (Programm- und Daten-)Speicher. Der würde so keinen Mucks tun, das ist mal eine echt irreführende Simulation :-o
Hallo Lothar, Ahh, das wusste ich nicht :) Schon wieder mehr dazu gelernt... :) Könntest du mir vielleicht einen Link geben, oder eine Kurze skitze, wie ich noch den Externen Speicher usw anschließen müsste? Bzw. Was ich noch machen müsste, dass der im realen Leben funktionieren würde? Nur so die Grundschaltung, ohne dem ganzen, was man nicht unbedingt braucht :) Ich hab nun die Dioden an meinen P1 gelegt, und noch Widerstände und Transistoren davor gemacht (das war ja das, was du gemeint hattest, oder?) und nun funktioniert es einwandfrei... Also zumindest in der Simulation :) Da hab ich auch schon wieder was dazu gelernt, dass der P0 und P2 nur für Adressen und Daten benutzt werden sollte. :) Kann ich dann eigentlich auf den P0 z.B. meine Schalter legen? Vielen Dank für deine Hilfe, Nico
Hallo A. Ja, das ist mir vorhin auch aufgefallen, das sollte natürlich 5 V sein :) Die Simulation stört das nicht, ob nun 5V oder 12V - aber im Realen betreibe ich das natürlich mit 5 V :) Nico
A. K. wrote: > Ein 8052 mit 12V-Versorgung??? Und ohne Reset-Beschaltung und ohne Quarz.... :-o Ja, damit dürfte genug über die Qualität der Simulation gesagt sein ;-) @ Nico > Kann ich dann eigentlich auf den P0 z.B. meine Schalter legen? Nein, ein 8051 hat an P0 und P2 den Speicher-Bus. Punkt. Du kannst schon Taster anschliessen, aber dazu mußt du Bustreiber mit entsprechendem Decoder verwenden. > wie ich noch den Externen Speicher usw anschließen müsste? Da hilft dir Google: 8051 schaltplan z.B. http://elektronik.kai-uwe-schmidt.de/index.php?page=8051_board So wie ich das sehe, bist du gerade am Lernen? Warum nimmst du dazu so einen alten Schinken wie den 8051? Es gibt so schöne neue und wesentlich performantere uC (MSP430, AVR...). Die interne Struktur dieser uC ist besser durchdacht und die Dinger haben deutlich mehr IO (Counter, Serielle Schnittstellen, Oszillator...) auf dem Chip.
Und die LED sollte mit Vorwiderstaenden angeschlossen werden. Wie man den 8052 beschaltet steht in dessen Datenblatt.
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.