-
-
Erfahrener Benutzer
Fleißiges Mitglied
Wenn RB6 und RB7 verbunden sind, müsste dein Code eigentlich RA1 auf High setzen, weil RB7 dann auch 1 ist.
Wenn die beiden nicht verbunden sind, hängt RB7 in der Luft. Er ist dann mit nichts verbunden. Das sollte nicht vorkommen. Ergebnis ist undefiniert.
Bestenfalls sind die internen Pullup-Widerstände von Port B eingeschaltet, dann zieht der PIC den Eingang automatisch auf High, wenn er mit nichts verbunden ist. Was du in Port B reinschreibst (nämlich 00h) ist für PB7 völlig egal, weil das ein Eingang ist.
Normalerweise macht man daher die Logik genau umgekehrt (nennt sich active-low):
Der Port wird so eingestellt, dass die Pull-Ups aktiviert sind. Die Eingänge (und nur die) sind dann erstmal alle auf High. Der Ausgang (PB6) wird auf LOW gelegt. Wenn jetzt PB6 und PB7 verbunden werden, geht PB7 auch auf LOW. Das wird abgefragt.
(Achtung: Schalter prellen. D. h. der Wert wechselt innerhalb weniger Millisekunden häufiger zwischen geschlossen und offen. Man fragt daher meistens längere Zeit ab und nimmt den letzten stabilen Wert.)
Für dein Problem gibt es bestimmt viele Beispiele im Netz. Suche mal nach "microchip pic key matrix c" weil meistens mit dem Vorgehen eine Tastaturmatrix abgefragt wird.
Gruß
Phaidros
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen