📄 testn8.lst
字号:
484 00BA 90 CB JPS INTB_IntC ; if change, jump
485 00BC C2 24 BTSF SleepNow ; Goto Sleep if timeout
486 00BE 91 12 JPS Sleep1 ;
487 00C0 CA 3C INCS SleepTimL ;
488 00C2 18 JR INTB_IntC ;
489 00C3 CA 3D INCS SleepTimL+1 ;
490 00C5 15 JR INTB_IntC
491 00C6 CA 3E INCS SleepTimH ;
492 00C8 12 JR INTB_IntC
493 00C9 C1 24 BITS SleepNow ; SleepTim overflow, then set sleep flag
494
495 00CB INTB_IntC
496 00CB B0 LD A,#0 ;
497 00CC 89 35 LD BCNT_1s_H,A ; Reload 1s timer
498 00CE 81 4B LD EA,#BCNT1s_RL&0ffh
499 00D0 INTB_Int0_1
500 00D0 CD 36 LD BCNT_1s_M,EA ;
501
502 00D2 INTB_Int0_2
503 00D2 CA 34 INCS BCNT_36ms ; BCNT Count from 0 -> 15 -> 0 -> 15 ....
504 00D4 77 REF RIRET_SB ;
505 00D5 INTB_36ms
506 ;-----
507 00D5 INTB_Int1_1
508 00D5 CA 29 INCS BCNT_183ms ; Check 183ms interval reached?
509 00D7 90 E7 JPS INTB_Int2_1 ;
510
511 00D9 INTB_183ms
512 00D9 BB LD A,#BCNT183ms_RL ;
513 00DA 89 29 LD BCNT_183ms,A ; Reload 183ms timer
514
515 00DC INTB_Int1_2
516 00DC C3 25 BTST AutoZeroEn ; Chk Auto-revert to zero enabled or not
517 00DE 18 JR INTB_Int1_3 ; if not, jump
518 00DF E3 27 BTST UdrWtNow ; Is Now UnderWeight
519 00E1 15 JR INTB_Int1_3 ;
520 00E2 CA 4B INCS AutoZeroTim ;
521 00E4 12 JR INTB_Int1_3 ;
522 00E5 D1 23 BITS AutoZeroNow ; Enable Reset to Zero
523
524 00E7 INTB_Int1_3
525
526 ; LD A,Tag2sec ;
527 ; REF RCPSE_A0 ; if Tag2sec <> 0,
528 ; INCS Tag2sec ; Incs Tag2sec
529 ;--------------------------
530 00E7 INTB_Int2_1
531 00E7 CA 2A INCS BCNT_500ms ; chk 512ms reached?
532 00E9 77 REF RIRET_SB ;
533
534 00EA INTB_500ms
535 00EA B2 LD A,#BCNT500ms_RL ; Reload 512ms Timer
536 00EB 89 2A LD BCNT_500ms,A ;
537 ;--------------------------
538 00ED C3 22 BTST Chge4stepNow
539 00EF 17 JR INTB_Int3_1
540 00F0 CA 8A INCS Chge4stepTimer
541 00F2 14 JR INTB_Int3_1
542 00F3 C0 22 BITR Chge4stepNow ; Set sleep timer delay end
543 00F5 E1 2B BITS ChgeSlpTmrNow
544 00F7 INTB_Int3_1
545 00F7 E3 24 BTST HoldEn ; Check for hold enable
546 00F9 1B JR INTB_Int3_2 ;
547 00FA D2 7F BTSF HoldRd ; Check the reading is not hold
548 00FC 18 JR INTB_Int3_2 ;
549 00FD C2 7F BTSF HoldStableChk ; whether the routine executed or not
550 00FF 15 JR INTB_Int3_2 ;
551 0100 CA 3F INCS HoldTimer ;
552 0102 12 JR INTB_Int3_2 ;
553 0103 C1 7F BITS HoldStableChk ; chk hold stable time interval reach
554 0105 INTB_Int3_2
555 0105 CA 6E INCS Tag2sec
556 0107 12 JR INTB_Int3_3
557 0108 C1 23 BITS CreepZero ;
558
559 010A INTB_Int3_3
560 010A CA 79 INCS CreepTimer ; CREEPING TIMER
561 010C 77 REF RIRET_SB
562 010D D1 24 BITS TimrFinished ;
563 010F 77 REF RIRET_SB ;
564 ;----------------------------------------------------------------------------
565 ;
566 0110 Sleep
567 0110 EA E7 CALLS Dly20 ; simlute the Buzzer tone delay
568 ; REF RKeyTone ;
569 0112 Sleep1
570 0112 FE B2 DI ;
571 0114 Sleep2
572 0114 21 REF RSMB_MemMapIO ;
573
574 0115 B0 LD A,#0 ;
575 0116 89 B8 LD INTA,A ; Disable Basic Timer Interrupt(INTB)
576 0118 89 BA LD INTB,A ; Disable Watch Timer
577 011A 89 BC LD INTC,A ; Disable Timer/Counter Interrupt(INTT0)
578 011C 89 BE LD INTE,A ; Disable INT0 Pin Interrupt
579 ; Disable INT1 Pin Interrupt
580 011E 89 8E LD LCON,A ; Display off
581
582 0120 22 REF RSMB_LCD ; Select LCD Memory Bank1
583 0121 C0 FA BITR POWERON_PIN ; Power Off for Chip
584
585 0123 A0 NOP
586 0124 0E JR $-1 ; Dead loop until no power supply
587
588 ;----------------------------------------------------------------------------
589 ; F: Chk "Off" key press
590 ; O: SMB = Variable Bank
591 ; D: A
592 0125 ChkOffButton
593 0125 21 REF RSMB_MemMapIO ;
594 0126 8C F6 LD A,KEYCOL ;
595 0128 20 REF RSMB_Variable ;
596 0129 DD 11 AND A,#0001b ;
597 012B 48 DECS A ;
598 012C C5 RET ;
599 012D 91 10 JPS Sleep ; Off button
600
601 ;----------------------------------------------------------------------------
602 ; F: External INT0 pin Interrupt
603 ; N: When enter INT0_Int, IS0, IS1 = 1, 0
604 012F INT0_Int
605 012F 73 REF RPush_SB ;
606
607 ;v***** IMPORTANT TO DO FIRST *****v
608 0130 DD 52 SRB RegisterCount ;
609 0132 21 REF RSMB_MemMapIO ;
610 0133 81 70 LD EA,#01110000b ; Stop TCNT0
611 0135 CD 90 LD TMOD0,EA ;
612 0137 22 REF RSMB_LCD ;
613 0138 C0 FB BITR DISCHARGE_PIN ;
614 ;^*********************************^
615
616 013A 21 REF RSMB_MemMapIO ;
617 013B CE 94 LD EA,TCNT0 ; Load LSB
618 013D 26 REF RLD_WXEA ; Store LSB to WX
619 013E 81 7C LD EA,#01111100b ; Enable T/C0
620 0140 CD 90 LD TMOD0,EA ; clear TCNT0 & Restart
621
622 0142 20 REF RSMB_Variable ;
623 0143 D0 21 BITR CntPeriodNow ;
624
625 0145 F9 8C BTST IRQT0 ;
626 0147 15 JR StoreSample ;
627 0148 86 INCS YZ ;
628 0149 13 JR StoreSample ;
629 014A 5A INCS L ;
630 014B FE 8C BITR IRQT0 ; Clear Timer/Counter Request Flag
631
632 014D StoreSample
633 014D 2B PUSH HL ;
634 014E 83 85 LD HL,#HaveData ;
635
636 0150 F4 35 LDB C,@H+PermitUpdate
637 0152 D7 BTST C ; Chk Permit to update sample or not?
638 0153 12 JR StorePermit ;
639 0154 91 72 JPS INT0_Int1 ;
640 0156 StorePermit
641 0156 F4 25 LDB C,@H+UpdateSample0
642 0158 D6 CCF ;
643 0159 FC 25 LDB @H+UpdateSample0,C
644 015B D7 BTST C ; Chk where Sample to store?
645 015C 1B JR StoreSample0 ;
646
647 015D StoreSample1
648 015D DC FC LD EA,WX ; LSB
649 015F CD 5C LD SampleCount1+2,EA
650 0161 DC FE LD EA,YZ ; MSB
651 0163 CD 5A LD SampleCount1,EA ;
652 0165 D1 85 BITS HaveSample1 ; Set Flag for Sample 1 reach
653 0167 1A JR INT0_Int1 ;
654
655 0168 StoreSample0 ;
656 0168 DC FC LD EA,WX ; LSB
657 016A CD 58 LD SampleCount0+2,EA
658 016C DC FE LD EA,YZ ; MSB
659 016E CD 56 LD SampleCount0,EA ;
660 0170 C1 85 BITS HaveSample0 ; Set Flag for Sample 0 reach
661
662 0172 INT0_Int1
663 0172 2A POP HL ;
664 0173 E1 26 BITS OvrAbMaxNow ; Exact absolute max
665 0175 D9 02 CPSE L,#0 ;
666 0177 1E JR INT0_Int3 ;
667
668 0178 81 C7 LD EA,#AbsMaxCnt/256-1
669 017A DC BE SBS EA,YZ ; Chk MSB
670 017C 17 JR INT0_Int2 ;
671 017D 25 REF RLD_HLEA
672 017E 82 INCS HL ; if MSB = AbsMaxCnt/256,
673 017F 16 JR INT0_Int3 ; chk LSB
674 0180 81 00 LD EA,#AbsMaxCnt%256
675
676 0182 DC BC SBS EA,WX ;
677 0184 INT0_Int2
678 0184 E0 26 BITR OvrAbMaxNow ; Not Exact absolute max
679 0186 INT0_Int3
680 0186 FE 8E BITR IRQ0 ; Clear INT0 Interrupt Request Flag
681 0188 77 REF RIRET_SB ;
682
683 ;----------------------------------------------------------------------------
684 ; F: INTT0 Interrupt for Timer/Counter 0 Compare Match
685 ; I: CntPeriodNow = 0: DischargePeriod
686 ; 1: CountingPeriod
687 ; N: When enter INTT0_Int, IS0, IS1 = 0, 1
688 0189 INTT0_Int
689 0189 73 REF RPush_SB ;
690
691 018A DD 52 SRB RegisterCount ;
692 018C 20 REF RSMB_Variable ;
693 018D D3 21 BTST CntPeriodNow ;
694 018F 91 A2 JPS DischargePeriod ;
695
696 ;v***** IMPORTANT - COUNTING PART *****v
697 0191 CountingPeriod ;
698 0191 86 INCS YZ ; MSB for Counting Value
699 0192 11 JR INTT0_IntE ;
700 0193 5A INCS L ; If overflow for 16-bit count number, INCS L
701 ;^*************************************^
702 0194 INTT0_IntE
703 0194 77 REF RIRET_SB ;
704
705 ; if L overflow, display "EE"
706 0195 C2 2B BTSF CntOvrflow ;
707 0197 77 REF RIRET_SB ;
708 0198 C1 2B BITS CntOvrflow ;
709 019A E1 26 BITS OvrAbMaxNow ;
710 019C B2 LD A,#2 ; Set OvrWtNow & Clear Others Flags
711 019D 89 27 LD OperFlg8,A ;
712 019F EC CB CALLS RL_OWT ;
713 01A1 77 REF RIRET_SB ;
714 ;---------------------------------------
715 01A2 DischargePeriod
716 01A2 CE 5E LD EA,CntTCNT ;
717 01A4 DC D8 DECS EA ;
718 01A6 91 C0 JPS DischargePeriod8
719
720 ;v***** IMPORTANT TO DO FIRST *****v
721 01A8 21 REF RSMB_MemMapIO ; Select Memory Bank
722 01A9 F9 C1 BTST STOPCNT_PIN ; check interrupt pin is high?
723 01AB 1A JR DischargePeriod4 ; when low, restart timer.
724
725 01AC 22 REF RSMB_LCD ;
726 01AD C1 FB BITS DISCHARGE_PIN ;
727 01AF 20 REF RSMB_Variable ;
728 01B0 D1 21 BITS CntPeriodNow ; Set to Counting Period
729 01B2 87 00 LD YZ,#0 ; Clear MSB
730 01B4 D9 0A LD L,#0 ;
731 01B6 DischargePeriod4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -