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

📄 kclock2.lst

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