Forum: Mikrocontroller und Digitale Elektronik LCD / KS0070B Problem


von Der D. (derdaniel)


Lesenswert?

Servus,

ich würde gerne das Reichelt Display LCD 162C LED (laut Datenblatt ist 
der Controller ein KS0070B) an einem ATMEAG48 mit folgendem Quelltext 
zum laufen bekommen.
1
.include "m48def.inc"
2
 
3
.equ XTAL  = 8000000
4
5
;   Belegung PORTD
6
;   V R R E D D D D
7
;   e S W   7 6 5 4
8
;
9
;PD 7 6 5 4 3 2 1 0
10
11
ldi r16, LOW(RAMEND)
12
out SPL, r16
13
ldi r16, HIGH(RAMEND)
14
out SPH, r16
15
16
LDI r16, 0xFF
17
OUT DDRD, r16  ;PORTD ausgang
18
19
LDI r16, 10   ;50ms warten
20
  poweron:                      
21
    RCALL waitms5
22
    DEC r16
23
    BRNE poweron
24
25
26
LDI r16, 0b00000010  ;4bit Modus
27
OUT PORTD, r16
28
RCALL tgen
29
RCALL waitus50
30
31
32
LDI r16, 0b00000010  ;4bit Modus + 2-lines + 5x7 dots
33
OUT PORTD, r16
34
RCALL tgen
35
LDI r16, 0b00001000
36
OUT PORTD, r16
37
RCALL tgen
38
RCALL waitus50
39
40
41
LDI r16, 0b00000000  ;display on + cursor on + blink on
42
OUT PORTD, r16
43
RCALL tgen
44
LDI r16, 0b00001111
45
OUT PORTD, r16
46
RCALL tgen
47
RCALL waitus50
48
49
50
LDI r16, 0b00000000  ;clear dosplay
51
OUT PORTD, r16
52
RCALL tgen
53
LDI r16, 0b00000001
54
OUT PORTD, r16
55
RCALL tgen
56
RCALL waitms5
57
58
59
LDI r16, 0b00000000  ;entry mode increment + entire shift off
60
OUT PORTD, r16
61
RCALL tgen
62
LDI r16, 0b00000110
63
OUT PORTD, r16
64
RCALL tgen
65
RCALL waitms5
66
67
68
69
loop: rjmp loop
70
71
72
73
waitus50:
74
    LDI  r16, ( XTAL * 50 / 3 ) / 1000000
75
  WGLP3:
76
    DEC  r16
77
    BRNE WGLP3
78
    RET
79
80
81
waitms5:
82
    LDI r16, (XTAL * 5 / 607) / 1000
83
  WGLOOP0:
84
    LDI  r17, $C9
85
  WGLOOP1:
86
    DEC  r17
87
    BRNE WGLOOP1
88
    DEC r16
89
    BRNE WGLOOP0
90
    RET
91
92
93
tgen:
94
    SBI PORTD, 4
95
    NOP
96
    NOP
97
    NOP
98
    NOP
99
    CBI PORTD, 4
100
    RET

Das einzige was das Display jedoch macht, ist mir in der ersten Zeile 
schwarze Kästchen anzeigen, mehr nicht.
Der Anschluss des Display ist wie im Quelltext unter Belegung PORTD.

Was ist im Quelltext falsch bzw. warum geht das Display nicht?

von Sascha W. (sascha_w)


Lesenswert?

Hallo,

deine PWR-ON-Pause funktioniert schon mal nicht, da du r16 doppelt 
verwendest!
Nach dem RET aus waitms5 ist r16=0, in der Hauptschleife wird r16=255 
und damit hast du eine Endlosschleife.

Sascha

von Der D. (derdaniel)


Lesenswert?

Ach mist, den fehler hatte ich schonma irgendwo bemerkt und beseitigt.
Und 10 minuten später mach ich den gleichen scheiß wieder...
Füs irgend etwas gibts den Stack halt doch...

Danke, ist gelöst!

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.