📄 file12.lst
字号:
239: ;定时器工作在方式1,为提高精度,总定时时间为50ms,
240: ;定时器溢出20次为1秒,
241:
242: 0182 pro_timer:
243: 0182 75 89 01 mov tmod,#01h ;设置定时器为定时方式1
244: 0185 75 8C FF mov th0,#0ffh ; 初始化定时初值
245: 0188 75 8A A1 mov tl0,#0a1h ;
246: 018B D2 AF setb ea ;总中断允许
247: 018D D2 A9 setb et0 ;定时器0 允许
248: 018F D2 8C setb tr0 ;开始定时
249: 0191 22 ret ;返回
250: ; *****************************************
251:
252: ; *************** 软件延时 *************
253:
254: 0192 C0 D0 delay:push psw ; 保存原来的寄存器内容
255: 0194 C2 D3 clr psw.3 ;
256: 0196 C2 D4 clr psw.4 ; 设置新的寄存器组
257: 0198 78 02 mov r0,#2 ; 延时参数1
258: 019A 79 FA mov r1,#250 ; 延时参数2
259: 019C 7A 02 mov r2,#2 ; 延时参数3
260: 019E D8 FE dl1:djnz r0,dl1 ; 延时循环1
261: 01A0 78 FA mov r0,#250 ;
262: 01A2 D9 FA dl2:djnz r1,dl1 ; 延时循环2
263: 01A4 78 F0 mov r0,#240 ;
264: 01A6 79 F8 mov r1,#248 ;
265: 01A8 DA F4 dl3:djnz r2,dl1 ; 延时循环3
266: 01AA 00 nop ; 定时精度调整
267: 01AB D0 D0 pop psw ; 恢复原来的寄存器
268: 01AD 22 ret ; 返回
269: ;*****************************************
270: 01AE pro_key: ;键盘查询子程序
271: 01AE D2 B5 setb key1 ;首先输出高电平,检测低电平的到来
272: 01B0 D2 B4 setb key2 ;不同电路,可能检测方式不一样
273: 01B2 D2 B3 setb key3
274: 01B4 20 B5 08 jb key1,ke1 ;如果用户没有按第一个键,到第下个处理部分,
275: 01B7 75 56 01 mov key,#1 ;表示用户按了第一个键
276: 01BA 12 01 D6 lcall delay20ms ;软件延时,防止干扰
277: 01BD 80 EF jmp pro_key ;重新查询,直到用户释放按键
278: 01BF 20 B4 08 ke1:jb key2,ke2 ;处理第二个按键,如果没有到下一个处理部分
279: 01C2 75 56 02 mov key,#2 ;以下和第一个处理单元相似。
280: 01C5 12 01 D6 lcall delay20ms
281: 01C8 80 E4 jmp pro_key
282: 01CA 20 B3 08 ke2:jb key3,ke3
283: 01CD 75 56 03 mov key,#3
284: 01D0 12 01 D6 lcall delay20ms
285: 01D3 80 D9 jmp pro_key
286: 01D5 22 ke3:ret
PAGE 6
287: ;************ 定时20 ms *************
288: 01D6 delay20ms:
289: 01D6 C0 D0 push psw ; 保存原来的寄存器单元
290: 01D8 C2 D3 clr psw.3 ; 设置新的寄存器
291: 01DA C2 D4 clr psw.4 ;
292: 01DC 78 02 mov r0,#2 ; 延时参数1
293: 01DE 79 FA mov r1,#250 ; 延时参数2
294: 01E0 7A 01 mov r2,#1 ; 延时参数3
295: 01E2 D8 FE de1:djnz r0,de1 ; 延时循环1
296: 01E4 78 FA mov r0,#250 ; 重新设置循环数据
297: 01E6 D9 FA de2:djnz r1,de1 ; 开始第二道循环
298: 01E8 78 F0 mov r0,#240 ;
299: 01EA 79 F8 mov r1,#248 ;
300: 01EC DA F4 de3:djnz r2,de1 ; 第三道循环
301: 01EE 00 nop ; 修正定时精度
302: 01EF D0 D0 pop psw ; 恢复原来的寄存器组
303: 01F1 22 ret ; 返回
304: ;*********** end *******************
305: ;*********** 延时 3ms ****************
306: 01F2 delay3ms:
307: 01F2 C0 D0 push psw
308: 01F4 C2 D3 clr psw.3
309: 01F6 D2 D4 setb psw.4
310: 01F8 78 FA mov r0,#250
311: 01FA 79 03 mov r1,#3
312: 01FC D8 FE d5:djnz r0,d5
313: 01FE 78 FA mov r0,#250
314: 0200 D9 FA djnz r1,d5
315: 0202 D0 D0 pop psw
316: 0204 22 ret
317: ;************************************************************************************
318: ;这是数字显示表格,其中 带小数点的数字比不带小数点的数字大16
319: ; 比如 0 的显示代码为 0;那么 0.的显示代码为 16;如此类推
320:
321: 0205 tab_nu:
322: 0205 C0 F9 A4 B0 db 0c0h, 0f9h, 0a4h, 0b0h, 99h , 92h , 82h, 0f8h ; 数字0-7 不带小数点代码
0209 99 92 82 F8
323: 020D 80 90 88 83 db 80h , 90h, 88h , 83h , 0c6h, 0a1h, 86h, 8eh ; 数字8-f 不带小数点代码
0211 C6 A1 86 8E
324: 0215 40 79 24 30 db 40h , 79h, 24h , 30h , 19h , 12h , 02h, 78h ; 数字0-7 带小数点代码
0219 19 12 02 78
325: 021D 00 10 08 03 db 00h , 10h, 08h , 03h , 46h , 21h , 06h, 0eh ; 数字8-f 带小数点代码
0221 46 21 06 0E
326:
327: end ;
register banks used: ---
0 个错误
PAGE 7
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
AC BIT D6
ACC DATA E0
B DATA F0
BCD CODE 010B 170
BEEP BIT B7 12
COUNT_DATA NUMBER 0044 39
CY BIT D7
D5 CODE 01FC 312
DE1 CODE 01E2 295
DE2 CODE 01E6 297
DE3 CODE 01EC 300
DELAY CODE 0192 254
DELAY20MS CODE 01D6 288
DELAY3MS CODE 01F2 306
DISLP CODE 00E2 138
DISSTART NUMBER 0070 36
DL1 CODE 019E 260
DL2 CODE 01A2 262
DL3 CODE 01A8 265
DPH DATA 83
DPL DATA 82
EA BIT AF
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
INT_DATA NUMBER 0045 38
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
KE1 CODE 01BF 278
KE2 CODE 01CA 282
KE3 CODE 01D5 286
KEY NUMBER 0056 22
KEY1 BIT B5 19
KEY2 BIT B4 20
KEY3 BIT B3 21
LPP CODE 0039 57
MAIN CODE 0030 54
OV BIT D2
P BIT D0
PAGE 8
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PRLP CODE 0101 161
PRO_KEY CODE 01AE 270
PRO_SET CODE 0081 91
PRO_TIMER CODE 0182 242
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
REST CODE 0047 63
RETEND CODE 007E 87
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SEGB NUMBER 00A6 16
SEGD NUMBER 00A5 17
SEGDATA NUMBER 0080 14
SEGE NUMBER 00A7 15
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
T0 BIT B4
T1 BIT B5
TAB_NU CODE 0205 321
TB8 BIT 9B
TCON DATA 88
TEND CODE 00D9 130
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIM1 CODE 0066 77
TIME NUMBER 0063 30
TIMER CODE 009A 104
TIMER0 CODE 000B
TIMER1 CODE 001B
TIMER_DATA NUMBER 0043 40
TIMER_H NUMBER 0064 31
TIMER_M NUMBER 0065 32
TIMETEST CODE 00C0 120
PAGE 9
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
TIME_DISPLAY CODE 00DA 134
TIME_H NUMBER 0057 24
TIME_L NUMBER 0058 25
TIME_PRO CODE 00FA 158
TIME_SET CODE 012E 201
TIMSET BIT 00 34
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TS1 CODE 014C 212
TS2 CODE 016B 225
TSEND CODE 0181 236
TSET1 CODE 015A 219
TSET10 CODE 0151 215
TSET2 CODE 0179 233
TSET20 CODE 0170 228
TXD BIT B1
T_H NUMBER 0060 27
T_M NUMBER 0062 29
T_S NUMBER 0061 28
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -