⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sam2_m.l

📁 用SAM72N9写的电子秤文档
💻 L
📖 第 1 页 / 共 5 页
字号:
  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 + -