📄 sz02.lst
字号:
0124 D28C 228 SETB TR0 ;启动定时器
0126 22 229 RET
230
231 ;----―喇叭和指示灯等其它子程序 ----――
232
233 ;计时单元清零
0127 234 INIT:
0127 753700 235 MOV DEDA, #0 ;5ms计数值清除为0
012A 753600 236 MOV SEC, #0 ;秒钟变量清除为0
012D 753500 237 MOV MIN, #0 ;分钟变量清除为0
0130 753400 238 MOV HOUR, #0 ;小时变量清除为0
0133 22 239 RET
240 ;―――――――――――――
241 ;压电喇叭
0134 242 BZ: ;压电喇叭鸣响一声
0134 7EFA 243 MOV R6, #250
0136 3157 244 B1: ACALL DEX
0138 B2B4 245 CPL SPK
013A DEFA 246 DJNZ R6,B1
013C 7D32 247 MOV R5, #50 ;#10
013E 314C 248 ACALL DELAY
0140 22 249 RET
250
251 ;----------―――
252 ;工作指示
0141 253 LED_BL: ;工作指示灯闪烁
0141 7C06 254 MOV R4,#6
0143 B290 255 LE1:CPL WLED ;位反向
0145 7D19 256 MOV R5,#25 ;#5
A51 MACRO ASSEMBLER SZ02 01/04/2007 21:16:37 PAGE 5
0147 314C 257 ACALL DELAY
0149 DCF8 258 DJNZ R4, LE1 ;延迟50ms
014B 22 259 RET
260 ;----------―――
261 ;延时子程序
014C 262 DELAY: ;;总延迟时间 R5* 2ms
014C 7E0A 263 MOV R6,#10 ;#50
014E 7F64 264 D1:MOV R7,#100
0150 DFFE 265 DJNZ R7,$
0152 DEFA 266 DJNZ R6,D1
0154 DDF6 267 DJNZ R5,DELAY
0156 22 268 RET
269 ;----------―――
270 ; 压电喇叭短暂延时子程序
0157 7FB4 271 DEX: MOV R7,#180 ;短暂延时
0159 00 272 DE1: NOP
015A DFFD 273 DJNZ R7, DE1
015C 22 274 RET
275
276 ;-------―― 增加定时闹铃程序部分 -------――
277 ;―――――――― 设置闹铃时间 ―――――――――
278 ;设置闹铃时间
015D 279 SET_ATIME:
015D 3198 280 ACALL CONVA ;加载闹铃时间数据
015F 281 N0:
015F 11CD 282 ACALL DISP
283 ;-----------
0161 20A513 284 JB K2, N1 ;未按下K2键则继续扫描
0164 30A5FD 285 JNB K2, $ ;有按下则等待放开来
286 ;K2调整小时
0167 0538 287 INC HH ;小时数加1
0169 E538 288 MOV A, HH
016B B41803 289 CJNE A, #24,N11 ;是否24h到了
016E 753800 290 MOV HH,#0 ;小时请为0
0171 291 N11:
0171 3198 292 ACALL CONVA ;加载闹铃时间数据
0173 11CD 293 ACALL DISP ;扫描显示
0175 80E8 294 JMP N0 ;继续按键扫描
295 ;------------
0177 20A613 296 N1: JB K3, N2 ;未按下K3键则继续扫描
017A 30A6FD 297 JNB K3, $ ;有按下则等待放开来
298 ;K3调整分钟
017D 0539 299 INC MM ;调整分钟数
017F E539 300 MOV A,MM ;分钟数加1
0181 B43C03 301 CJNE A, #60,N21 ;是否60min到了
0184 753900 302 MOV MM, #0 ;分钟数请为0
0187 303 N21:
0187 3198 304 ACALL CONVA ;加载闹铃时间数据
0189 11CD 305 ACALL DISP ;扫描显示
018B 80D2 306 JMP N0 ;继续按键扫描
307 ;------------
018D 20A7CF 308 N2: JB K4, N0 ;未按下K4键则继续扫描
0190 30A7FD 309 JNB K4, $ ;等K4键放开
310 ;K4设置完成......
0193 3141 311 ACALL LED_BL ;LED闪动
0195 119A 312 ACALL CONV ;加载现在时间数据
0197 22 313 RET
314
315 ;―――――――― 加载闹铃时间数据 ―――――――
316
317 ;转换 时时:分分 数据
0198 318 CONVA:
319 ;转换小时数据
0198 E538 320 MOV A, HH
019A 75F00A 321 MOV B, #10
019D 84 322 DIV AB
A51 MACRO ASSEMBLER SZ02 01/04/2007 21:16:37 PAGE 6
323 ;-----------
019E 9000BD 324 MOV DPTR,#TABLE ;查表转换
01A1 93 325 MOVC A, @A+DPTR
01A2 F530 326 MOV BUF, A
327 ;-----------
01A4 E5F0 328 MOV A, B
01A6 93 329 MOVC A, @A+DPTR
01A7 F531 330 MOV BUF+1, A
331 ;转换分钟数据
01A9 E539 332 MOV A, MM
01AB 75F00A 333 MOV B, #10
01AE 84 334 DIV AB
335 ;-----------
01AF 9000BD 336 MOV DPTR,#TABLE ;查表转换
01B2 93 337 MOVC A, @A+DPTR
01B3 F532 338 MOV BUF+2, A
339 ;-----------
01B5 E5F0 340 MOV A, B
01B7 93 341 MOVC A, @A+DPTR
01B8 F533 342 MOV BUF+3, A
01BA 22 343 RET
344
345 ;―――――――― 检查闹铃时间处理 ――――――――
346
347 ;检查是否启动闹铃
01BB 348 TIME_PRO:
01BB 200001 349 JB ALB, TI3
01BE 22 350 RET
351 ;――――――――――――――
352
353 ;检查闹铃时间是否到了
01BF 354 TI3:
01BF E534 355 MOV A, HOUR
01C1 8538F0 356 MOV B,HH
01C4 B5F00A 357 CJNE A, B, BK ;检查闹铃小时时间
358 ;-----------
01C7 E535 359 MOV A, MIN
01C9 8539F0 360 MOV B,MM
01CC B5F002 361 CJNE A, B, BK ;检查闹铃分钟时间
362 ;-----------
01CF 31D2 363 ACALL TIME_OUT ;执行检查闹铃时间到了处理
01D1 364 BK:
01D1 22 365 RET
366
367 ;-------- 执行闹铃时间处理 ――――――――
368
01D2 369 TIME_OUT: ;所设置的闹铃数据到了
01D2 3141 370 X1: ACALL LED_BL ;LED闪动
01D4 3134 371 ACALL BZ ;压电喇叭发出哗的一声
372 ;按下K4键停止闹铃
01D6 20A7F9 373 JB K4, X1 ;等待是否按下K4键
01D9 30A7FD 374 JNB K4,$ ;若有按下键则等待按键放开来
01DC 3141 375 ACALL LED_BL ;LED闪动
01DE C200 376 CLR ALB ;清除闹铃位
01E0 22 377 RET
378 ;------------------------------
379 END
A51 MACRO ASSEMBLER SZ02 01/04/2007 21:16:37 PAGE 7
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
ALB. . . . . . . . B ADDR 0020H.0 A
B. . . . . . . . . D ADDR 00F0H A
B1 . . . . . . . . C ADDR 0136H A
BK . . . . . . . . C ADDR 01D1H A
BUF. . . . . . . . N NUMB 0030H A
BZ . . . . . . . . C ADDR 0134H A
CONV . . . . . . . C ADDR 009AH A
CONVA. . . . . . . C ADDR 0198H A
D1 . . . . . . . . C ADDR 014EH A
DE1. . . . . . . . C ADDR 0159H A
DEDA . . . . . . . N NUMB 0037H A
DELAY. . . . . . . C ADDR 014CH A
DEX. . . . . . . . C ADDR 0157H A
DISP . . . . . . . C ADDR 00CDH A
HH . . . . . . . . N NUMB 0038H A
HOUR . . . . . . . N NUMB 0034H A
IE . . . . . . . . D ADDR 00A8H A
INIT . . . . . . . C ADDR 0127H A
INIT_TIMER . . . . C ADDR 0050H A
K1 . . . . . . . . B ADDR 00A0H.4 A
K2 . . . . . . . . B ADDR 00A0H.5 A
K3 . . . . . . . . B ADDR 00A0H.6 A
K4 . . . . . . . . B ADDR 00A0H.7 A
L0 . . . . . . . . C ADDR 00ECH A
L1 . . . . . . . . C ADDR 0104H A
L11. . . . . . . . C ADDR 00FEH A
L2 . . . . . . . . C ADDR 011AH A
L21. . . . . . . . C ADDR 0114H A
LE1. . . . . . . . C ADDR 0143H A
LED_BL . . . . . . C ADDR 0141H A
LOOP . . . . . . . C ADDR 001DH A
M1 . . . . . . . . C ADDR 002CH A
M2 . . . . . . . . C ADDR 0035H A
M3 . . . . . . . . C ADDR 003AH A
M31. . . . . . . . C ADDR 004AH A
M4 . . . . . . . . C ADDR 004EH A
MAIN . . . . . . . C ADDR 000DH A
MIN. . . . . . . . N NUMB 0035H A
MM . . . . . . . . N NUMB 0039H A
N0 . . . . . . . . C ADDR 015FH A
N1 . . . . . . . . C ADDR 0177H A
N11. . . . . . . . C ADDR 0171H A
N2 . . . . . . . . C ADDR 018DH A
N21. . . . . . . . C ADDR 0187H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
S1 . . . . . . . . C ADDR 00D4H A
SEC. . . . . . . . N NUMB 0036H A
SET_ATIME. . . . . C ADDR 015DH A
SET_TIME . . . . . C ADDR 00E7H A
SPK. . . . . . . . B ADDR 00B0H.4 A
TABLE. . . . . . . C ADDR 00BDH A
TH0. . . . . . . . D ADDR 008CH A
TI3. . . . . . . . C ADDR 01BFH A
TIME_OUT . . . . . C ADDR 01D2H A
TIME_PRO . . . . . C ADDR 01BBH A
TL0. . . . . . . . D ADDR 008AH A
A51 MACRO ASSEMBLER SZ02 01/04/2007 21:16:37 PAGE 8
TMOD . . . . . . . D ADDR 0089H A
TO_SRV . . . . . . C ADDR 005FH A
TR0. . . . . . . . B ADDR 0088H.4 A
TT1. . . . . . . . C ADDR 0097H A
WLED . . . . . . . B ADDR 0090H.0 A
X1 . . . . . . . . C ADDR 01D2H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -