Portmaskierung

Gast #279944
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?
Gast #279946
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.