www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Multiplexer Test mit 8051


Autor: W. W. (dt_rocky)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Hab einen 1 aus 2 Dekoder(Multiplexer) in einem GAL16V8D realisiert und 
wollte dessen Funktion mit einem kleinen Programm mit einem 8051 testen 
(Intel 80C31BH).
Das GAL Programm sieht wie folgt aus:

declarations
   A, E1, E0 pin 1,2,3;
   Z pin 19 istype 'com';

equations
   Z = (E1 & A) # ( E0 & !A);

test_vectors
  ([A, E0, E1]->[Z])
   [0, 0, 0] -> .X.;
   [0, 1, 0] -> 1;
   [0, 0, 1] -> 0;
   [0, 1, 1] -> 1;
   [0, 0, 0] -> 0;
   [0, 1, 0] -> 0;
   [0, 0, 1] -> 1;
   [0, 1, 1] -> 1;

END

Die Funktion des GALS hab ich getestet und es passt auch.
Leider habe ich mit dem C Programm Probleme bzw. ist wahrscheinlich 
meine Denkweise falsch. Ich habe die Leitungen A, E0, E1 mit meinem 
Evalboard verbunden ( A auf P1.5, E0 auf P1.6, E1 auf P1.7) und einen 
Taster habe ich
an A (Pin 1 vom GAL) gelegt. Wenn nicht gedrückt ist das Potenzial auf 
Vcc
habe auch einen Pullup angeschlossen und wenn der Taster betätigt wird 
schließt er gegen Masse.
Nun ich habe mir mein Programm so überlegt, dass ich die E0, E1 erzeuge 
mit einer for-Schleife auf Port 1 und sie dann soweit shifte bis auf auf 
P1.6 bzw. auf P1.7 liegen. Danach habe ich zwei Funktionen für den 
Taster realisiert und diesen auch entprellt mit einem genügend langen 
Delay.
Nun hab ich glaub ich ein kleines Verständnis Problem, ich will dann mit 
dem Taster einfach einen Schritt weiter gehen um die Funktion so wie in 
der Wahrheitstabelle zu überprüfen, aber leider funktioniert das nicht 
so. Jedes mal wenn ich am Ausgang vom GAL messe kommt nicht das 
gewünschte raus bzw. bei INT0. Wo ist das Problem? Steh momentan auf der 
Leitung...wäre um jede Hilfe sehr erfreut
Das C-Programm ist im Anhang..

Mfg
rocky

Autor: PKlotz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Hast OE auf Masse gelegt?

Mfg
P. K.

Autor: dt_rocky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey P.K.!
Ja habe ich, Pin 11 ist auf GND...irgendwie sind hier wohl ned sooo 
viele 8051 fans hier, leider...freu mich natürlich über jede 
konstruktive antwort


Mfg
rocky

Autor: Robert Weber (rweber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du dass Du die Klammern vergessen hast?
Deine for-Schleife läuft immer durch, und Du wertest dann
immer e0=1 und e1=1 aus.

probiers mal so:
for(i=0; i<4; i++) {
  P1 = i << 6;
  INT0 = (e1 & a) | (e0 & !a);
}

Autor: dt_rocky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Robert!

Danke das wars...mahh ich sehe auch nichts, jetzt kommt ein sinnvolles 
Ergebnis beim GAL raus, danke...so muss jetzt nur noch INT0 einlesen und 
dann das Ergebnis "grafisch" mit den LEDs anzeigen.
Hatte leider nämlich nicht viel Zeit im Unterricht um es zu 
programmieren, bei der Abgabe hab ich es so abgegeben, naja wird wohl 
keine negative Note werden.

Danke nochmals

Mfg rocky

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.