📄 ex_rtc.lst
字号:
0210 1403 00314 BSF 03,0
0211 0C9D 00315 RRF 1D,F
0000 00316 .................... output_low(RTC_CLK);
0212 1683 00317 BSF 03,5
0213 1086 00318 BCF 06,1
0214 1283 00319 BCF 03,5
0215 1086 00320 BCF 06,1
0000 00321 .................... }
0216 0A9C 00322 INCF 1C,F
0217 2A01 00323 GOTO 201
0000 00324 .................... return(data);
0218 081D 00325 MOVF 1D,W
0219 008D 00326 MOVWF 0D
021A 3400 00327 RETLW 00
0000 00328 .................... }
0000 00329 ....................
0000 00330 ....................
0000 00331 .................... void rtc_set_datetime(byte day,byte mth,byte year,byte dow,
0000 00332 .................... byte hour,byte min) {
0000 00333 ....................
0000 00334 .................... output_low(RTC_CLK);
01C4 1683 00335 BSF 03,5
01C5 1086 00336 BCF 06,1
01C6 1283 00337 BCF 03,5
01C7 1086 00338 BCF 06,1
0000 00339 .................... output_high(RTC_IO);
01C8 1683 00340 BSF 03,5
01C9 1186 00341 BCF 06,3
01CA 1283 00342 BCF 03,5
01CB 1586 00343 BSF 06,3
0000 00344 .................... output_high(RTC_CE);
01CC 1683 00345 BSF 03,5
01CD 1106 00346 BCF 06,2
01CE 1283 00347 BCF 03,5
01CF 1506 00348 BSF 06,2
0000 00349 .................... write_rtc_byte(year,8);
01D0 081E 00350 MOVF 1E,W
01D1 00A2 00351 MOVWF 22
01D2 3008 00352 MOVLW 08
01D3 00A3 00353 MOVWF 23
01D4 2140 00354 CALL 140
0000 00355 .................... write_rtc_byte(mth,8);
01D5 081D 00356 MOVF 1D,W
01D6 00A2 00357 MOVWF 22
01D7 3008 00358 MOVLW 08
01D8 00A3 00359 MOVWF 23
01D9 2140 00360 CALL 140
0000 00361 .................... write_rtc_byte(day,8);
01DA 081C 00362 MOVF 1C,W
01DB 00A2 00363 MOVWF 22
01DC 3008 00364 MOVLW 08
01DD 00A3 00365 MOVWF 23
01DE 2140 00366 CALL 140
0000 00367 .................... write_rtc_byte(dow,4);
01DF 081F 00368 MOVF 1F,W
01E0 00A2 00369 MOVWF 22
01E1 3004 00370 MOVLW 04
01E2 00A3 00371 MOVWF 23
01E3 2140 00372 CALL 140
0000 00373 .................... write_rtc_byte(hour,8);
01E4 0820 00374 MOVF 20,W
01E5 00A2 00375 MOVWF 22
01E6 3008 00376 MOVLW 08
01E7 00A3 00377 MOVWF 23
01E8 2140 00378 CALL 140
0000 00379 .................... write_rtc_byte(min,8);
01E9 0821 00380 MOVF 21,W
01EA 00A2 00381 MOVWF 22
01EB 3008 00382 MOVLW 08
01EC 00A3 00383 MOVWF 23
01ED 2140 00384 CALL 140
0000 00385 .................... output_low(RTC_CE);
01EE 1683 00386 BSF 03,5
01EF 1106 00387 BCF 06,2
01F0 1283 00388 BCF 03,5
01F1 1106 00389 BCF 06,2
0000 00390 .................... output_low(RTC_IO);
01F2 1683 00391 BSF 03,5
01F3 1186 00392 BCF 06,3
01F4 1283 00393 BCF 03,5
01F5 1186 00394 BCF 06,3
0000 00395 .................... }
0000 00396 ....................
0000 00397 ....................
0000 00398 .................... void rtc_get_date(byte & day,byte & mth,byte & year,byte & dow) {
0000 00399 .................... byte i;
0000 00400 ....................
0000 00401 .................... output_low(RTC_CLK);
027E 1683 00402 BSF 03,5
027F 1086 00403 BCF 06,1
0280 1283 00404 BCF 03,5
0281 1086 00405 BCF 06,1
0000 00406 .................... output_low(RTC_IO);
0282 1683 00407 BSF 03,5
0283 1186 00408 BCF 06,3
0284 1283 00409 BCF 03,5
0285 1186 00410 BCF 06,3
0000 00411 .................... output_high(RTC_CE);
0286 1683 00412 BSF 03,5
0287 1106 00413 BCF 06,2
0288 1283 00414 BCF 03,5
0289 1506 00415 BSF 06,2
0000 00416 .................... year=read_rtc_byte(8);
028A 3008 00417 MOVLW 08
028B 009B 00418 MOVWF 1B
028C 2200 00419 CALL 200
028D 080D 00420 MOVF 0D,W
028E 0091 00421 MOVWF 11
0000 00422 .................... mth=read_rtc_byte(8);
028F 3008 00423 MOVLW 08
0290 009B 00424 MOVWF 1B
0291 2200 00425 CALL 200
0292 080D 00426 MOVF 0D,W
0293 0090 00427 MOVWF 10
0000 00428 .................... day=read_rtc_byte(8);
0294 3008 00429 MOVLW 08
0295 009B 00430 MOVWF 1B
0296 2200 00431 CALL 200
0297 080D 00432 MOVF 0D,W
0298 008F 00433 MOVWF 0F
0000 00434 .................... dow=read_rtc_byte(4)>>4;
0299 3004 00435 MOVLW 04
029A 009B 00436 MOVWF 1B
029B 2200 00437 CALL 200
029C 080D 00438 MOVF 0D,W
029D 0092 00439 MOVWF 12
029E 0E92 00440 SWAPF 12,F
029F 300F 00441 MOVLW 0F
02A0 0592 00442 ANDWF 12,F
0000 00443 ....................
0000 00444 .................... read_rtc_byte(8*3);
02A1 3018 00445 MOVLW 18
02A2 009B 00446 MOVWF 1B
02A3 2200 00447 CALL 200
0000 00448 .................... output_low(RTC_CE);
02A4 1683 00449 BSF 03,5
02A5 1106 00450 BCF 06,2
02A6 1283 00451 BCF 03,5
02A7 1106 00452 BCF 06,2
0000 00453 .................... output_low(RTC_IO);
02A8 1683 00454 BSF 03,5
02A9 1186 00455 BCF 06,3
02AA 1283 00456 BCF 03,5
02AB 1186 00457 BCF 06,3
0000 00458 .................... }
0000 00459 ....................
0000 00460 ....................
0000 00461 .................... void rtc_get_time(byte & hr,byte & min,byte & sec) {
0000 00462 .................... byte i;
0000 00463 ....................
0000 00464 .................... output_low(RTC_CLK);
02BC 1683 00465 BSF 03,5
02BD 1086 00466 BCF 06,1
02BE 1283 00467 BCF 03,5
02BF 1086 00468 BCF 06,1
0000 00469 .................... output_low(RTC_IO);
02C0 1683 00470 BSF 03,5
02C1 1186 00471 BCF 06,3
02C2 1283 00472 BCF 03,5
02C3 1186 00473 BCF 06,3
0000 00474 .................... output_high(RTC_CE);
02C4 1683 00475 BSF 03,5
02C5 1106 00476 BCF 06,2
02C6 1283 00477 BCF 03,5
02C7 1506 00478 BSF 06,2
0000 00479 .................... read_rtc_byte(8*3+4);
02C8 301C 00480 MOVLW 1C
02C9 009B 00481 MOVWF 1B
02CA 2200 00482 CALL 200
0000 00483 .................... hr=read_rtc_byte(8);
02CB 3008 00484 MOVLW 08
02CC 009B 00485 MOVWF 1B
02CD 2200 00486 CALL 200
02CE 080D 00487 MOVF 0D,W
02CF 0093 00488 MOVWF 13
0000 00489 .................... min=read_rtc_byte(8);
02D0 3008 00490 MOVLW 08
02D1 009B 00491 MOVWF 1B
02D2 2200 00492 CALL 200
02D3 080D 00493 MOVF 0D,W
02D4 0094 00494 MOVWF 14
0000 00495 .................... sec=read_rtc_byte(8);
02D5 3008 00496 MOVLW 08
02D6 009B 00497 MOVWF 1B
02D7 2200 00498 CALL 200
02D8 080D 00499 MOVF 0D,W
02D9 0095 00500 MOVWF 15
0000 00501 ....................
0000 00502 .................... output_low(RTC_CE);
02DA 1683 00503 BSF 03,5
02DB 1106 00504 BCF 06,2
02DC 1283 00505 BCF 03,5
02DD 1106 00506 BCF 06,2
0000 00507 .................... output_low(RTC_IO);
02DE 1683 00508 BSF 03,5
02DF 1186 00509 BCF 06,3
02E0 1283 00510 BCF 03,5
02E1 1186 00511 BCF 06,3
0000 00512 .................... }
0000 00513 ....................
0000 00514 ....................
0000 00515 ....................
0000 00516 .................... byte get_bcd() {
0000 00517 .................... char first,second;
0000 00518 ....................
0000 00519 .................... do {
0000 00520 .................... first=getc();
010B 20D4 00521 CALL 0D4
010C 080D 00522 MOVF 0D,W
010D 009C 00523 MOVWF 1C
0000 00524 .................... } while ((first<'0') || (first>'9'));
010E 3030 00525 MOVLW 30
010F 021C 00526 SUBWF 1C,W
0110 1C03 00527 BTFSS 03,0
0111 290B 00528 GOTO 10B
0112 303A 00529 MOVLW 3A
0113 021C 00530 SUBWF 1C,W
0114 1803 00531 BTFSC 03,0
0115 290B 00532 GOTO 10B
0000 00533 .................... putc(first);
0116 081C 00534 MOVF 1C,W
0117 009E 00535 MOVWF 1E
0118 20B6 00536 CALL 0B6
0000 00537 .................... first-='0';
0119 3030 00538 MOVLW 30
011A 029C 00539 SUBWF 1C,F
0000 00540 ....................
0000 00541 .................... do {
0000 00542 .................... second=getc();
011B 20D4 00543 CALL 0D4
011C 080D 00544 MOVF 0D,W
011D 009D 00545 MOVWF 1D
0000 00546 .................... } while (((second<'0') || (second>'9')) && (second!='\r'));
011E 3030 00547 MOVLW 30
011F 021D 00548 SUBWF 1D,W
0120 1C03 00549 BTFSS 03,0
0121 2926 00550 GOTO 126
0122 303A 00551 MOVLW 3A
0123 021D 00552 SUBWF 1D,W
0124 1C03 00553 BTFSS 03,0
0125 292A 00554 GOTO 12A
0126 300D 00555 MOVLW 0D
0127 021D 00556 SUBWF 1D,W
0128 1D03 00557 BTFSS 03,2
0129 291B 00558 GOTO 11B
0000 00559 .................... putc(second);
012A 081D 00560 MOVF 1D,W
012B 009E 00561 MOVWF 1E
012C 20B6 00562 CALL 0B6
0000 00563 ....................
0000 00564 .................... if(second=='\r')
012D 300D 00565 MOVLW 0D
012E 021D 00566 SUBWF 1D,W
012F 1D03 00567 BTFSS 03,2
0130 2935 00568 GOTO 135
0000 00569 .................... return(first);
0131 081C 00570 MOVF 1C,W
0132 008D 00571 MOVWF 0D
0133 293F 00572 GOTO 13F
0000 00573 .................... else
0134 293F 00574 GOTO 13F
0000 00575 .................... return((first<<4)|(second-'0'));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -