mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Microcontroler Programm


Autor: Nico (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Nico (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sollest deine LEDs nicht am Adressbus anschliessen:
       :
u10:   mov DPTR, #002ah
       :
       movc A, @A+DPTR  <<<---- hier passiert ein externes Buszyklus mit oberem Adressbyte = 00 --> LEDs an
       :
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

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein 8052 mit 12V-Versorgung???

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?pag...

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.

Autor: oha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und die LED sollte mit Vorwiderstaenden angeschlossen werden. Wie man 
den 8052 beschaltet steht in dessen Datenblatt.

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.