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?
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
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!