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?
Welchen Assembler-Code generiert der Compiler? Kannst du den Code (C und Assembler) mal posten? Probier mal, ob es besser ist, wenn du eine Char-Variable anlegst, den Port-Inhalt da reinkopierst, die Variable entsprechend modifizierst, und dann die Variable auf den Port schreibst... Ralf
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.