-
Notifications
You must be signed in to change notification settings - Fork 0
/
LCD.asm
132 lines (125 loc) · 1.29 KB
/
LCD.asm
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
JMP START
.ORG 0050H
START: CALL LCD_INIT
MVI A,30H
CALL LCD_SEND
MVI A,39H
CALL LCD_SEND
CALL DELAY_1
CALL LCD_NEWL
MVI A,41H
CALL LCD_SEND
CALL DELAY_1
CALL DELAY_1
CALL LCD_CLEAR
HLT
LCD_CLEAR: PUSH PSW
MVI A,04H
OUT 01H
MVI A,00H
OUT 01H
CALL DELAY
MVI A,14H
OUT 01H
MVI A,10H
OUT 01H
CALL DELAY
POP PSW
RET
LCD_NEWL: PUSH PSW
MVI A,0C4H
OUT 01H
MVI A,0C0H
OUT 01H
CALL DELAY
MVI A,04H
OUT 01H
MVI A,00H
OUT 01H
CALL DELAY
POP PSW
RET
DELAY_1: PUSH B
PUSH D
MVI B,2EH
Loop1: MVI C,6AH
Loop2: MVI D,1CH
Loop3: DCR D
JNZ Loop3
DCR C
JNZ Loop2
DCR B
JNZ Loop1
POP D
POP B
RET
DELAY: PUSH PSW
MVI A,0FH
LOOP: DCR A
JNZ LOOP
POP PSW
RET
LCD_INIT: PUSH PSW
MVI A,024H
OUT 01H
MVI A,20H
OUT 01H
CALL DELAY
MVI A,24H
OUT 01H
MVI A,20H
OUT 01H
CALL DELAY
MVI A,84H
OUT 01H
MVI A,80H
OUT 01H
CALL DELAY
MVI A,04H
OUT 01H
MVI A,00H
OUT 01H
CALL DELAY
MVI A,0E4H
OUT 01H
MVI A,0E0H
OUT 01H
CALL DELAY
MVI A,04H
OUT 01H
MVI A,00H
OUT 01H
CALL DELAY
MVI A,64H
OUT 01H
MVI A,60H
OUT 01H
POP PSW
RET
LCD_SEND: PUSH PSW
PUSH B
PUSH D
MOV B,A
ANI 0F0H
MVI D,0CH
ORA D
OUT 01H
CALL DELAY
ANI 0F8H
OUT 01H
MOV A,B
RLC
RLC
RLC
RLC
ANI 0F0H
MVI D,0CH
ORA D
OUT 01H
CALL DELAY
ANI 0F8H
OUT 01H
POP D
POP B
POP PSW
RET