📄 kclock2.lst
字号:
717 015F CD 5C LD SampleCount1+2,EA
718 0161 DC FE LD EA,YZ ; MSB
719 0163 CD 5A LD SampleCount1,EA ;
720 0165 D1 85 BITS HaveSample1 ; Set Flag for Sample 1 reach
721 0167 1A JR INT0_Int1 ;
722
723 0168 StoreSample0 ;
724 0168 DC FC LD EA,WX ; LSB
725 016A CD 58 LD SampleCount0+2,EA
726 016C DC FE LD EA,YZ ; MSB
727 016E CD 56 LD SampleCount0,EA ;
728 0170 C1 85 BITS HaveSample0 ; Set Flag for Sample 0 reach
729
730 0172 INT0_Int1
731 0172 2A POP HL ;
732 0173 E1 26 BITS OvrAbMaxNow ; Exact absolute max
733 0175 D9 02 CPSE L,#0 ;
734 0177 1E JR INT0_Int3 ;
735
736 0178 81 C7 LD EA,#AbsMaxCnt/256-1
737 017A DC BE SBS EA,YZ ; Chk MSB
738 017C 17 JR INT0_Int2 ;
739 017D 25 REF RLD_HLEA
740 017E 82 INCS HL ; if MSB = AbsMaxCnt/256,
741 017F 16 JR INT0_Int3 ; chk LSB
742 0180 81 00 LD EA,#AbsMaxCnt%256
743
744 0182 DC BC SBS EA,WX ;
745 0184 INT0_Int2
746 0184 E0 26 BITR OvrAbMaxNow ; Not Exact absolute max
747 0186 INT0_Int3
748 0186 FE 8E BITR IRQ0 ; Clear INT0 Interrupt Request Flag
749 0188 77 REF RIRET_SB ;
750
751 ;----------------------------------------------------------------------------
752 ; F: INTT0 Interrupt for Timer/Counter 0 Compare Match
753 ; I: CntPeriodNow = 0: DischargePeriod
754 ; 1: CountingPeriod
755 ; N: When enter INTT0_Int, IS0, IS1 = 0, 1
756 0189 INTT0_Int
757 0189 73 REF RPush_SB ;
758
759 018A DD 52 SRB RegisterCount ;
760 018C 20 REF RSMB_Variable ;
761 018D D3 21 BTST CntPeriodNow ;
762 018F 91 A2 JPS DischargePeriod ;
763
764 ;v***** IMPORTANT - COUNTING PART *****v
765 0191 CountingPeriod ;
766 0191 86 INCS YZ ; MSB for Counting Value
767 0192 11 JR INTT0_IntE ;
768 0193 5A INCS L ; If overflow for 16-bit count number, INCS L
769 ;^*************************************^
770 0194 INTT0_IntE
771 0194 77 REF RIRET_SB ;
772
773 ; if L overflow, display "EE"
774 0195 C2 2B BTSF CntOvrflow ;
775 0197 77 REF RIRET_SB ;
776 0198 C1 2B BITS CntOvrflow ;
777 019A E1 26 BITS OvrAbMaxNow ;
778 019C B2 LD A,#2 ; Set OvrWtNow & Clear Others Flags
779 019D 89 27 LD OperFlg8,A ;
780 019F EC CD CALLS RL_OWT ;
781 01A1 77 REF RIRET_SB ;
782 ;---------------------------------------
783 01A2 DischargePeriod
784 01A2 CE 5E LD EA,CntTCNT ;
785 01A4 DC D8 DECS EA ;
786 01A6 91 C0 JPS DischargePeriod8
787
788 ;v***** IMPORTANT TO DO FIRST *****v
789 01A8 21 REF RSMB_MemMapIO ; Select Memory Bank
790 01A9 F9 C1 BTST STOPCNT_PIN ; check interrupt pin is high?
791 01AB 1A JR DischargePeriod4 ; when low, restart timer.
792
793 01AC 22 REF RSMB_LCD ;
794 01AD C1 FB BITS DISCHARGE_PIN ;
795 01AF 20 REF RSMB_Variable ;
796 01B0 D1 21 BITS CntPeriodNow ; Set to Counting Period
797 01B2 87 00 LD YZ,#0 ; Clear MSB
798 01B4 D9 0A LD L,#0 ;
799 01B6 DischargePeriod4
800 01B6 21 REF RSMB_MemMapIO ; Select Memory Bank
801 01B7 81 7C LD EA,#01111100b ; Enable T/C0
802 01B9 CD 90 LD TMOD0,EA ; clear TCNT0 & Restart
803 01BB FE 8C BITR IRQT0 ; Clear Timer/Counter Request Flag
804 ;^*********************************^
805
806 01BD 20 REF RSMB_Variable ;
807 01BE 81 57 LD EA,#DischargeDelay
808
809 01C0 DischargePeriod8
810 01C0 CD 5E LD CntTCNT,EA ;
811 01C2 FE 8C BITR IRQT0 ; Clear Timer/Counter Request Flag
812 01C4 77 REF RIRET_SB ;
813
814 ;============================================================================
815
816 ;***********************************************************
817 ; F: Chk MaB key
818 ; I: KeyKGLB, KeyFlozML, KeyHold, KeyHeldNow
819 ;
820 01C5 ChkMaBkey
821 01C5 C2 21 BTSF KeyHeldNow ; if key held, exit
822 01C7 C5 RET ;
823 01C8 8C 75 LD A,MaB_Key ;
824 01CA 48 DECS A ;
825 01CB 11 JR ChkMaBkey1 ;
826 01CC C5 RET ;
827 01CD ChkMaBkey1
828 01CD F3 26 BTST IdleBatLowNow ; if battery low now, skip
829 01CF 14 JR ChkMaBkey2 ;
830 01D0 B0 LD A,#0 ;
831 01D1 89 75 LD MaB_Key,A ;
832 01D3 C5 RET
833 01D4 ChkMaBkey2
834 01D4 EA EB CALLS Dly60 ; Key delay 600ms
835 01D6 C2 75 BTSF KeyKGLB ;
836 01D8 19 JR MaB_KGLB ;
837
838 01D9 E2 75 BTSF KeyHold ;
839 01DB 92 0E JPS MaB_Hold ;
840
841 01DD D2 75 BTSF KeyFlozML ;
842 01DF 91 FE JPS MaB_FlozML
843 01E1 C5 RET ;
844
845 ;***********************************************************
846 ; F: kg/lb button
847 ; O: KeyKGLB
848 ; N: MaB
849 ;
850 01E2 MaB_KGLB
851 01E2 E2 21 BTSF CntDspNow ; if CntDspNow = 1, exit
852 01E4 C5 RET ;
853 01E5 C0 75 BITR KeyKGLB ;
854
855 01E7 E2 24 BTSF HoldEn ; if hold enable, no funciton
856 01E9 C5 RET
857
858 01EA SetSolMeasure
859 01EA F3 20 BTST SolLiqMode ;
860 01EC 91 F1 JPS SetUnit ;
861 01EE F0 20 BITR SolLiqMode ; Set Solid mode
862 01F0 17 JR RstMode ;
863 01F1 SetUnit
864 01F1 E7 SCF ;
865 01F2 83 20 LD HL,#OperFlg1 ;
866 01F4 F7 20 BXOR C,@H+UnitMode ; switch % g/lb
867 01F6 FC 20 LDB @H+UnitMode,C ;
868
869 01F8 RstMode
870 01F8 EA B3 CALLS SetFactoryMode ;
871 01FA 63 REF RSetBnd ;
872
873 01FB EF EE CALLS MainCalculate2 ;
874 01FD C5 RET
875 ;-----------------------------------
876 ; F: fl.oz/ml button
877 ; O: SolLiqMode, UnitMode
878 ; N: MaB
879 ;
880 01FE MaB_FlozML
881 01FE E2 21 BTSF CntDspNow ; if CntDspNow = 1, exit
882 0200 C5 RET ;
883 0201 D0 75 BITR KeyFlozML ;
884
885 0203 E2 24 BTSF HoldEn ; if hold enable, no funciton
886 0205 C5 RET
887
888 0206 SetLiqMeasure
889 0206 F2 20 BTSF SolLiqMode ;
890 0208 91 F1 JPS SetUnit ;
891 020A F1 20 BITS SolLiqMode ; Set Liquid mode
892 020C 91 F8 JPS RstMode ;
893
894 ;--------------------------------------------------------
895 ; F: Hold key operation
896 020E MaB_Hold
897 020E E0 75 BITR KeyHold
898
899 0210 E2 24 BTSF HoldEn
900 0212 1B JR IsHoldKey2
901 0213 IsHoldKey1
902 0213 E1 24 BITS HoldEn
903 0215 C1 88 BITS Icon_Hold ; Indicate Hold is enable now
904 0217 BC LD A,#HoldChkTime ; Reset Hold check interval timer
905 0218 89 3F LD HoldTimer,A ;
906 021A B0 LD A,#0
907 021B 89 7F LD HoldState,A
908 021D 16 JR IsHoldKey3 ;
909 021E IsHoldKey2
910 021E E0 24 BITR HoldEn
911 0220 C0 88 BITR Icon_Hold ; Indicate Hold is disable
912 0222 D0 7F BITR HoldRd ; Set this flag to allow update the display
913 0224 IsHoldKey3
914 0224 C5 RET
915 ;***********************************************************
916 ; O: KeyHeldNow
917 ; N: xxxx0000 - EA : Key scan input
918 ; |||'-- Off button
919 ; ||'--- kg/lb button
920 ; |'---- fl.oz/ml button
921 ; '----- hold button
922 ;
923 0225 ChkKeyPressed
924 0225 DC F6 LD YZ,EA ;
925 0227 ED 40 CALLS SetST_RL ; reset sleep timer
926
927 0229 47 REF RSkipSRC_YZ ;
928 022A 91 10 JPS Sleep ; Off button
929 022C 47 REF RSkipSRC_YZ ;
930 022D 92 38 JPS IsKeyKGLB ; kg/lb button
931 022F 47 REF RSkipSRC_YZ ;
932 0230 92 3F JPS IsKeyFLOZML ; fl.oz/ml button
933 0232 47 REF RSkipSRC_YZ ;
934 0233 92 46 JPS IsHoldKey ; Hold key button
935
936 0235 ChkKeyPress9
937 0235 C1 21 BITS KeyHeldNow ;
938 0237 ChkKeyPressE
939 0237 C5 RET
940
941 ;***********************************************************
942 ; F: kg/lb button
943 ; O: KeyKGLB
944 ; N: MaB
945 ;
946 0238 IsKeyKGLB
947 0238 C3 21 BTST KeyHeldNow ; if key held,
948 023A C1 75 BITS KeyKGLB ;
949 023C DB 02 35 JP ChkKeyPress9 ; exit
950
951 ;***********************************************************
952 ; F: kg/lb button
953 ; O: KeyFlozML
954 ; N: MaB
955 ;
956 023F IsKeyFLOZML
957 023F C3 21 BTST KeyHeldNow ; if key held,
958 0241 D1 75 BITS KeyFlozML ;
959 0243 DB 02 35 JP ChkKeyPress9 ; exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -