Hallo Forum,
nachdem mein LCD Display (EA DOGS 102-64)jetzt mit mir "redet" hab ich
auch gleich ein neues Problem mit der Routine die mir den Inhalt der
Anzeige löscht:
Die Anzeige wird zwar vollständig gelöscht, aber am Ende der Routine
wird nicht zurück in den normalen Ablauf gesprungen, sondern die Anzeige
aus und wieder eingeschaltet und die Routine läuft erneut ab....und ich
kann nicht erkennen wieso.
1 | Loesche_Anzeige:
|
2 |
|
3 | ;Register benennen
|
4 | .def Zeile = r21
|
5 | .def Spalte_LSB = r19
|
6 | .def Spalte_MSB = r22
|
7 | .def Display_Daten = r18
|
8 |
|
9 | ;Startwerte setzen
|
10 | ldi temp,0b10110000 ;Startwert für Zeile
|
11 | mov Zeile,temp ;ins Register Zeile
|
12 |
|
13 | ldi temp,0b00000000 ;Startwert für Spalte_LSB
|
14 | mov Spalte_LSB,temp ;ins Register Spalte_LSB
|
15 |
|
16 | ldi temp,0b00010000 ;Startwert für Spalte_MSB
|
17 | mov Spalte_MSB,temp ;ins Register für Spalte MSB
|
18 |
|
19 | ldi Display_Daten, 0b00000000 ;Wert für Bildschirm ohne Inhalt
|
20 |
|
21 |
|
22 | Ausfuehrung:
|
23 | mov SPI_Code,Spalte_LSB
|
24 | rcall SPI_sende_Kommando
|
25 |
|
26 | mov SPI_Code,Spalte_MSB
|
27 | rcall SPI_sende_Kommando
|
28 |
|
29 | mov SPI_Code, Zeile
|
30 | rcall SPI_sende_Kommando
|
31 |
|
32 | mov SPI_Code,Display_Daten
|
33 | rcall SPI_sende_Daten
|
34 |
|
35 | inc Spalte_LSB
|
36 | cpi Spalte_LSB,0b00010000
|
37 | breq inc_Spalte_MSB
|
38 | rcall Ausfuehrung
|
39 |
|
40 | inc_Spalte_MSB:
|
41 | ldi Spalte_LSB,0b00000000
|
42 | inc Spalte_MSB
|
43 | cpi Spalte_MSB,0b00011000
|
44 | breq neue_Zeile
|
45 | rcall Ausfuehrung
|
46 |
|
47 | neue_Zeile:
|
48 | ldi Spalte_LSB,0b00000000
|
49 | ldi Spalte_MSB,0b00010000
|
50 | inc Zeile
|
51 | cpi Zeile,0b10111000
|
52 | breq Ende_Ausfuehrung
|
53 | rcall Ausfuehrung
|
54 |
|
55 | Ende_Ausfuehrung:
|
56 | ret
|
57 | ;rcall Testtext
|
58 | ;rcall Schleife
|
hier die Lösch-Routine, gesamten file im Anhang
Gruß Bernd