📄 ds1302-dsy.lst
字号:
0208 224 READ_01:
0208 13 225 RRC A
0209 00 226 NOP ;先传输地址到DS1302
020A 9291 227 MOV IO_DATA,C
020C 00 228 NOP
020D 00 229 NOP
020E D290 230 SETB SCLK
0210 00 231 NOP
0211 00 232 NOP
0212 C290 233 CLR SCLK
0214 00 234 NOP
0215 00 235 NOP
0216 DAF0 236 DJNZ R2,READ_01
0218 00 237 NOP
0219 00 238 NOP
021A D291 239 SETB IO_DATA
021C E4 240 CLR A
021D C3 241 CLR C
021E 7A08 242 MOV R2,#08H
0220 243 READ_02:
0220 C290 244 CLR SCLK
0222 00 245 NOP
0223 00 246 NOP
0224 A291 247 MOV C,IO_DATA
0226 00 248 NOP
0227 00 249 NOP
0228 13 250 RRC A ;再从DS1302接收数据
0229 00 251 NOP
022A 00 252 NOP
022B D290 253 SETB SCLK
022D 00 254 NOP
022E 00 255 NOP
022F DAEF 256 DJNZ R2,READ_02
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 5
0231 F8 257 MOV R0,A
0232 C292 258 CLR RST
0234 22 259 RET
260 ;==============================================
261 ;实时时间、日期数据处理子程序
262 ;==============================================
0235 263 CHULI:
0235 E540 264 MOV A,40H ;处理秒数据
0237 540F 265 ANL A,#0FH
0239 F550 266 MOV 50H,A
023B F570 267 MOV 70H,A
023D E540 268 MOV A,40H
023F 54F0 269 ANL A,#11110000B
0241 C4 270 SWAP A
0242 F551 271 MOV 51H,A
0244 F571 272 MOV 71H,A
273 ;---------------------------------------------
0246 E541 274 MOV A,41H ;处理分数据
0248 540F 275 ANL A,#0FH
024A F552 276 MOV 52H,A
024C F572 277 MOV 72H,A
024E E541 278 MOV A,41H
0250 54F0 279 ANL A,#11110000B
0252 C4 280 SWAP A
0253 F553 281 MOV 53H,A
0255 F573 282 MOV 73H,A
283 ;---------------------------------------------
0257 E542 284 MOV A,42H ;处理时数据
0259 540F 285 ANL A,#0FH
025B F554 286 MOV 54H,A
025D F574 287 MOV 74H,A
025F E542 288 MOV A,42H
0261 54F0 289 ANL A,#11110000B
0263 C4 290 SWAP A
0264 F555 291 MOV 55H,A
0266 F575 292 MOV 75H,A
293 ;----------------------------------------------
0268 E543 294 MOV A,43H ;处理日数据
026A 540F 295 ANL A,#0FH
026C F560 296 MOV 60H,A
026E F576 297 MOV 76H,A
0270 E543 298 MOV A,43H
0272 54F0 299 ANL A,#11110000B
0274 C4 300 SWAP A
0275 F561 301 MOV 61H,A
0277 F577 302 MOV 77H,A
303 ;---------------------------------------------
0279 E544 304 MOV A,44H ;处理月数据
027B 540F 305 ANL A,#0FH
027D F562 306 MOV 62H,A
027F F578 307 MOV 78H,A
0281 E544 308 MOV A,44H
0283 54F0 309 ANL A,#11110000B
0285 C4 310 SWAP A
0286 F563 311 MOV 63H,A
0288 F579 312 MOV 79H,A
313 ;---------------------------------------------
028A E545 314 MOV A,45H ;处理年数据
028C 540F 315 ANL A,#0FH
028E F564 316 MOV 64H,A
0290 F57A 317 MOV 7AH,A
0292 E545 318 MOV A,45H
0294 54F0 319 ANL A,#11110000B
0296 C4 320 SWAP A
0297 F565 321 MOV 65H,A
0299 F57B 322 MOV 7BH,A
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 6
323 ;----------------------------------------------
029B E546 324 MOV A,46H ;处理周数据
029D F566 325 MOV 66H,A
029F F57C 326 MOV 7CH,A
02A1 22 327 RET
328 ;=============================================
329 ;实时时间、日期查表取数子程序
330 ;=============================================
02A2 331 DISP: ;MOV R0,#TIME_DATA
02A2 7B06 332 MOV R3,#06H
02A4 E6 333 DISP1: MOV A,@R0
02A5 9006FA 334 MOV DPTR,#TAB_NU
02A8 93 335 MOVC A,@A+DPTR
02A9 F6 336 MOV @R0,A
02AA 08 337 INC R0
02AB DBF7 338 DJNZ R3,DISP1
02AD 22 339 RET
340 ;====================================================
341 ;时间、日期显示子程序
342 ;====================================================
02AE 343 TIME_DISPLAY:
344 ;MOV R0,#TIME_DATA ;取得显示单元首地址
02AE 797F 345 MOV R1,#07FH ;从第一个数码管开始
02B0 7A08 346 MOV R2,#08H ;共8个数码管
347
02B2 8680 348 DISLP: MOV P0,@R0 ;获得当前单元数据
02B4 E9 349 MOV A,R1
02B5 F5A0 350 MOV P2,A ;数码显示
02B7 20E505 351 JB ACC.5,DISLP1 ;第三位数码管显示 -
02BA 7580BF 352 MOV P0,#0BFH
02BD 8009 353 JMP DISLP3
02BF 20E205 354 DISLP1: JB ACC.2,DISLP2 ;第六位数码管显示 -
02C2 7580BF 355 MOV P0,#0BFH
02C5 8001 356 JMP DISLP3
02C7 08 357 DISLP2: INC R0
02C8 E9 358 DISLP3: MOV A,R1 ;为下一个数准备
02C9 03 359 RR A ;下一个单元
02CA F9 360 MOV R1,A ;保存
02CB 1202D1 361 LCALL DELAY ;为了保证数码管亮度,延时
02CE DAE2 362 DJNZ R2,DISLP ;重复显示,直到全部数据刷新过
02D0 22 363 RET ;返回
364
02D1 365 DELAY:
02D1 7C0A 366 MOV R4,#0AH
02D3 7D64 367 L15: MOV R5,#64H
02D5 DDFE 368 L16: DJNZ R5,L16
02D7 DCFA 369 DJNZ R4,L15
02D9 22 370 RET
371 ;******************************************************
02DA 372 SET_KEY:
02DA D294 373 SETB K1 ;增加键
02DC D295 374 SETB K2 ;减少键
02DE D296 375 SETB K3 ;选择键
02E0 D297 376 SETB K4 ;定时设定功能键
02E2 00 377 NOP
02E3 209705 378 JB K4,KEY01
02E6 1206DC 379 LCALL BEEP_BL
02E9 8011 380 JMP DS_KEY ;进入定时值设定子程序
02EB 209505 381 KEY01: JB K2,KEY02
02EE 1206DC 382 LCALL BEEP_BL
02F1 8014 383 JMP SET_TIME ;进入时间设定子程序
02F3 209605 384 KEY02: JB K3,KEY03
02F6 1206DC 385 LCALL BEEP_BL
02F9 B200 386 CPL 20H.0 ;止闹标记取反
02FB 22 387 KEY03: RET
388
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 7
389 ;-----------------------------------------------------
02FC 390 DS_KEY:
02FC D1A8 391 CALL DS_DELAY
02FE 3097FD 392 JNB K4,$
0301 120534 393 LCALL DSSET
0304 D1A8 394 CALL DS_DELAY
0306 22 395 RET
396 ;==============================================
397 ;实时时间设定子程序
398 ;K1为加键、K2为减键、K3为选择键
399 ;==============================================
0307 400 SET_TIME:
0307 798E 401 MOV R1,#8EH ;写保护寄存器
0309 7800 402 MOV R0,#00H ;允许写入
030B 1201C2 403 LCALL WRITE
404
030E 7980 405 MOV R1,#80H ;写秒寄存器
0310 7880 406 MOV R0,#80H ;停止振荡器工作
0312 1201C2 407 LCALL WRITE
408
0315 D28C 409 SETB TR0
410
0317 D1BA 411 K001: CALL TIME_DELAY ;校时
0319 3096FB 412 JNB K3,K001 ;K3为位移键
031C 413 K010:
031C 5135 414 CALL CHULI
031E 300A08 415 JNB 0AH,KH01
0321 857F54 416 MOV 54H,7FH ;送入熄灭符
0324 857F55 417 MOV 55H,7FH
0327 8006 418 JMP KH02
0329 857454 419 KH01: MOV 54H,74H ;送实时值
032C 857555 420 MOV 55H,75H ;送实时值
032F 7850 421 KH02: MOV R0,#TIME_DATA
0331 51A2 422 CALL DISP
0333 7850 423 MOV R0,#TIME_DATA
0335 51AE 424 CALL TIME_DISPLAY
0337 309408 425 JNB K1,K011A
033A 30951E 426 JNB K2,K011B
033D 30963E 427 JNB K3,K002
0340 80DA 428 JMP K010
0342 429 K011A:
0342 E542 430 MOV A,42H
0344 2401 431 ADD A,#01H
0346 D4 432 DA A
0347 F542 433 MOV 42H,A
0349 6424 434 XRL A,#24H
034B 7003 435 JNZ K012A
034D 754200 436 MOV 42H,#00H
0350 7984 437 K012A: MOV R1,#84H ;写时寄存器
0352 A842 438 MOV R0,42H
0354 1201C2 439 LCALL WRITE
0357 D1BA 440 CALL TIME_DELAY
0359 80C1 441 JMP K010
442
035B 443 K011B:
035B E542 444 MOV A,42H
035D 6400 445 XRL A,#00H
035F 600F 446 JZ K012B
0361 D3 447 SETB C ;求补运算
0362 E4 448 CLR A
0363 3499 449 ADDC A,#99H ;加99
0365 9401 450 SUBB A,#01H ;减去减数
0367 2542 451 ADD A,42H ;加被减数
0369 D4 452 DA A ;十进制调整
036A F542 453 MOV 42H,A ;
036C 6400 454 XRL A,#00H
A51 MACRO ASSEMBLER DS1302_DSY 07/21/2006 08:51:55 PAGE 8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -