📄 ex10-1.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: EX10-1.ASM
Object File: EX10-1.HEX
List File: EX10-1.LST
Line I Addr Code Source
1: N 0000 org 0000h ;单片机复位地址
2: 0000 21 00 ajmp main ;转移到主程序处
3: N 0100 org 0100h ;main被定位在0x0100处
4: 0100 75 81 80 main: mov sp,#80h ;初始化堆栈指针
5: 0103 30 90 06 jnb P1.0,cr
6: 0106 30 91 10 jnb P1.1,cv
7: 0109 30 92 1A jnb P1.2,ca
8: 010C 7F 00 cr: mov R7,#00h
9: 010E 12 01 33 lcall adc
10: 0111 12 02 35 LCALL RDAT
11: 0114 12 02 AA lcall DISPLAY
12: 0117 80 E7 sjmp main
13: 0119 7F 01 CV: MOV R7,#01H
14: 011B 12 01 33 LCALL ADC
15: 011E 12 01 3D LCALL VDAT
16: 0121 12 02 AA LCALL DISPLAY
17: 0124 80 DA SJMP MAIN
18: 0126 7F 02 CA: MOV R7,#02H
19: 0128 12 01 33 LCALL ADC
20: 012B 12 01 B4 LCALL ADAT
21: 012E 12 02 AA LCALL DISPLAY
22: 0131 80 CD SJMP MAIN
23:
24: 0133 EF ADC: MOV A,R7 ;0808 A/D转换子程序
25: 0134 90 7F FF MOV DPTR,#7FFFH
26: 0137 F0 MOVX @DPTR,A
27: 0138 20 B3 FD JB P3.3,$
28: 013B E0 MOVX A,@DPTR ;输入转换结果
29: 013C 22 RET
30:
31:
32: 013D vdat:
33: 013D 7A 00 mov R2,#00h
34: 013F FB mov R3,A
35: 0140 7E 01 mov R6,#01h
36: 0142 7F F4 mov R7,#0F4h
37: 0144 12 02 E7 call MULD2 ;乘以500
38: 0147 C3 clr C
39: 0148 ED mov A,r5
40: 0149 24 60 add A,#60h ;加96修正
41: 014B FD mov r5,A
42: 014C EC mov A,r4
43: 014D 34 00 addc A,#00h
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 014F FC mov r4,A
45: 0150 EB mov A,r3
46: 0151 34 00 addc A,#00h
47: 0153 FB mov r3,A
48: 0154 EA mov A,r2
49: 0155 34 00 addc A,#00h
50: 0157 FA mov r2,A
51: 0158 78 30 mov r0,#30h
52: 015A 79 34 mov r1,#34h
53: 015C EA mov A,R2
54: 015D F7 mov @r1,A
55: 015E 09 inc r1
56: 015F EB mov A,R3
57: 0160 F7 mov @r1,A
58: 0161 09 inc r1
59: 0162 EC mov A,R4
60: 0163 F7 mov @r1,A
61: 0164 09 inc r1
62: 0165 ED mov A,R5
63: 0166 F7 mov @r1,A
64: 0167 09 inc r1
65: 0168 77 00 mov @r1,#00h
66: 016A 09 inc r1
67: 016B 77 00 mov @r1,#00h
68: 016D 09 inc r1
69: 016E 77 00 mov @r1,#00h
70: 0170 09 inc r1
71: 0171 77 FF mov @r1,#0FFh
72: 0173 12 03 17 call DIVD4 ;除以255
73: 0176 79 38 mov r1,#38h
74: 0178 77 00 mov @r1,#00h
75: 017A 09 inc r1
76: 017B 77 00 mov @r1,#00h
77: 017D 09 inc r1
78: 017E 77 00 mov @r1,#00h
79: 0180 09 inc r1
80: 0181 77 0A mov @r1,#0Ah
81: 0183 12 03 17 call DIVD4
82: 0186 85 33 43 mov 43h,33h
83: 0189 12 03 17 call DIVD4
84: 018C 85 33 42 mov 42h,33h
85: 018F 12 03 17 call DIVD4
86: 0192 85 33 41 mov 41h,33h
87: 0195 78 40 mov r0,#40h
88: 0197 76 00 mov @r0,#00h
89: 0199 08 inc r0
90: 019A E5 41 mov A,41h
91: 019C 90 02 A0 mov DPTR,#SEGMENT7
92: 019F 93 movc A,@A+DPTR
93: 01A0 44 80 orl A,#80h
94: 01A2 F6 mov @r0,A
95: 01A3 08 inc r0
96: 01A4 E5 42 mov A,42h
97: 01A6 90 02 A0 mov DPTR,#SEGMENT7
98: 01A9 93 movc A,@A+DPTR
99: 01AA F6 mov @r0,A
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 01AB 08 inc r0
101: 01AC E5 43 mov A,43h
102: 01AE 90 02 A0 mov DPTR,#SEGMENT7
103: 01B1 93 movc A,@A+DPTR
104: 01B2 F6 mov @r0,A
105: 01B3 22 ret
106:
107: 01B4 ADAT:
108: 01B4 F5 F0 mov B,A
109: 01B6 74 B6 mov A,#0B6h
110: 01B8 C3 clr C ;以下根据范围设置数值以防溢出
111: 01B9 95 F0 subb A,B
112: 01BB 40 08 jc LARGERA
113: 01BD E5 F0 mov A,B
114: 01BF 94 16 subb A,#16h
115: 01C1 40 06 jc LESSA
116: 01C3 21 CD ajmp MIDDLEA
117: 01C5 74 B6 LARGERA: mov A,#0B6h
118: 01C7 21 CF ajmp CALCULATEA
119: 01C9 74 16 LESSA: mov A,#16h
120: 01CB 21 CF ajmp CALCULATEA
121: 01CD E5 F0 MIDDLEA: mov A,B
122: 01CF 7A C3 CALCULATEA: mov r2,#0C3h
123: 01D1 7B 50 mov r3,#50h
124: 01D3 7E 00 mov r6,#00h
125: 01D5 FF mov r7,A
126: 01D6 12 02 E7 call MULD2 ;乘以50000
127: 01D9 C3 clr C
128: 01DA ED mov A,r5
129: 01DB 94 70 subb A,#70h ;以下减去102000
130: 01DD FD mov r5,A
131: 01DE F5 37 mov 37h,A
132: 01E0 EC mov A,r4
133: 01E1 94 8E subb A,#8Eh
134: 01E3 FC mov r4,A
135: 01E4 F5 36 mov 36h,A
136: 01E6 EB mov A,r3
137: 01E7 94 01 subb A,#01h
138: 01E9 FB mov r3,A
139: 01EA F5 35 mov 35h,A
140: 01EC EA mov A,r2
141: 01ED 94 00 subb A,#00h
142: 01EF FA mov r2,A
143: 01F0 F5 34 mov 34h,A
144: 01F2 78 30 mov r0,#30h
145: 01F4 79 38 mov r1,#38h
146: 01F6 77 00 mov @r1,#00h
147: 01F8 09 inc r1
148: 01F9 77 01 mov @r1,#01h
149: 01FB 09 inc r1
150: 01FC 77 5E mov @r1,#5Eh
151: 01FE 09 inc r1
152: 01FF 77 A0 mov @r1,#0A0h
153: 0201 12 03 17 call DIVD4 ;除以89760
154: 0204 79 38 mov r1,#38h
155: 0206 77 00 mov @r1,#00h
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 0208 09 inc r1
157: 0209 77 00 mov @r1,#00h
158: 020B 09 inc r1
159: 020C 77 00 mov @r1,#00h
160: 020E 09 inc r1
161: 020F 77 0A mov @r1,#0Ah
162: 0211 90 02 A0 mov DPTR,#SEGMENT7
163: 0214 12 03 17 call DIVD4
164: 0217 E5 33 mov A,33h
165: 0219 93 movc A,@A+DPTR
166: 021A F5 43 mov 43h,A
167: 021C 12 03 17 call DIVD4
168: 021F E5 33 mov A,33h
169: 0221 93 movc A,@A+DPTR
170: 0222 F5 42 mov 42h,A
171: 0224 12 03 17 call DIVD4
172: 0227 E5 33 mov A,33h
173: 0229 93 movc A,@A+DPTR
174: 022A B4 3F 02 cjne A,#3Fh,NOTEQU
175: 022D 74 00 mov A,#00h
176: 022F F5 41 NOTEQU: mov 41h,A
177: 0231 75 40 00 mov 40h,#00h
178: 0234 22 RET
179:
180: 0235 rdat:
181: 0235 7A 00 mov R2,#00h
182: 0237 FB mov R3,A
183: 0238 7E 03 mov R6,#03h
184: 023A 7F E8 mov R7,#0E8h
185: 023C 12 02 E7 call MULD2 ;乘以1000
186: 023F 78 30 mov r0,#30h
187: 0241 79 34 mov r1,#34h
188: 0243 EA mov A,R2
189: 0244 F7 mov @r1,A
190: 0245 09 inc r1
191: 0246 EB mov A,R3
192: 0247 F7 mov @r1,A
193: 0248 09 inc r1
194: 0249 EC mov A,R4
195: 024A F7 mov @r1,A
196: 024B 09 inc r1
197: 024C ED mov A,R5
198: 024D F7 mov @r1,A
199: 024E 09 inc r1
200: 024F 77 00 mov @r1,#00h
201: 0251 09 inc r1
202: 0252 77 00 mov @r1,#00h
203: 0254 09 inc r1
204: 0255 77 00 mov @r1,#00h
205: 0257 09 inc r1
206: 0258 77 FF mov @r1,#0FFh
207: 025A 12 03 17 call DIVD4 ;除以255
208: 025D 79 38 mov r1,#38h
209: 025F 77 00 mov @r1,#00h
210: 0261 09 inc r1
211: 0262 77 00 mov @r1,#00h
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
Line I Addr Code Source
212: 0264 09 inc r1
213: 0265 77 00 mov @r1,#00h
214: 0267 09 inc r1
215: 0268 77 0A mov @r1,#0Ah
216: 026A 90 02 A0 mov DPTR,#SEGMENT7
217: 026D 12 03 17 call DIVD4 ;连续进行4次除以10的操作
218: 0270 E5 33 mov A,33h ;取得10进制值
219: 0272 93 movc A,@A+DPTR
220: 0273 F5 43 mov 43h,A
221: 0275 12 03 17 call DIVD4
222: 0278 E5 33 mov A,33h
223: 027A 93 movc A,@A+DPTR
224: 027B F5 42 mov 42h,A
225: 027D 12 03 17 call DIVD4
226: 0280 E5 33 mov A,33h
227: 0282 93 movc A,@A+DPTR
228: 0283 F5 41 mov 41h,A
229: 0285 12 03 17 call DIVD4
230: 0288 E5 33 mov A,33h
231: 028A 93 movc A,@A+DPTR
232: 028B B4 3F 02 cjne A,#3Fh,NONZERO
233: 028E 74 00 mov A,#00h
234: 0290 F5 40 NONZERO: mov 40h,A
235: 0292 22 ret
236:
237: 0293 7D 01 DELAY_5ms: mov R5,#01h ;设置R5初始计数值
238: 0295 7E 16 DELAY_5ms1: mov R6,#16h ;设置R6初始计数值
239: 0297 7F 70 DELAY_5ms2: mov R7,#70h ;设置R7初始计数值
240: 0299 DF FE DELAY_5ms3: djnz R7,DELAY_5ms3 ;延时时间为 Time=( ( (R7*2)+2+1 )*R6+2+1 )*R5+1
241: 029B DE FA djnz R6,DELAY_5ms2 ;
242: 029D DD F6 djnz R5,DELAY_5ms1 ;
243: 029F 22 ret
244:
245:
246: 02A0 3F SEGMENT7: DB 3Fh ;7段数码管字符0的abcdefg的值,a在最低位,最高位始终保留为0
247: 02A1 06 DB 06h
248: 02A2 5B DB 5Bh
249: 02A3 4F DB 4Fh
250: 02A4 66 DB 66h
251: 02A5 6D DB 6Dh
252: 02A6 7D DB 7Dh
253: 02A7 07 DB 07h
254: 02A8 7F DB 7Fh
255: 02A9 6F DB 6Fh
256:
257: 02AA 90 FE FF DISPLAY: mov DPTR,#0fEffh ;写第一位数码管
258: 02AD 79 40 mov r1,#40h
259: 02AF E7 mov A,@r1
260: 02B0 F0 movx @DPTR,A
261: 02B1 D3 setb C
262: 02B2 92 94 mov P1.4,C
263: 02B4 C3 clr C
264: 02B5 92 94 mov P1.4,C
265: 02B7 51 93 call DELAY_5ms
266: 02B9 D3 setb C
267: 02BA 92 94 mov P1.4,C
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 6
Line I Addr Code Source
268: 02BC 09 inc r1
269: 02BD E7 mov A,@r1 ;写第二位数码管
270: 02BE F0 movx @DPTR,A
271: 02BF D3 setb C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -