📄 ll.lst
字号:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 1
MCS-51 Family Cross Assembler A S E M - 5 1 V 1.2
=====================================================
Source File: LL.ASM
Object File: LL.HEX
List File: LL.LST
Line I Addr Code Source
1:
2:
3: ;==================================================================
4: ;单片机内存分配申明!
5: N 0078 ADC0 EQU 078H
6:
7: N 0021 DIVDLL EQU 21H ;定义被除数
8: N 0022 DIVDLH EQU 22H
9: N 0023 DIVDHL EQU 23H
10: N 0024 DIVDHH EQU 24H
11: N 0025 DIVL EQU 25H ;定义除数
12: N 0026 DIVH EQU 26H
13: N 0027 TEMPL EQU 27H ;定义余数单元
14: N 0028 TEMPH EQU 28H
15: N 0029 AD EQU 29H ;16进制数暂存单元
16: N 002A KEY EQU 2AH
17:
18:
19: ;=================================================================
20: ;液晶显示器寄存器地址分配
21: ;-----------------------------------------------------------------
22: N 0080 LCD_CMD_WR EQU 80H ;8000H ;液晶显示器命令寄存器地址
23: N 0081 LCD_DATA_WR EQU 81H ;8001H ;液晶显示器显存数据寄存器地址
24: N 0082 LCD_BUSY_RD EQU 82H ;8002H ;液晶显示器忙状态寄存器地址
25: N 0083 LCD_DATA_RD EQU 83H ;8003H ;读液晶显示器内部数据地址
26:
27: ;=================================================================
28: ;液晶显示器命令
29: ;-----------------------------------------------------------------
30: N 0001 LCD_CLS EQU 1 ;清屏命令
31: N 0002 LCD_HOME EQU 2 ;光标返回行首命令
32: N 0004 LCD_SETMODE EQU 4 ;设置光标移动方向为右移,不移动
33: N 0008 LCD_SETVISIBLE EQU 8 ;关闭显示
34: N 0010 LCD_SHIFT EQU 16 ;清除光标和整个显示,光标左移
35: N 0020 LCD_SETFUNCTION EQU 32 ;设置显示方式为8bit接口、1行、5*7点阵字体
36: N 0040 LCD_SETCGADDR EQU 64 ;设置字符发生器地址
37: N 0080 LCD_SETDDADDR EQU 128 ;设置显存地址
38:
39:
40:
41:
42: ;=============== 主程序开始 =============================================
43:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: N 0000 ORG 0000H
45: 0000 02 00 30 LJMP START
46: N 0030 ORG 30H
47:
48:
49: 0030 START:
50: 0030 12 01 4D LCALL INIT ;初始化液晶显示器
51: 0033 12 01 42 LCALL AD_start ;启动AD,温度在 29H 中。
52: 0036 75 2A 1D MOV KEY, #29
53: 0039 12 00 D0 LCALL ALL_display
54:
55:
56: 003C MAIN:
57: 003C 12 00 6A LCALL JIANPAN
58:
59:
60: 003F 12 01 42 BIJIAO: LCALL AD_start
61:
62: 0042 12 00 9A LCALL AD_display
63:
64: 0045 E5 2A MOV A,KEY
65: 0047 C3 CLR C
66: 0048 94 05 SUBB A,#5
67: 004A F5 F0 MOV B,A
68:
69: 004C E5 29 MOV A, AD
70:
71:
72: 004E C3 CLR C
73: 004F 95 F0 SUBB A, B
74: 0051 70 05 JNZ NEQ ; CJNE A,#00H,NEQ
75: 0053 D2 B0 SETB P3.0
76: 0055 02 00 3C LJMP MAIN ;相等返回.
77:
78: 0058 40 08 NEQ: JC OW
79:
80: 005A D2 B0 SETB P3.0 ;停止工作
81: 005C 12 01 7F LCALL D1MS
82:
83:
84: ;LCALL AD_display
85:
86: 005F 02 00 3C LJMP MAIN
87:
88: 0062 OW:
89: 0062 C2 B0 CLR P3.0
90:
91: 0064 12 01 7F LCALL D1MS
92:
93: ; LCALL AD_display
94:
95:
96: ; JMP BIJIAO
97:
98:
99: 0067 02 00 3C LJMP MAIN
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
100:
101:
102: ;=============== 主程序结束 ============================================
103:
104: ;===================================================================
105: 006A 74 FF JIANPAN: MOV A,#0FFH
106: 006C F5 90 MOV P1,A
107: 006E E5 90 MOV A,P1
108:
109: 0070 30 E0 07 JNB ACC.0,G0
110:
111: 0073 30 E1 07 JNB ACC.1,G1
112:
113: 0076 30 E2 07 JNB ACC.2,G2
114:
115:
116:
117: 0079 22 RET
118:
119: 007A G0: ;LJMP D1MS
120: 007A 02 00 83 LJMP PROG0
121:
122: 007D G1: ; LJMP D1MS
123: 007D 02 00 8B LJMP PROG1
124:
125: 0080 G2: ; LJMP D1MS
126: 0080 02 00 92 LJMP PROG2
127:
128: 0083 75 2A 32 PROG0: MOV KEY,#50
129:
130: 0086 12 00 D0 LCALL ALL_display
131:
132:
133: 0089 80 DF JMP JIANPAN
134:
135: 008B PROG1:
136: 008B 05 2A INC KEY
137: 008D 12 00 D0 LCALL ALL_display
138:
139:
140: 0090 80 D8 JMP JIANPAN
141:
142: 0092 PROG2:
143: 0092 15 2A DEC KEY
144: 0094 12 00 D0 LCALL ALL_display
145:
146:
147: 0097 80 D1 JMP JIANPAN
148: 0099 22 RET
149: ;=========================================================
150: ;====================================================
151: 009A 74 02 AD_display: MOV A,#2 ;显存地址指针清零,光标回到行首
152: 009C 12 01 6D LCALL WRCMD
153:
154: 009F E5 29 MOV A,AD
155: 00A1 12 02 03 LCALL BTOD
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
Line I Addr Code Source
156:
157:
158:
159:
160: 00A4 74 54 MOV A, #'T'
161: 00A6 12 01 73 LCALL WRDATA ;显示字母“T”
162:
163:
164:
165: 00A9 74 3D MOV A, #'='
166: 00AB 12 01 73 LCALL WRDATA ;显示字母“=”
167:
168:
169:
170: 00AE EB MOV A,R3
171: 00AF 44 30 ORL A,#30H ; 百位
172: 00B1 12 01 73 LCALL WRDATA
173:
174:
175:
176: 00B4 EC MOV A,R4
177: 00B5 44 30 ORL A,#30H ;十位
178: 00B7 12 01 73 LCALL WRDATA
179:
180: 00BA ED MOV A,R5 ;个位
181: 00BB 44 30 ORL A,#30H
182: 00BD 12 01 73 LCALL WRDATA
183:
184: 00C0 74 DF MOV A,#0DFH ;显示“°”
185: 00C2 12 01 73 LCALL WRDATA
186: 00C5 74 43 MOV A,#'C' ;显示“C”
187: 00C7 12 01 73 LCALL WRDATA
188:
189: ;MOV A,#20H ;显示空格
190: ;LCALL WRDATA
191: 00CA 74 02 MOV A,#2 ;显存地址指针清零,光标回到行首
192: 00CC 12 01 6D LCALL WRCMD
193:
194: 00CF 22 RET
195: ;=========================================================================
196: ;--------------------------------------------------------------------------
197: ;以下程序完成将测量的温度值在液晶显示器上显示出来的任务
198: ;---------------------------------------------------------------------------
199:
200: 00D0 E5 29 ALL_display: MOV A,AD
201: 00D2 12 02 03 LCALL BTOD
202:
203:
204:
205:
206: 00D5 74 54 MOV A, #'T'
207: 00D7 12 01 73 LCALL WRDATA ;显示字母“T”
208:
209:
210:
211: 00DA 74 3D MOV A, #'='
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
Line I Addr Code Source
212: 00DC 12 01 73 LCALL WRDATA ;显示字母“=”
213:
214:
215:
216: 00DF EB MOV A,R3
217: 00E0 44 30 ORL A,#30H ; 百位
218: 00E2 12 01 73 LCALL WRDATA
219:
220:
221:
222: 00E5 EC MOV A,R4
223: 00E6 44 30 ORL A,#30H ;十位
224: 00E8 12 01 73 LCALL WRDATA
225:
226: 00EB ED MOV A,R5 ;个位
227: 00EC 44 30 ORL A,#30H
228: 00EE 12 01 73 LCALL WRDATA
229:
230: 00F1 74 DF MOV A,#0DFH ;显示“°”
231: 00F3 12 01 73 LCALL WRDATA
232: 00F6 74 43 MOV A,#'C' ;显示“C”
233: 00F8 12 01 73 LCALL WRDATA
234:
235: 00FB 74 20 MOV A,#20H ;显示空格
236: 00FD 12 01 73 LCALL WRDATA
237:
238:
239: 0100 E5 2A KEY_display: MOV A,KEY
240: 0102 12 02 03 LCALL BTOD
241:
242: 0105 74 54 MOV A,#'T'
243: 0107 12 01 73 LCALL WRDATA ;显示字母“T”
244:
245: 010A 74 3D MOV A,#'='
246: 010C 12 01 73 LCALL WRDATA ;显示字母“=”
247:
248: 010F EB MOV A,R3
249: 0110 44 30 ORL A,#30H
250: 0112 12 01 73 LCALL WRDATA
251:
252: 0115 EC MOV A,R4
253: 0116 44 30 ORL A,#30H
254: 0118 12 01 73 LCALL WRDATA
255:
256: 011B ED MOV A,R5
257: 011C 44 30 ORL A,#30H
258: 011E 12 01 73 LCALL WRDATA
259:
260: 0121 74 DF MOV A,#0DFH ;显示“°”
261: 0123 12 01 73 LCALL WRDATA
262:
263: 0126 74 43 MOV A,#'C' ;显示“C”
264: 0128 12 01 73 LCALL WRDATA
265:
266:
267: 012B 74 20 MOV A,#20H ;显示空格
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 6
Line I Addr Code Source
268: 012D 12 01 73 LCALL WRDATA
269:
270: 0130 74 02 MOV A,#2 ;显存地址指针清零,光标回到行首
271: 0132 12 01 6D LCALL WRCMD
272:
273: 0135 22 RET
274:
275:
276:
277:
278:
279:
280:
281:
282:
283: ;=========================================================================
284: 0136 7D 04 D1S: MOV R5,#4
285: 0138 7E FA M4: MOV R6,#250
286: 013A 12 01 7F M5: LCALL D1MS
287: 013D DE FB DJNZ R6,M5
288: 013F DD F7 DJNZ R5,M4
289: 0141 22 RET
290: ;=========================================================================
291:
292:
293:
294:
295:
296:
297:
298:
299: ;=========================================================================
300: ;启动AD转换,把转换后的温度值存放在"29H"中。
301: ;=========================================================================
302: 0142 90 00 78 AD_start: MOV DPTR,#ADC0
303:
304: 0145 F0 MOVX @DPTR,A ;启动A/D
305:
306:
307: 0146 12 01 7F LCALL D1MS
308: 0149 E0 MOVX A,@DPTR ;取采样的电压值
309:
310: 014A F5 29 MOV AD ,A
311:
312: ;MOV R3,A
313: ;MOV R2,#0
314: ;MOV R6,#00H ;
315: ;MOV R7,#0C4H ;#196
316: ;LCALL DMUL
317:
318:
319: ;MOV DIVDHH,R4
320: ;MOV DIVDHL,R5
321: ;MOV DIVDLH,R6
322: ;MOV DIVDLL,R7
323:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 7
Line I Addr Code Source
324: ;MOV DIVL,#01H
325: ;MOV DIVH,#0F4H ;除数=500
326: ;LCALL CHUFA ;除500得到电压值
327:
328: ;MOV 29H,DIVDLH
329: ;MOV A,29H
330: ;LCALL BTOD ;转换为BCD码
331: 014C 22 RET
332: ;=========================================================================
333:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -