📄 8bit.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\8BITLCD1\8BIT.asm
Object File: E:\MiCrOConTroller\Coba_M-IDE\8BITLCD1\8BIT.hex
List File: E:\MiCrOConTroller\Coba_M-IDE\8BITLCD1\8BIT.lst
Line I Addr Code Source
1: ;---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------
2: ;Author: Ashwin.V
3: ;Country:India
4: ;Code:LCD interface in 8bit mode
5: ;CPU:At89c51@11.0592Mhz
6: ;Tips:All you need to do is call the line where you want to display the message, mov the charecter t
o lcd_data and call datw.
7: ;If you want to display a string, move the address of the hardcodded string into dptr and call datw.
8: ;---------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------
9:
10:
11: B 00B0 RS EQU P3.0
12: B 00B1 EN EQU P3.1
13: N 30 lcd_data DATA 30h
14:
15:
16: N 0000 org 0000h
17:
18: 0000 02 01 19 ljmp lcd8_main
19:
20: N 0030 org 0030h
21:
22: ;___________________________________________________________________________
23: ;------------------------------delay subroutines----------------------------
24: ;___________________________________________________________________________
25:
26: ;------------------------------100us delay----------------------------------
27:
28: 0030 C0 00 delay_100us: push 00h
29: 0032 78 2E mov r0,#46
30: 0034 D9 FE delay_100us_loop: djnz r1,delay_100us_loop
31: 0036 D0 00 pop 00h
32: 0038 22 ret
33:
34: ;------------------------------16ms delay----------------------------------
35:
36: 0039 C0 00 delay_16ms: push 00h
37: 003B C0 01 push 01h
38: 003D 78 1E mov r0,#30
39: 003F 79 FF delay_16ms_loop1: mov r1,#255
40: 0041 D9 FE delay_16ms_loop2: djnz r1,delay_16ms_loop2
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
41: 0043 D8 FA djnz r0,delay_16ms_loop1
42: 0045 D0 01 pop 01h
43: 0047 D0 00 pop 00h
44: 0049 22 ret
45:
46: ;--------------------------half second delay-------------------------------
47:
48: 004A C0 00 delay_half_second: push 00h
49: 004C C0 01 push 01h
50: 004E C0 02 push 02h
51: 0050 7A 0A mov r2,#0ah
52: 0052 79 64 delay_half_second1: mov r1,#64h
53: 0054 78 FF delay_half_second2: mov r0,#0ffh
54: 0056 D8 FE back: djnz r0,back
55: 0058 D9 FA djnz r1, delay_half_second2
56: 005A DA F6 djnz r2,delay_half_second1
57: 005C D0 02 pop 02h
58: 005E D0 01 pop 01h
59: 0060 D0 00 pop 00h
60: 0062 22 ret
61:
62: ;_________________________________________________________________
63: ;----------------message definition and display-------------------
64: ;_________________________________________________________________
65:
66:
67: 0063 C0 E0 disp_message: push acc
68: 0065 C0 00 push 00h
69: 0067 78 11 mov r0,#17 ; maximum of 16charecters on lcd display
70:
71: 0069 74 00 disp_message_loop1: mov a,#00h ; reset accumulator
72: 006B 93 movc a,@a+dptr
73: 006C D8 05 djnz r0,disp_message_loop2
74:
75: 006E D0 00 pop 00h
76: 0070 D0 E0 pop acc
77: 0072 22 ret
78:
79: 0073 F5 30 disp_message_loop2: mov lcd_data,a
80: 0075 11 DB acall datw
81: 0077 11 30 acall delay_100us
82: 0079 A3 inc dptr
83: 007A 80 ED sjmp disp_message_loop1
84:
85: 007C 20 20 48 65 disp_ashwin:DB" Hello ashwin "
0080 6C 6C 6F 20
0084 61 73 68 77
0088 69 6E 20 20
86: 008C 54 65 73 74 disp_testing:DB"Testing 4bit LCD"
0090 69 6E 67 20
0094 34 62 69 74
0098 20 4C 43 44
87: 009C 49 6E 69 74 disp_initialising:DB"Initialising...."
00A0 69 61 6C 69
00A4 73 69 6E 67
00A8 2E 2E 2E 2E
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
88: 00AC 20 34 62 69 disp_ready:DB" 4bit LCD ready "
00B0 74 20 4C 43
00B4 44 20 72 65
00B8 61 64 79 20
89: 00BC 20 20 20 20 disp_clear:DB" "
00C0 20 20 20 20
00C4 20 20 20 20
00C8 20 20 20 20
90:
91: ;___________________________________________________________________________
92: ;--------------------command and data write subroutines---------------------
93: ;___________________________________________________________________________
94:
95:
96: 00CC C0 E0 cmdw: push acc
97:
98: 00CE E5 30 mov a,lcd_data
99: 00D0 F5 80 mov p0,a
100: 00D2 C2 B0 clr rs
101: 00D4 D2 B1 setb en
102: 00D6 C2 B1 clr en
103:
104: 00D8 D0 E0 pop acc
105: 00DA 22 ret
106:
107: 00DB C0 E0 datw: push acc
108:
109: 00DD E5 30 mov a,lcd_data
110: 00DF F5 80 mov p0,a
111: 00E1 D2 B0 setb rs
112: 00E3 D2 B1 setb en
113: 00E5 C2 B1 clr en
114:
115: 00E7 D0 E0 pop acc
116: 00E9 22 ret
117:
118: ;___________________________________________________________________________
119: ;--------------------------line select subroutines--------------------------
120: ;___________________________________________________________________________
121:
122:
123: 00EA 75 30 80 line1: mov lcd_data,#80h ;initial position of cursor
124: 00ED 11 CC acall cmdw
125: 00EF 11 30 acall delay_100us
126: 00F1 22 ret
127:
128: 00F2 75 30 C0 line2: mov lcd_data,#0c0h ;initial position of cursor
129: 00F5 11 CC acall cmdw
130: 00F7 11 30 acall delay_100us
131: 00F9 22 ret
132:
133:
134: ;___________________________________________________________________________
135: ;----------------------lcd initialisation subroutine------------------------
136: ;___________________________________________________________________________
137:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
Line I Addr Code Source
138:
139: 00FA 11 39 lcd8_initialise: acall delay_16ms ;wait more than 15ms after vdd reaches 4.5v
140:
141: 00FC 75 30 38 mov lcd_data,#38h ;2line 5x7 matrix
142: 00FF 11 CC acall cmdw
143: 0101 11 30 acall delay_100us
144:
145: 0103 75 30 0F mov lcd_data,#0fh ;display on, cursor on, cursor blinking
146: 0106 11 CC acall cmdw
147: 0108 11 30 acall delay_100us
148:
149: 010A 75 30 01 mov lcd_data,#01h ;clear screen
150: 010D 11 CC acall cmdw
151: 010F 11 30 acall delay_100us
152:
153: 0111 75 30 06 mov lcd_data,#06h ;cursor and display shifts(right/left)
154: 0114 11 CC acall cmdw
155: 0116 11 30 acall delay_100us
156:
157: 0118 22 ret
158:
159: ;___________________________________________________________________________
160: ;-------------------------------lcd main code-------------------------------
161: ;___________________________________________________________________________
162:
163:
164: 0119 75 80 00 lcd8_main: mov p0,#00h
165: 011C C2 B0 clr RS ;make out pins
166: 011E C2 B1 clr EN ;make out pins
167: 0120 75 A8 00 mov IE,#00h
168:
169: 0123 11 FA acall lcd8_initialise
170: ;---------------------------------------------------------------------------
171: 0125 11 EA acall line1
172: 0127 90 00 9C mov dptr,#disp_initialising
173: 012A 11 63 acall disp_message
174: 012C 11 4A acall delay_half_second
175: 012E 11 4A acall delay_half_second
176: 0130 11 4A acall delay_half_second
177: 0132 11 4A acall delay_half_second
178:
179: 0134 12 00 F2 lcall line2
180: 0137 90 00 AC mov dptr,#disp_ready
181: 013A 11 63 acall disp_message
182: 013C 11 4A acall delay_half_second
183: 013E 11 4A acall delay_half_second
184: 0140 11 4A acall delay_half_second
185: 0142 11 4A acall delay_half_second
186:
187: 0144 12 00 EA lcall line1
188: 0147 90 00 8C mov dptr,#disp_testing
189: 014A 11 63 acall disp_message
190: 014C 11 4A acall delay_half_second
191: 014E 11 4A acall delay_half_second
192:
193: 0150 11 F2 lcd8_loop: acall line2
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
Line I Addr Code Source
194:
195: 0152 90 00 BC mov dptr,#disp_clear
196: 0155 11 63 acall disp_message
197:
198: 0157 11 F2 acall line2
199: 0159 75 30 61 mov lcd_data,#'a'
200: 015C 11 DB acall datw
201: 015E 11 4A acall delay_half_second
202: 0160 75 30 62 mov lcd_data,#'b'
203: 0163 11 DB acall datw
204: 0165 11 4A acall delay_half_second
205: 0167 75 30 63 mov lcd_data,#'c'
206: 016A 12 00 DB lcall datw
207: 016D 11 4A acall delay_half_second
208: 016F 75 30 64 mov lcd_data,#'d'
209: 0172 12 00 DB lcall datw
210: 0175 11 4A acall delay_half_second
211:
212: 0177 11 F2 acall line2
213: 0179 90 00 7C mov dptr,#disp_ashwin
214: 017C 12 00 63 lcall disp_message
215: 017F 11 4A acall delay_half_second
216: 0181 11 4A acall delay_half_second
217:
218: 0183 80 CB sjmp lcd8_loop
219:
220:
221: end
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
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
BACK CODE 0056 54
CMDW CODE 00CC 96
CY BIT D7
DATW CODE 00DB 107
DELAY_100US CODE 0030 28
DELAY_100US_LOOP CODE 0034 30
DELAY_16MS CODE 0039 36
DELAY_16MS_LOOP1 CODE 003F 39
DELAY_16MS_LOOP2 CODE 0041 40
DELAY_HALF_SECOND CODE 004A 48
DELAY_HALF_SECOND1 CODE 0052 52
DELAY_HALF_SECOND2 CODE 0054 53
DISP_ASHWIN CODE 007C 85
DISP_CLEAR CODE 00BC 89
DISP_INITIALISING CODE 009C 87
DISP_MESSAGE CODE 0063 67
DISP_MESSAGE_LOOP1 CODE 0069 71
DISP_MESSAGE_LOOP2 CODE 0073 79
DISP_READY CODE 00AC 88
DISP_TESTING CODE 008C 86
DPH DATA 83
DPL DATA 82
EA BIT AF
EN NUMBER 00B1 12
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
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
LCD8_INITIALISE CODE 00FA 139
LCD8_LOOP CODE 0150 193
LCD8_MAIN CODE 0119 164
LCD_DATA DATA 30 13
LINE1 CODE 00EA 123
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 7
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
LINE2 CODE 00F2 128
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
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 00B0 11
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 + -