📄 kclock2.lst
字号:
474 0074 4A 6B RPutDec TCALL PutDec
475
476 0076 DD 67 RPush_SB PUSH SB
477
478 0078 00 0F RRET_HLEA TJP RETHLEA
479 007A 00 12 RRET_WXHLEA TJP RETWXHLEA
480 007C 00 16 RRET_YZWXHLEA TJP RETYZWXHLEA
481 007E 00 0C RIRET_SB TJP IRETSB
482
483 ;----------------------------------------------------------------------------
484 ;
485 0080 .origin Main2Loop
486
487 ;----------------------------------------------------------------------------
488 ; F: On/Zero Button(MaB)
489 ; I: WeightTareNow
490 ; O: WeightTareNow
491 ; N: Rising edge when release key(MaB)
492 ; When enter INT1_Int, IS0, IS1 = 1, 0
493 ;
494 0080 INT1_Int
495 0080 FE AE BITR IRQ1 ;
496 0082 FE A0 BITR IS0 ;
497 0084 73 REF RPush_SB ;
498 0085 20 REF RSMB_Variable ;
499 0086 E2 22 BTSF CalibrateOn ;
500 0088 E0 21 BITR CntDspNow ;
501 ; REF RSMB_MemMapIO ;
502 ;INT1_Int1
503 ; BTST ONZERO_PIN
504 ; JR INT1_Int1
505 ; REF RSMB_Variable ;
506 008A F1 21 BITS WeightTareNow ; Set flag to weight tare
507 008C 77 REF RIRET_SB ;
508
509 ;----------------------------------------------------------------------------
510 ; F: INTB Interrupt for Basic Timer Overflow
511 ; N: Interrupt interval = 2.2886.ms
512 ; when enter into INTB_Int, IS0, IS1 = 1, 0
513 008D INTB_Int
514 008D FE 88 BITR IRQB ;
515 008F FE A0 BITR IS0 ;
516
517 0091 73 REF RPush_SB ;
518 0092 DD 53 SRB RegisterINTB ;
519 0094 20 REF RSMB_Variable ;
520
521 0095 E2 22 BTSF CalibrateOn ; If Calibrate On, skip sleep time
522 0097 90 D2 JPS INTB_Int0_2 ; & Timer counting
523
524 0099 CE 36 LD EA,BCNT_1s_M ;
525 009B C9 01 ADS EA,#1 ;
526 009D 90 D0 JPS INTB_Int0_1 ;
527 009F CA 35 INCS BCNT_1s_H ; never skip
528 00A1 C2 35 BTSF BCNT_1s_H.0 ;
529 00A3 90 D0 JPS INTB_Int0_1 ;
530 00A5 INTB_1000ms
531
532 00A5 D3 7F BTST HoldRd ; Check for hold reading in progress
533 00A7 1C JR INTB_IntA ;
534
535 00A8 CA 3F INCS HoldTimer ; Check hold reading timeout
536 00AA 19 JR INTB_IntA ;
537 00AB D0 7F BITR HoldRd ;
538 00AD C0 7F BITR HoldStableChk ;
539 00AF F1 7F BITS HoldNotAllow ; Hold is not allow unless reading change
540 00B1 BC LD A,#HoldChkTime ; Reset timer
541 00B2 89 3F LD HoldTimer,A ;
542 00B4 INTB_IntA
543 00B4 INTB_IntB
544 00B4 E2 25 BTSF AutoOffEn ; Chk Auto-power off enabled or not
545 00B6 90 CB JPS INTB_IntC ; if not, jump
546 00B8 C2 22 BTSF Chge4stepNow ; Chk 4 step changing
547 00BA 90 CB JPS INTB_IntC ; if change, jump
548 00BC C2 24 BTSF SleepNow ; Goto Sleep if timeout
549 00BE 91 12 JPS Sleep1 ;
550 00C0 CA 3C INCS SleepTimL ;
551 00C2 18 JR INTB_IntC ;
552 00C3 CA 3D INCS SleepTimL+1 ;
553 00C5 15 JR INTB_IntC
554 00C6 CA 3E INCS SleepTimH ;
555 00C8 12 JR INTB_IntC
556 ; Kwan Nov 06, 2003
557 ; remark it for non-stop operation
558 ; BITS SleepNow ; SleepTim overflow, then set sleep flag
559 00C9 A0 nop
560 00CA A0 nop
561 ; end kwan.
562 ;
563 00CB INTB_IntC
564 00CB B0 LD A,#0 ;
565 00CC 89 35 LD BCNT_1s_H,A ; Reload 1s timer
566 00CE 81 4B LD EA,#BCNT1s_RL&0ffh
567 00D0 INTB_Int0_1
568 00D0 CD 36 LD BCNT_1s_M,EA ;
569
570 00D2 INTB_Int0_2
571 00D2 CA 34 INCS BCNT_36ms ; BCNT Count from 0 -> 15 -> 0 -> 15 ....
572 00D4 77 REF RIRET_SB ;
573 00D5 INTB_36ms
574 ;-----
575 00D5 INTB_Int1_1
576 00D5 CA 29 INCS BCNT_183ms ; Check 183ms interval reached?
577 00D7 90 E7 JPS INTB_Int2_1 ;
578
579 00D9 INTB_183ms
580 00D9 BB LD A,#BCNT183ms_RL ;
581 00DA 89 29 LD BCNT_183ms,A ; Reload 183ms timer
582
583 00DC INTB_Int1_2
584 00DC C3 25 BTST AutoZeroEn ; Chk Auto-revert to zero enabled or not
585 00DE 18 JR INTB_Int1_3 ; if not, jump
586 00DF E3 27 BTST UdrWtNow ; Is Now UnderWeight
587 00E1 15 JR INTB_Int1_3 ;
588 00E2 CA 4B INCS AutoZeroTim ;
589 00E4 12 JR INTB_Int1_3 ;
590 00E5 D1 23 BITS AutoZeroNow ; Enable Reset to Zero
591
592 00E7 INTB_Int1_3
593
594 ; LD A,Tag2sec ;
595 ; REF RCPSE_A0 ; if Tag2sec <> 0,
596 ; INCS Tag2sec ; Incs Tag2sec
597 ;--------------------------
598 00E7 INTB_Int2_1
599 00E7 CA 2A INCS BCNT_500ms ; chk 512ms reached?
600 00E9 77 REF RIRET_SB ;
601
602 00EA INTB_500ms
603 00EA B2 LD A,#BCNT500ms_RL ; Reload 512ms Timer
604 00EB 89 2A LD BCNT_500ms,A ;
605 ;--------------------------
606 00ED C3 22 BTST Chge4stepNow
607 00EF 17 JR INTB_Int3_1
608 00F0 CA 8A INCS Chge4stepTimer
609 00F2 14 JR INTB_Int3_1
610 00F3 C0 22 BITR Chge4stepNow ; Set sleep timer delay end
611 00F5 E1 2B BITS ChgeSlpTmrNow
612 00F7 INTB_Int3_1
613 00F7 E3 24 BTST HoldEn ; Check for hold enable
614 00F9 1B JR INTB_Int3_2 ;
615 00FA D2 7F BTSF HoldRd ; Check the reading is not hold
616 00FC 18 JR INTB_Int3_2 ;
617 00FD C2 7F BTSF HoldStableChk ; whether the routine executed or not
618 00FF 15 JR INTB_Int3_2 ;
619 0100 CA 3F INCS HoldTimer ;
620 0102 12 JR INTB_Int3_2 ;
621 0103 C1 7F BITS HoldStableChk ; chk hold stable time interval reach
622 0105 INTB_Int3_2
623 0105 CA 6E INCS Tag2sec
624 0107 12 JR INTB_Int3_3
625 0108 C1 23 BITS CreepZero ;
626
627 010A INTB_Int3_3
628 010A CA 79 INCS CreepTimer ; CREEPING TIMER
629 010C 77 REF RIRET_SB
630 010D D1 24 BITS TimrFinished ;
631 010F 77 REF RIRET_SB ;
632 ;----------------------------------------------------------------------------
633 ;
634 0110 Sleep
635 0110 EA E9 CALLS Dly20 ; simlute the Buzzer tone delay
636 ; REF RKeyTone ;
637 0112 Sleep1
638 0112 FE B2 DI ;
639 0114 Sleep2
640 0114 21 REF RSMB_MemMapIO ;
641
642 0115 B0 LD A,#0 ;
643 0116 89 B8 LD INTA,A ; Disable Basic Timer Interrupt(INTB)
644 0118 89 BA LD INTB,A ; Disable Watch Timer
645 011A 89 BC LD INTC,A ; Disable Timer/Counter Interrupt(INTT0)
646 011C 89 BE LD INTE,A ; Disable INT0 Pin Interrupt
647 ; Disable INT1 Pin Interrupt
648 011E 89 8E LD LCON,A ; Display off
649
650 0120 22 REF RSMB_LCD ; Select LCD Memory Bank1
651 0121 C0 FA BITR POWERON_PIN ; Power Off for Chip
652
653 0123 A0 NOP
654 0124 0E JR $-1 ; Dead loop until no power supply
655
656 ;----------------------------------------------------------------------------
657 ; F: Chk "Off" key press
658 ; O: SMB = Variable Bank
659 ; D: A
660 0125 ChkOffButton
661 0125 21 REF RSMB_MemMapIO ;
662 0126 8C F6 LD A,KEYCOL ;
663 0128 20 REF RSMB_Variable ;
664 0129 DD 11 AND A,#0001b ;
665 012B 48 DECS A ;
666 012C C5 RET ;
667 012D 91 10 JPS Sleep ; Off button
668
669 ;----------------------------------------------------------------------------
670 ; F: External INT0 pin Interrupt
671 ; N: When enter INT0_Int, IS0, IS1 = 1, 0
672 012F INT0_Int
673 012F 73 REF RPush_SB ;
674
675 ;v***** IMPORTANT TO DO FIRST *****v
676 0130 DD 52 SRB RegisterCount ;
677 0132 21 REF RSMB_MemMapIO ;
678 0133 81 70 LD EA,#01110000b ; Stop TCNT0
679 0135 CD 90 LD TMOD0,EA ;
680 0137 22 REF RSMB_LCD ;
681 0138 C0 FB BITR DISCHARGE_PIN ;
682 ;^*********************************^
683
684 013A 21 REF RSMB_MemMapIO ;
685 013B CE 94 LD EA,TCNT0 ; Load LSB
686 013D 26 REF RLD_WXEA ; Store LSB to WX
687 013E 81 7C LD EA,#01111100b ; Enable T/C0
688 0140 CD 90 LD TMOD0,EA ; clear TCNT0 & Restart
689
690 0142 20 REF RSMB_Variable ;
691 0143 D0 21 BITR CntPeriodNow ;
692
693 0145 F9 8C BTST IRQT0 ;
694 0147 15 JR StoreSample ;
695 0148 86 INCS YZ ;
696 0149 13 JR StoreSample ;
697 014A 5A INCS L ;
698 014B FE 8C BITR IRQT0 ; Clear Timer/Counter Request Flag
699
700 014D StoreSample
701 014D 2B PUSH HL ;
702 014E 83 85 LD HL,#HaveData ;
703
704 0150 F4 35 LDB C,@H+PermitUpdate
705 0152 D7 BTST C ; Chk Permit to update sample or not?
706 0153 12 JR StorePermit ;
707 0154 91 72 JPS INT0_Int1 ;
708 0156 StorePermit
709 0156 F4 25 LDB C,@H+UpdateSample0
710 0158 D6 CCF ;
711 0159 FC 25 LDB @H+UpdateSample0,C
712 015B D7 BTST C ; Chk where Sample to store?
713 015C 1B JR StoreSample0 ;
714
715 015D StoreSample1
716 015D DC FC LD EA,WX ; LSB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -