1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
PORTB = $6000
PORTA = $6001
DDRB = $6002
DDRA = $6003
E = %10000000
RW = %01000000
RS = %00100000
.org #$f800
reset:
lda #%11111111 ; set output on all pins of PORTB
sta DDRB
lda #%11100000 ; set output on LCD control pins of PORTA
sta DDRA
lda #%00111000 ; set 8-bit, 2-line display, 5x8 font
sta PORTB
lda #$0 ; clear RS/RW/E
sta PORTA
lda #E ; clear RS/RW, set E, send instruction
sta PORTA
lda #$0 ; clear RS/RW/E
sta PORTA
lda #%00001110 ; display on, cursor on, no blink
sta PORTB
lda #$0 ; clear RS/RW/E
sta PORTA
lda #E ; clear RS/RW, set E, send instruction
sta PORTA
lda #$0 ; clear RS/RW/E
sta PORTA
lda #%00000001 ; clear display
sta PORTB
lda #$0 ; clear RS/RW/E
sta PORTA
lda #E ; clear RS/RW, set E, send instruction
sta PORTA
lda #$0 ; clear RS/RW/E
sta PORTA
lda #%00000010 ; return home
sta PORTB
lda #$0 ; clear RS/RW/E
sta PORTA
lda #E ; clear RS/RW, set E, send instruction
sta PORTA
lda #$0 ; clear RS/RW/E
sta PORTA
lda #%00000110 ; set entry mode: increment, no shift
sta PORTB
lda #$0 ; clear RS/RW/E
sta PORTA
lda #E ; clear RS/RW, set E, send instruction
sta PORTA
lda #$0 ; clear RS/RW/E
sta PORTA
lda #'6' ; data to send
sta PORTB
lda #RS ; clear RW, E, set RS for data
sta PORTA
lda #( E | RS ) ; clear RW, set E/RS, send data
sta PORTA
lda #RS ; clear RS, E, keep RS
sta PORTA
lda #'5' ; data to send
sta PORTB
lda #RS ; clear RW, E, set RS for data
sta PORTA
lda #( E | RS ) ; clear RW, set E/RS, send data
sta PORTA
lda #RS ; clear RS, E, keep RS
sta PORTA
lda #'0' ; data to send
sta PORTB
lda #RS ; clear RW, E, set RS for data
sta PORTA
lda #( E | RS ) ; clear RW, set E/RS, send data
sta PORTA
lda #RS ; clear RS, E, keep RS
sta PORTA
lda #'2' ; data to send
sta PORTB
lda #RS ; clear RW, E, set RS for data
sta PORTA
lda #( E | RS ) ; clear RW, set E/RS, send data
sta PORTA
lda #RS ; clear RS, E, keep RS
sta PORTA
end:
jmp end
.org #$fffc
.word reset
.word $0000
|