Ich wollte vor der LCD-Init das PortB als LCD-Port besonders definiert
gestalten und habe, wie unten zu sehen, PortB auf 0 setzen wollen.
Komischerweise funktioniert dann die nachfolgende, vorsorgende Init, die
der Standardini entspricht, auf 8 bit , 1 Zeile nicht, mit FF aber wohl.
Ich komme nicht drauf. WIe initialisiert sich eigentlich PortB vom
t2313?
Habe dazu nichts gefunden.
1
;Init the LCD an PortB entsprechend TC1602A_Manual.pdf
2
;die Registernamen sind noch Reste vom abschreiben,
3
lcd_init:
4
ldi R16, $FF ;PortB alle auf Output Seite50
5
out DDRB, R16
6
;clr R16 ;mit 0 gehts nicht wieso??
7
out PortB, R16 ;definierter Status fürs Display
8
9
ldi R18,100 ;n x 2ms delay
10
powerupwait: rcall delay2ms
11
dec R18
12
brne powerupwait
13
ldi R16,0b00000011 ;8bit mode,
14
out LCD_PORTB, R16 ;
15
rcall lcd_enable ;1,
16
rcall delay2ms
17
rcall delay2ms
18
rcall lcd_enable ;2
19
rcall delay2ms
20
rcall lcd_enable ;and no. 3
21
rcall delay2ms ;Display ist jetzt eindeutig im 8bit mode
22
23
;LCD: function set
24
ldi R16,0b00000010;4bit-Mode, noch im 8 bit mode gesendet
25
out LCD_PORTB, R16
26
rcall lcd_enable
27
rcall delay2ms ;Display ist jetzt im 4bit mode
28
29
; ab nun kann das Byte jeden Wert haben, da es in 2 nibbles aufgeteilt
30
; wird, die, via PB[3:0] kommend, an das Display DB[7:4] gelangen.
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.