Forum: Mikrocontroller und Digitale Elektronik 4x4 Matrixtastatur Problem


von Harald (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
ich habe im Anhang ein Programm geschrieben um eine Tastatur abzufragen.
Ist nur ein Bruchteil des Programms. Das Problem ist, das es immer zu 
einer falschen Tastenausgabe kommt. Kann mir auch denken woran das 
liegt. Da RA0 und RA1 zu schnell gesetzt und nicht gesetzt werden. Hoffe 
ihr habt eine Lösung. Pull-Up Widerstände sind drin. Auch die Anzeige am 
LCD Display funktioniert. Eben nur die Abfrage geht so nicht.
Das Programm ist in Assembler geschrieben und läuft auf einem 
PIC18F2550.


Danke schon einmal für eure Hilfe!



Harald

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Da RA0 und RA1 zu schnell gesetzt und nicht gesetzt werden.
Setze den Port A nicht direkt vor der nächsten Abfrage von Port C, 
sondern nach der letzten (quasi um einen Abfragezyklus 
vorauseilend)...

von Harald (Gast)


Lesenswert?

Hallo, danke für deine schnelle Antwort. Wenn ich ehrlich bin kann ich 
dir momentan nicht so folgen :) Meinst du BCF bzw. BSF im jeweiligen 
Unterprogramm oder zu Beginn? Denn zu Beginn rufe ich ja das UP mit dem 
CALL-Befehl und kehre ja mit RETURN an die Stelle unter dem CALL-Befehl 
zurück.


Harald

von Harald (Gast)


Lesenswert?

Hat vll. noch jemand eine Idee? Hoffe man kann zusammen eine Lösung 
erarbeiten.



Harald

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wenn ich ehrlich bin kann ich dir momentan nicht so folgen :)
Gegenfrage:
>> Da RA0 und RA1 zu schnell gesetzt und nicht gesetzt werden.
Was meinst du damit?

Zeig mal einen Schaltplan von deiner Matrix mit den beteiligten 
Bauteilen (gib den Bauteilen bitte Namen, damit man nicht vom "Taster 
rechts oben" reden muss)...

von Harald (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang das Datenblatt!

RA0 = Pin1 der Matrixtastatur
RA1 = Pin2 der Matrixtastatur
RA2 = Pin3 der Matrixtastatur
RA3 = Pin4 der Matrixtastatur


RC0 = Pin5 der Matrixtastatur
RC1 = Pin6 der Matrixtastatur
RC4 = Pin7 der Matrixtastatur
RC5 = Pin8 der Matrixtastatur


Nun gebe ich nacheinander, erst auf Pin1 +5V dann auf Pin2 +5V usw. und 
frage jeweils die Eingänge RC0, RC1, RC4, RC5 ab.

RA0 bis RA3 sind Ausgänge

RC0, RC1, RC4, RC5 sind Eingänge




Danke für deine Bemühungen

Harald

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Ist das der ganze Schaltplan?
>>>> Pull-Up Widerstände sind drin.
Und wo sind diese Pullup-Widerstände?

> Nun gebe ich nacheinander, erst auf Pin1 +5V dann auf Pin2 +5V usw. und
> frage jeweils die Eingänge RC0, RC1, RC4, RC5 ab.
Pullup-Widerstände gehen üblicherweise an +5V. Was meinst du, wie soll 
der uC die 5V vom Pin von den 5V vom Pullup unterscheiden?

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
Noch kein Account? Hier anmelden.