Ich soll einen Mux mit einem Dallas 8051-Chip machen. p1.0, p1.1 und p1.2 sind Eingaben. P1.3 ist die Freigabeleitung, und die Ausgänge sind P2.0 bis P2.3. Alle Ausgänge funktionieren gut während der Fehlersuche, außer wenn alle Eingänge Null sind und enable eins ist. (Nur Null sollte in der Ausgabe in der Keil-Debugger-Ansicht aktiviert sein, aber das ist nicht der Fall).Zusammenbau Null Fehler - Switch-Anweisung
#include<reg51.h>
sbit input0 = p1^0;
sbit input1 = p1^1;
sbit input2 = p1^2;
sbit enable = p1^3;
sbit output0 = p2^0;
sbit output1= p2^1;
sbit output2 = p2^2;
sbit output3 = p2^3;
sbit output4 = p2^4;
sbit output4 = p2^5;
sbit output6 = p2^6;
sbit output7 = p2^7;
void main (void) {
P2 = 0x00;
if (enable==1)
{
P1&=0x07;
switch(P1)
{
case 1: output1=1; break;
case 2: output2=1; break;
case 3: output3=1; break;
case 4: output4=1; break;
case 5: output5=1; break;
case 6: output6=1; break;
case 7: output7=1; break;
default: output0 =1; break;
}
}
else {P2&=0x07;}
}
Dies tatsächlich behoben den Fehler, danke. Was ist der Grund für die P2 &=0x07; im else Teil? Das war eigentlich ein Tippfehler. P2 sollte auf 0x00 eingestellt sein. – Goblinette