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