Portmaskierung

Gast #279944
Lesenswert?

Hallo Leute,

ich habe ein kleines programmiertechnisches Problem mit einem 8051er.
Ich programmiere in C mit Keil µVision.
Folgendes:
Ich steuere mit Port 3.5, 3.6, 3.7 einen 3-zu-8 Decoder (74HC139) an um
damit vier DuoLED zu schalten (Schaltplan bereits hier im Forum unter
Push-Pull LED). Ich verwende jedoch auch die beiden externen
Interrupteingänge welche an Port 3.3 und 3.4 liegen.
Mit einem kleinen Testprogramm ohne die Interrupts habe ich
herausgefunden, dass wenn ich den ganzen Port direkt beschreibe (zb.:
P3=0x40) die LED's einwandfrei anzeigen und umschalten. Benutze ich
jedoch eine bitweise Zuordnung (P3_7=0; P3_6=1; P3_5=0) sieht man an
den LED's jeweils ganz leicht die andere Farbe durchschimmern.
Maskiere ich nun den Port3 im eigentlichen Programm (P3 |= 0x40)
funktionieren jedoch die externen Interrupts nicht mehr. Auch der
Debugger motzt nun rum, wenn ich im Simulator die Port Pins der
Interrupteingänge toggle.
Was mache ich falsch? Oder gibt es gar keine andere Möglichkeit als die
bitweise Zuordnung?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren