www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Portmaskierung


Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups!
meinte natürlich 74HC138
sorry

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.