Autor Thema: Einlesen eines BCD Schalters über den PORT A in eine Speicherstelle.  (Gelesen 2738 mal)

Offline Otto

  • Newbie
  • *
  • Beiträge: 30
    • Profil anzeigen
Einlesen eines BCD Schalters über den PORT A in eine Speicherstelle.
« am: Oktober 18, 2013, 18:58:16 Nachmittag »
Ansich einfach, nur habe ich das Problem, dass es anscheinend nicht möglich ist die 4 Ports (von 5) auf einmal einzulesen ohne den 5. Port an dem ja was anderes ist, mit einzulesen.

Es handelt sich um den PIC 16F628

Der hat 5 A Ports, an 4 davon habe ich einen BCD Schalter, dessen Wert soll in eine Speicherstelle eingelesen werden. Aber nicht der 5. APort. Wie vorgehen?
Ich bin nur zu dieser unschönen Lösung gekommen:

Einlesen des gesamten Ports, addiere 01111 und lösche damit das 5.Bit.
Korrekt oder gibt es da was einfacheres?
Danke
Otto

Offline deKatz

  • Jr. Member
  • **
  • Beiträge: 56
    • Profil anzeigen
Re: Einlesen eines BCD Schalters über den PORT A in eine Speicherstelle.
« Antwort #1 am: Oktober 18, 2013, 19:33:22 Nachmittag »
Also mit Addieren wird das nichts. Wenn du 10011 einliest und 01111 addierst ergibt das 100010 - also falsch.
Aber mit einer UND-Verknüpfung geht es: 10011 & 01111 ergibt 00011 !

Offline cockpit123

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
Re: Einlesen eines BCD Schalters über den PORT A in eine Speicherstelle.
« Antwort #2 am: Oktober 19, 2013, 23:37:55 Nachmittag »
Hallo,

die Verknüpfung mit UND ist Gut, allerdings wird auch hier das 5 Bit gelöscht.
Ich würde im W-Register die 4 höherwertigen Bits löschen, hier ist eine UND-Verknüpfung mit 0000 1111 eine Möglichkeit.
Im Speicher die 4 niederwertigen, also mit 1111 0000 UND-Verknüpfen.
Und nun W und Speicher ODER-Verknüpfen.

Gruß

Offline Otto

  • Newbie
  • *
  • Beiträge: 30
    • Profil anzeigen
Re: Einlesen eines BCD Schalters über den PORT A in eine Speicherstelle.
« Antwort #3 am: Oktober 20, 2013, 19:01:00 Nachmittag »
Korrekt!
Ich habe mich falsch ausgedrückt, ich wollte ja sagen -verunden- also mit andlw 0000 1111
somit würde die Sache -maskiert-.
Verunden mit 1 lässt das Bit inverändert, mit 0 ergibt 0.

Also ist nach eurer Mienung die Sache so machbar. Danke für die Antworten!

 


* Recent Topics