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