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

📄 samtestc.l

📁 用SAM72N9写的电子秤文档
💻 L
📖 第 1 页 / 共 5 页
字号:
  718  012F   26         	REF     RLD_WXEA        ; Store LSB to WX
  719  0130   81 7C      	LD	EA,#01111100b	; Enable T/C0
  720  0132   CD 90      	LD	TMOD0,EA        ; clear TCNT0 & Restart
  721                    
  722  0134   20         	REF	RSMB_Variable	;
  723  0135   D0 21      	BITR	CntPeriodNow	;
  724                    
  725  0137   F9 8C      	BTST	IRQT0		;
  726  0139   15         	JR	StoreSample	;
  727  013A   86         	INCS	YZ		;
  728  013B   13         	JR	StoreSample	;
  729  013C   5A         	INCS	L		;	
  730  013D   FE 8C      	BITR	IRQT0		; Clear Timer/Counter Request Flag
  731                    	
  732  013F              StoreSample
  733  013F   2B         	PUSH	HL		;
  734  0140   83 85      	LD	HL,#HaveData	;
  735                    	
  736  0142   F4 35      	LDB	C,@H+PermitUpdate
  737  0144   D7         	BTST	C		; Chk Permit to update sample or not?
  738  0145   12         	JR	StorePermit	;
  739  0146   91 64      	JPS	INT0_Int1	;
  740  0148              StorePermit	
  741  0148   F4 25      	LDB	C,@H+UpdateSample0
  742  014A   D6         	CCF			;
  743  014B   FC 25      	LDB	@H+UpdateSample0,C
  744  014D   D7         	BTST	C		; Chk where Sample to store?
  745  014E   1B         	JR	StoreSample0	;
  746                    
  747  014F              StoreSample1
  748  014F   DC FC      	LD	EA,WX		; LSB
  749  0151   CD 5C      	LD	SampleCount1+2,EA
  750  0153   DC FE      	LD	EA,YZ		; MSB
  751  0155   CD 5A      	LD	SampleCount1,EA	;
  752  0157   D1 85      	BITS	HaveSample1	; Set Flag for Sample 1 reach
  753  0159   1A         	JR	INT0_Int1	;
  754                    
  755  015A              StoreSample0			;
  756  015A   DC FC      	LD	EA,WX		; LSB
  757  015C   CD 58      	LD	SampleCount0+2,EA
  758  015E   DC FE      	LD	EA,YZ		; MSB
  759  0160   CD 56      	LD	SampleCount0,EA	;
  760  0162   C1 85      	BITS	HaveSample0	; Set Flag for Sample 0 reach
  761                    
  762  0164              INT0_Int1
  763  0164   2A         	POP	HL		;
  764  0165   E1 26      	BITS	OvrAbMaxNow	; Exact absolute max
  765  0167   D9 02      	CPSE	L,#0		;
  766  0169   1E         	JR	INT0_Int3	;
  767                    
  768  016A   81 C7      	LD	EA,#AbsMaxCnt/256-1
  769  016C   DC BE      	SBS	EA,YZ		; Chk MSB
  770  016E   17         	JR	INT0_Int2	;
  771  016F   25         	REF     RLD_HLEA
  772  0170   82         	INCS	HL		; if MSB = AbsMaxCnt/256,
  773  0171   16         	JR	INT0_Int3	; chk LSB
  774  0172   81 00      	LD	EA,#AbsMaxCnt%256
  775                    
  776  0174   DC BC      	SBS	EA,WX		;
  777  0176              INT0_Int2
  778  0176   E0 26      	BITR	OvrAbMaxNow	; Not Exact absolute max
  779  0178              INT0_Int3
  780  0178   FE 8E      	BITR	IRQ0		; Clear INT0 Interrupt Request Flag
  781  017A   77         	REF	RIRET_SB	;
  782                    
  783                    ;----------------------------------------------------------------------------
  784                    ;	F: INTT0 Interrupt for Timer/Counter 0 Compare Match
  785                    ;	I: CntPeriodNow = 0: DischargePeriod
  786                    ;	                  1: CountingPeriod
  787                    ;	N: When enter INTT0_Int, IS0, IS1 = 0, 1
  788  017B              INTT0_Int
  789  017B   73         	REF	RPush_SB	;
  790                    
  791  017C   DD 52      	SRB	RegisterCount	;
  792  017E   20         	REF	RSMB_Variable	;
  793  017F   D3 21      	BTST	CntPeriodNow	;
  794  0181   91 94      	JPS	DischargePeriod	;
  795                    
  796                    ;v***** IMPORTANT - COUNTING PART *****v
  797  0183              CountingPeriod			;
  798  0183   86         	INCS	YZ		; MSB for Counting Value
  799  0184   11         	JR	INTT0_IntE	;
  800  0185   5A         	INCS	L		; If overflow for 16-bit count number, INCS L
  801                    ;^*************************************^
  802  0186              INTT0_IntE
  803  0186   77         	REF	RIRET_SB	;
  804                    
  805                    ; if L overflow, display "EE"
  806  0187   C2 2B      	BTSF	CntOvrflow	;
  807  0189   77         	REF	RIRET_SB	;
  808  018A   C1 2B      	BITS	CntOvrflow	;
  809  018C   E1 26      	BITS	OvrAbMaxNow	;
  810  018E   B2         	LD	A,#2		; Set OvrWtNow & Clear Others Flags
  811  018F   89 27      	LD	OperFlg8,A	;
  812  0191   EC D8      	CALLS	RL_OWT		;
  813  0193   77         	REF	RIRET_SB	;
  814                    ;---------------------------------------
  815  0194              DischargePeriod
  816  0194   CE 5E      	LD	EA,CntTCNT	;
  817  0196   DC D8      	DECS	EA		;
  818  0198   91 B2      	JPS	DischargePeriod8
  819                    
  820                    ;v***** IMPORTANT TO DO FIRST *****v
  821  019A   21         	REF	RSMB_MemMapIO	; Select Memory Bank
  822  019B   F9 C1      	BTST	STOPCNT_PIN	; check interrupt pin is high?
  823  019D   1A         	JR	DischargePeriod4 ; when low, restart timer.
  824                    		
  825  019E   22         	REF	RSMB_LCD 	;	
  826  019F   C1 FB      	BITS    DISCHARGE_PIN	;
  827  01A1   20         	REF	RSMB_Variable	;
  828  01A2   D1 21      	BITS	CntPeriodNow	; Set to Counting Period
  829  01A4   87 00      	LD	YZ,#0		; Clear MSB
  830  01A6   D9 0A      	LD	L,#0		;
  831  01A8              DischargePeriod4
  832  01A8   21         	REF	RSMB_MemMapIO	; Select Memory Bank
  833  01A9   81 7C      	LD	EA,#01111100b	; Enable T/C0
  834  01AB   CD 90      	LD	TMOD0,EA        ; clear TCNT0 & Restart
  835  01AD   FE 8C      	BITR	IRQT0		; Clear Timer/Counter Request Flag
  836                    ;^*********************************^
  837                    
  838  01AF   20         	REF	RSMB_Variable	;
  839  01B0   81 57      	LD	EA,#DischargeDelay
  840                    
  841  01B2              DischargePeriod8
  842  01B2   CD 5E      	LD	CntTCNT,EA	;
  843  01B4   FE 8C      	BITR	IRQT0		; Clear Timer/Counter Request Flag
  844  01B6   77         	REF	RIRET_SB	;
  845                    
  846                    ;============================================================================
  847                    
  848                    ;***********************************************************
  849                    ;	F: Chk MaB key
  850                    ;	I: KeyKGLB, KeyFlozML, KeyHold,	KeyHeldNow
  851                    ;
  852  01B7              ChkMaBkey
  853                    ; REMARK IT BY HCY 03-11-22 10:53
  854  01B7   C2 21      	BTSF	KeyHeldNow	; if key held, exit
  855  01B9   C5         	RET			;
  856                    
  857  01BA   8C 75      	LD	A,MaB_Key	;
  858  01BC   48         	DECS	A		;
  859  01BD   11         	JR	ChkMaBkey1	;
  860  01BE   C5         	RET			;
  861  01BF              ChkMaBkey1
  862  01BF   F3 26      	BTST	IdleBatLowNow	; if battery low now, skip
  863  01C1   14         	JR	ChkMaBkey2	;
  864  01C2   B0         	LD	A,#0		;
  865  01C3   89 75      	LD	MaB_Key,A	;
  866  01C5   C5         	RET
  867  01C6              ChkMaBkey2
  868                    ; remark by hcy 03-11-22 12:07
  869                    ;	CALLS	Dly60		; Key delay 600ms
  870  01C6   C2 75      	BTSF	KeyKGLB		;
  871  01C8   19         	JR	MaB_KGLB	;
  872                    	
  873  01C9   E2 75      	BTSF	KeyHold		;
  874  01CB   91 FE      	JPS	MaB_Hold	;
  875                    	
  876  01CD   D2 75      	BTSF	KeyFlozML	;
  877  01CF   91 EE      	JPS	MaB_FlozML
  878  01D1   C5         	RET			;
  879                    
  880                    ;***********************************************************
  881                    ;	F: kg/lb button
  882                    ;	O: KeyKGLB
  883                    ;	N: MaB
  884                    ;
  885  01D2              MaB_KGLB
  886  01D2   E2 21      	BTSF	CntDspNow	; if CntDspNow = 1, exit
  887  01D4   C5         	RET			;
  888  01D5   C0 75      	BITR	KeyKGLB		;
  889                    		
  890  01D7   E2 24      	BTSF	HoldEn		; if hold enable, no funciton
  891  01D9   C5         	RET
  892                    
  893  01DA              SetSolMeasure
  894  01DA   F3 20      	BTST	SolLiqMode	;
  895  01DC   91 E1      	JPS	SetUnit		;
  896  01DE   F0 20      	BITR	SolLiqMode	; Set Solid mode
  897  01E0   17         	JR	RstMode		;
  898  01E1              SetUnit
  899  01E1   E7         	SCF			;
  900  01E2   83 20      	LD	HL,#OperFlg1	;
  901  01E4   F7 20      	BXOR	C,@H+UnitMode	; switch % g/lb
  902  01E6   FC 20      	LDB	@H+UnitMode,C	;
  903                    
  904  01E8              RstMode
  905  01E8   EA BB      	CALLS	SetFactoryMode	;
  906  01EA   63         	REF	RSetBnd		;
  907                    	
  908  01EB   EF B7      	CALLS	MainCalculate2	;
  909  01ED   C5         	RET
  910                    ;-----------------------------------
  911                    ;	F: fl.oz/ml button
  912                    ;	O: SolLiqMode, UnitMode
  913                    ;	N: MaB
  914                    ;
  915  01EE              MaB_FlozML
  916  01EE   E2 21      	BTSF	CntDspNow	; if CntDspNow = 1, exit
  917  01F0   C5         	RET			;
  918  01F1   D0 75      	BITR	KeyFlozML	;
  919                    		
  920  01F3   E2 24      	BTSF	HoldEn		; if hold enable, no funciton
  921  01F5   C5         	RET
  922                    
  923  01F6              SetLiqMeasure
  924  01F6   F2 20      	BTSF	SolLiqMode	;
  925  01F8   91 E1      	JPS	SetUnit		;
  926  01FA   F1 20      	BITS	SolLiqMode	; Set Liquid mode
  927                    	
  928  01FC   91 E8      	JPS	RstMode		;
  929                    
  930                    
  931                    ;--------------------------------------------------------	
  932                    ; F: Hold key operation
  933  01FE              MaB_Hold		
  934  01FE   E0 75      	BITR	KeyHold
  935                    	
  936  0200   E2 24      	BTSF	HoldEn
  937  0202   1B         	JR	IsHoldKey2
  938  0203              IsHoldKey1
  939  0203   E1 24      	BITS	HoldEn
  940  0205   C1 88      	BITS	Icon_Hold		; Indicate Hold is enable now
  941  0207   BC         	LD	A,#HoldChkTime		; Reset Hold check interval timer
  942  0208   89 3F      	LD	HoldTimer,A		;
  943  020A   B0         	LD	A,#0
  944  020B   89 7F      	LD	HoldState,A
  945  020D   16         	JR	IsHoldKey3		;
  946  020E              IsHoldKey2
  947  020E   E0 24      	BITR	HoldEn
  948  0210   C0 88      	BITR	Icon_Hold		; Indicate Hold is disable
  949  0212   D0 7F      	BITR	HoldRd		; Set this flag to allow update the display
  950  0214              IsHoldKey3
  951  0214   C5         	RET
  952                    ;***********************************************************
  953                    ;	O: KeyHeldNow
  954                    ;	N: xxxx0000 - EA : Key scan input
  955                    ;	       |||'-- Off button
  956                    ;	       ||'--- kg/lb button
  957                    ;	       |'---- fl.oz/ml button
  958                    ;              '----- hold button
  959                    ;
  960  0215              ChkKeyPressed

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -