Guten Morgen,
Ich möchte mit einem PIC 16F872 und meinem 20x4 LCD eine Menuführung
aufbauen (Hoch,Runter,Links,Rechts und OK Taste).
Und zwar muss der µC bei der Menuführung ja wissen an welcher Stelle der
Cursor im LCD steht. Ich rufe dann mit dem folgenden Programm den Stand
des Cursors.
1 | mc_left: call delay ;kleine Zeitschleife
|
2 | call portb_in ;PortB auf Input, PullUP aus
|
3 | bsf portc,0 ;RS auf High legen
|
4 | bsf portc,1 ;RW auf High legen
|
5 | call Pulse_E ;E-Leitung vom LCD auf 1 -> 0
|
6 | movfw portb ;Portb nach Reg. Cursor
|
7 | movwf cursor ;sichern
|
8 | bcf portc,0 ;RS auf Low legen
|
9 | bcf portc,1 ;RW auf Low legen
|
10 | decf cursor,1 ;Cursor Wert minus 1
|
11 | movfw cursor ;Cursor Wert ins Work
|
12 | bcf portc,0 ;RS & RW auf LOW
|
13 | bcf portc,1 ;
|
14 | movwf portb ;Work zu PortB
|
15 | call Pulse_E ;E-Leitung vom LCD auf 1 -> 0
|
16 | return
|
mit diesem Programmabschnitt sollte es Das LCD so ansprechen das es dem
PIC
die Cursor Stellung senden und der PIC speichert diese im Cursor
Register.
und dann soll vom Cursor Register eins abgezogen werden und dann der
veränderte Wert soll wieder zum LCD geschickt werden so das sich halt
die Cursor Stellung am LCD um eins nach Links verändert.
aber es funktioniert nicht der PIC bekommt glaube ich die Daten nicht
vom LCD. bzw irgentwas läuft da schief.
Gibt es einen einfacheren Weg oder ist es so schon in Ordnung und der
Fehler liegt im Detail.
Vieleicht kann mir ja Jemand helfen. vieleicht hat ja einer auch einen
Programm schnippsel aus seinem Programm mit einer Abfrage von einem LCD
Schönen Tag
Sebastian