Forum: Mikrocontroller und Digitale Elektronik Multiplexer Test mit 8051


von W. W. (dt_rocky)


Angehängte Dateien:

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

von PKlotz (Gast)


Lesenswert?

Hallo!
Hast OE auf Masse gelegt?

Mfg
P. K.

von dt_rocky (Gast)


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

von Robert W. (rweber)


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:
1
for(i=0; i<4; i++) {
2
  P1 = i << 6;
3
  INT0 = (e1 & a) | (e0 & !a);
4
}

von dt_rocky (Gast)


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

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
Noch kein Account? Hier anmelden.