📄 lcd4bit3.lst
字号:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File: E:\MiCrOConTroller\Coba_M-IDE\LCD4BIT3\LCD4BIT3.asm
Object File: E:\MiCrOConTroller\Coba_M-IDE\LCD4BIT3\LCD4BIT3.hex
List File: E:\MiCrOConTroller\Coba_M-IDE\LCD4BIT3\LCD4BIT3.lst
Line I Addr Code Source
1:
2: ;-----------------------LCD 4-bit--------------------------
3: ;LCD Connections to microcontroller
4: B 0084 E EQU P0.4 ; PIN 6 enable
5: B 0085 RS EQU P0.5 ; /register select
6:
7: D 0080 DATANE EQU P0 ; data lines P0-P3
8: ;----------------------------------------------------------
9: N 0000 ORG 0000H
10: 0000 02 00 FF JMP on_reset
11: ;----------------------------------------------------------
12: N 00FF ORG 00FFH
13: 00FF on_reset:
14: 00FF 90 01 E7 MOV DPTR,#init_data
15: 0102 31 48 ACALL disp_init
16:
17: 0104 90 01 C7 MOV DPTR,#message1
18: 0107 31 39 ACALL disp_string
19:
20: 0109 31 95 ACALL disp_line2
21:
22: 010B 90 01 D7 MOV DPTR,#message2
23: 010E 31 39 ACALL disp_string
24:
25: 0110 ENDLESS:
26: 0110 80 FE JMP ENDLESS
27: ;----------------------------------------------------------
28: ; display char in A
29: ; used reg R2
30: 0112 disp_char:
31: 0112 D2 85 SETB RS ; desable register select
32:
33: 0114 FA MOV R2,A
34: 0115 54 F0 ANL A,#0F0H ; send high nybble first
35: 0117 03 RR A
36: 0118 03 RR A
37: 0119 03 RR A
38: 011A 03 RR A
39: 011B 53 80 F0 ANL DATANE,#0F0H
40: 011E 42 80 ORL DATANE,A
41:
42: 0120 D2 84 SETB E ; give E pulse
43: 0122 31 B4 ACALL delay_data
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0124 C2 84 CLR E
45: 0126 31 B4 ACALL delay_data
46:
47: 0128 EA MOV A,R2
48: 0129 54 0F ANL A,#0FH ; send lower nybble
49: 012B 53 80 F0 ANL DATANE,#0F0H
50: 012E 42 80 ORL DATANE,A
51:
52: 0130 D2 84 SETB E ; give E pulse
53: 0132 31 B4 ACALL delay_data
54: 0134 C2 84 CLR E
55: 0136 31 B4 ACALL delay_data
56:
57:
58: 0138 22 RET
59: ;----------------------------------------------------------
60: ; used registers A,R1,R7
61: 0139 disp_string:
62: 0139 74 00 MOV A,#00H
63: 013B 79 00 MOV R1,#00h
64: 013D next_char:
65: 013D 09 INC R1
66: 013E 93 MOVC A,@A+DPTR
67: 013F F5 80 MOV DATANE,A
68: 0141 31 12 ACALL disp_char
69: 0143 E8 MOV A,R0
70: 0144 B9 0F F6 CJNE R1,#0Fh,next_char
71: 0147 22 RET
72: ;----------------------------------------------------------
73: ; used registers A,R1,R7,R2
74: 0148 disp_init:
75: 0148 C2 85 CLR RS ; enable /register select
76: 014A 74 00 MOV A,#00H
77: 014C 79 00 MOV R1,#00h
78: 014E next_chari:
79: 014E 09 INC R1
80: 014F 93 MOVC A,@A+DPTR
81: 0150 FA MOV R2,A ; take backup
82:
83: 0151 54 F0 ANL A,#0F0H ; send high nybble first
84: 0153 03 RR A
85: 0154 03 RR A
86: 0155 03 RR A
87: 0156 03 RR A
88: 0157 53 80 F0 ANL DATANE,#0F0H
89: 015A 42 80 ORL DATANE,A
90:
91: 015C D2 84 SETB E ; give E pulse
92: 015E 31 BB ACALL delay_init
93: 0160 C2 84 CLR E
94: 0162 31 BB ACALL delay_init
95:
96: 0164 EA MOV A,R2
97: 0165 54 0F ANL A,#0FH ; send lower nybble
98: 0167 53 80 F0 ANL DATANE,#0F0H
99: 016A 42 80 ORL DATANE,A
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
100:
101: 016C D2 84 SETB E ; give E pulse
102: 016E 31 BB ACALL delay_init
103: 0170 C2 84 CLR E
104: 0172 31 BB ACALL delay_init
105:
106: 0174 E8 MOV A,R0
107: 0175 B9 02 D6 CJNE R1,#02h,next_chari
108:
109:
110: 0178 22 RET
111: ;----------------------------------------------------------
112: 0179 disp_line1:
113: 0179 C2 85 CLR RS ; register select
114: 017B 53 80 F0 ANL DATANE,#0F0H
115: 017E 43 80 08 ORL DATANE,#08H ; first line address
116: 0181 D2 84 SETB E ; give E pulse
117: 0183 31 BB ACALL delay_init
118: 0185 C2 84 CLR E
119: 0187 31 BB ACALL delay_init
120:
121: 0189 53 80 F0 ANL DATANE,#0F0H ; second nybble
122: 018C D2 84 SETB E ; give E pulse
123: 018E 31 BB ACALL delay_init
124: 0190 C2 84 CLR E
125: 0192 31 BB ACALL delay_init
126:
127: 0194 22 RET
128: ;----------------------------------------------------------
129: 0195 disp_line2:
130: 0195 C2 85 CLR RS ; register select
131: 0197 53 80 F0 ANL DATANE,#0F0H ; next line address
132: 019A 43 80 0A ORL DATANE,#0AH
133: 019D D2 84 SETB E ; give E pulse
134: 019F 31 BB ACALL delay_init
135: 01A1 C2 84 CLR E
136: 01A3 31 BB ACALL delay_init
137:
138: 01A5 53 80 F0 ANL DATANE,#0F0H ; next line address
139: 01A8 43 80 08 ORL DATANE,#08H
140: 01AB D2 84 SETB E ; give E pulse
141: 01AD 31 BB ACALL delay_init
142: 01AF C2 84 CLR E
143: 01B1 31 BB ACALL delay_init
144:
145: 01B3 22 RET
146: ;----------------------------------------------------------
147: ;2 msec delay
148: 01B4 delay_data:
149: 01B4 7F FF MOV R7,#0FFH
150: 01B6 00 del: NOP
151: 01B7 00 NOP
152: 01B8 DF FC DJNZ R7, del
153: 01BA 22 RET
154: ;----------------------------------------------------------
155: ;20 msec delay
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 01BB delay_init:
157: 01BB 7F FF MOV R7,#0FFH
158: 01BD 00 del1: NOP
159: 01BE 00 NOP
160: 01BF 00 NOP
161: 01C0 00 NOP
162: 01C1 00 NOP
163: 01C2 00 NOP
164: 01C3 00 NOP
165: 01C4 DF F7 DJNZ R7, del1
166:
167: 01C6 22 RET
168: ;----------------------------------------------------------
169: 01C7 message1:
170: 01C7 54 65 73 74 DB "Testing 123.... "
01CB 69 6E 67 20
01CF 31 32 33 2E
01D3 2E 2E 2E 20
171: 01D7 message2:
172: 01D7 49 74 27 73 DB "It's working "
01DB 20 77 6F 72
01DF 6B 69 6E 67
01E3 20 20 20 20
173: 01E7 init_data:
174: 01E7 0F DB 0FH ; Display On, Cursor On,Cursor Blink On(1)/Off(0)
175: 01E8 01 DB 01H ; Clear Display
176: 01E9 38 DB 38H ; Set Interface Length
177: END
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
??ASEM_51 NUMBER 8051
??VERSION NUMBER 0130
AC BIT D6
ACC DATA E0
B DATA F0
CY BIT D7
DATANE NUMBER 0080 7
DEL CODE 01B6 150
DEL1 CODE 01BD 158
DELAY_DATA CODE 01B4 148
DELAY_INIT CODE 01BB 156
DISP_CHAR CODE 0112 30
DISP_INIT CODE 0148 74
DISP_LINE1 CODE 0179 112
DISP_LINE2 CODE 0195 129
DISP_STRING CODE 0139 61
DPH DATA 83
DPL DATA 82
E NUMBER 0084 4
EA BIT AF
ENDLESS CODE 0110 25
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INIT_DATA CODE 01E7 173
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
MESSAGE1 CODE 01C7 169
MESSAGE2 CODE 01D7 171
NEXT_CHAR CODE 013D 64
NEXT_CHARI CODE 014E 78
ON_RESET CODE 00FF 13
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS NUMBER 0085 5
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -