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

📄 testn8.lst

📁 用SAM72N9写的电子秤文档
💻 LST
📖 第 1 页 / 共 5 页
字号:
  484  00BA   90 CB      	JPS	INTB_IntC	; if change, jump
  485  00BC   C2 24      	BTSF	SleepNow	; Goto Sleep if timeout
  486  00BE   91 12      	JPS	Sleep1		;
  487  00C0   CA 3C      	INCS	SleepTimL	;
  488  00C2   18         	JR	INTB_IntC	;
  489  00C3   CA 3D      	INCS	SleepTimL+1	;
  490  00C5   15         	JR	INTB_IntC	
  491  00C6   CA 3E      	INCS	SleepTimH	;
  492  00C8   12         	JR	INTB_IntC	
  493  00C9   C1 24      	BITS	SleepNow	; SleepTim overflow, then set sleep flag
  494                    
  495  00CB              INTB_IntC
  496  00CB   B0         	LD	A,#0		;
  497  00CC   89 35      	LD	BCNT_1s_H,A	; Reload 1s timer
  498  00CE   81 4B      	LD	EA,#BCNT1s_RL&0ffh
  499  00D0              INTB_Int0_1
  500  00D0   CD 36      	LD	BCNT_1s_M,EA	;
  501                    
  502  00D2              INTB_Int0_2
  503  00D2   CA 34      	INCS	BCNT_36ms	; BCNT Count from 0 -> 15 -> 0 -> 15 ....
  504  00D4   77         	REF	RIRET_SB	;
  505  00D5              INTB_36ms
  506                    ;-----
  507  00D5              INTB_Int1_1
  508  00D5   CA 29      	INCS	BCNT_183ms	; Check 183ms interval reached?
  509  00D7   90 E7      	JPS	INTB_Int2_1	;
  510                    
  511  00D9              INTB_183ms
  512  00D9   BB         	LD	A,#BCNT183ms_RL	;
  513  00DA   89 29      	LD	BCNT_183ms,A	; Reload 183ms timer
  514                    
  515  00DC              INTB_Int1_2
  516  00DC   C3 25      	BTST	AutoZeroEn	; Chk Auto-revert to zero enabled or not
  517  00DE   18         	JR	INTB_Int1_3	; if not, jump
  518  00DF   E3 27      	BTST	UdrWtNow	; Is Now UnderWeight
  519  00E1   15         	JR	INTB_Int1_3	;
  520  00E2   CA 4B      	INCS	AutoZeroTim	;
  521  00E4   12         	JR	INTB_Int1_3	;
  522  00E5   D1 23      	BITS	AutoZeroNow	; Enable Reset to Zero
  523                    
  524  00E7              INTB_Int1_3
  525                    	
  526                    ;	LD	A,Tag2sec	;
  527                    ;	REF	RCPSE_A0	; if Tag2sec <> 0,
  528                    ;	INCS	Tag2sec		; Incs Tag2sec
  529                    ;--------------------------
  530  00E7              INTB_Int2_1
  531  00E7   CA 2A      	INCS	BCNT_500ms	; chk 512ms reached?
  532  00E9   77         	REF	RIRET_SB	;
  533                    
  534  00EA              INTB_500ms
  535  00EA   B2         	LD	A,#BCNT500ms_RL	; Reload 512ms Timer
  536  00EB   89 2A      	LD	BCNT_500ms,A	;
  537                    ;--------------------------        
  538  00ED   C3 22      	BTST	Chge4stepNow
  539  00EF   17         	JR	INTB_Int3_1
  540  00F0   CA 8A      	INCS	Chge4stepTimer
  541  00F2   14         	JR	INTB_Int3_1
  542  00F3   C0 22      	BITR	Chge4stepNow	; Set sleep timer delay end
  543  00F5   E1 2B      	BITS	ChgeSlpTmrNow
  544  00F7              INTB_Int3_1
  545  00F7   E3 24      	BTST	HoldEn		; Check for hold enable
  546  00F9   1B         	JR	INTB_Int3_2	; 
  547  00FA   D2 7F      	BTSF	HoldRd		; Check the reading is not hold
  548  00FC   18         	JR	INTB_Int3_2	;
  549  00FD   C2 7F      	BTSF	HoldStableChk	; whether the routine executed or not
  550  00FF   15         	JR	INTB_Int3_2	;
  551  0100   CA 3F      	INCS	HoldTimer	;
  552  0102   12         	JR	INTB_Int3_2	;
  553  0103   C1 7F      	BITS	HoldStableChk	; chk hold stable time interval reach
  554  0105              INTB_Int3_2
  555  0105   CA 6E              INCS    Tag2sec
  556  0107   12                 JR      INTB_Int3_3
  557  0108   C1 23              BITS	CreepZero	;	
  558                    
  559  010A              INTB_Int3_3
  560  010A   CA 79      	INCS	CreepTimer	; CREEPING TIMER
  561  010C   77         	REF	RIRET_SB	
  562  010D   D1 24      	BITS	TimrFinished	;	
  563  010F   77         	REF	RIRET_SB	;
  564                    ;----------------------------------------------------------------------------
  565                    ;
  566  0110              Sleep
  567  0110   EA E7      	CALLS	Dly20		; simlute the Buzzer tone delay
  568                    ;	REF	RKeyTone	;
  569  0112              Sleep1
  570  0112   FE B2      	DI			;
  571  0114              Sleep2
  572  0114   21         	REF	RSMB_MemMapIO	;
  573                    
  574  0115   B0         	LD	A,#0		;
  575  0116   89 B8      	LD	INTA,A		; Disable Basic Timer Interrupt(INTB)
  576  0118   89 BA      	LD	INTB,A		; Disable Watch Timer
  577  011A   89 BC      	LD	INTC,A		; Disable Timer/Counter Interrupt(INTT0)
  578  011C   89 BE      	LD	INTE,A		; Disable INT0 Pin Interrupt
  579                    				; Disable INT1 Pin Interrupt
  580  011E   89 8E      	LD	LCON,A          ; Display off
  581                    
  582  0120   22         	REF	RSMB_LCD 	; Select LCD Memory Bank1
  583  0121   C0 FA      	BITR	POWERON_PIN	; Power Off  for Chip
  584                    
  585  0123   A0         	NOP
  586  0124   0E         	JR	$-1		; Dead loop until no power supply
  587                    	
  588                    ;----------------------------------------------------------------------------
  589                    ;	F: Chk "Off" key press
  590                    ;	O: SMB = Variable Bank
  591                    ;	D: A
  592  0125              ChkOffButton
  593  0125   21         	REF	RSMB_MemMapIO	;
  594  0126   8C F6      	LD	A,KEYCOL	;
  595  0128   20         	REF	RSMB_Variable	;
  596  0129   DD 11      	AND	A,#0001b	;
  597  012B   48         	DECS	A		;
  598  012C   C5         	RET			;
  599  012D   91 10      	JPS	Sleep		; Off button
  600                    
  601                    ;----------------------------------------------------------------------------
  602                    ;	F: External INT0 pin Interrupt
  603                    ;	N: When enter INT0_Int, IS0, IS1 = 1, 0
  604  012F              INT0_Int
  605  012F   73         	REF	RPush_SB	;
  606                    
  607                    ;v***** IMPORTANT TO DO FIRST *****v
  608  0130   DD 52      	SRB	RegisterCount	;
  609  0132   21         	REF	RSMB_MemMapIO	;
  610  0133   81 70      	LD	EA,#01110000b	; Stop TCNT0
  611  0135   CD 90      	LD	TMOD0,EA	;
  612  0137   22         	REF	RSMB_LCD 	;
  613  0138   C0 FB      	BITR    DISCHARGE_PIN	;
  614                    ;^*********************************^
  615                    
  616  013A   21         	REF	RSMB_MemMapIO	;
  617  013B   CE 94      	LD	EA,TCNT0	; Load LSB
  618  013D   26         	REF     RLD_WXEA        ; Store LSB to WX
  619  013E   81 7C      	LD	EA,#01111100b	; Enable T/C0
  620  0140   CD 90      	LD	TMOD0,EA        ; clear TCNT0 & Restart
  621                    
  622  0142   20         	REF	RSMB_Variable	;
  623  0143   D0 21      	BITR	CntPeriodNow	;
  624                    
  625  0145   F9 8C      	BTST	IRQT0		;
  626  0147   15         	JR	StoreSample	;
  627  0148   86         	INCS	YZ		;
  628  0149   13         	JR	StoreSample	;
  629  014A   5A         	INCS	L		;	
  630  014B   FE 8C      	BITR	IRQT0		; Clear Timer/Counter Request Flag
  631                    	
  632  014D              StoreSample
  633  014D   2B         	PUSH	HL		;
  634  014E   83 85      	LD	HL,#HaveData	;
  635                    	
  636  0150   F4 35      	LDB	C,@H+PermitUpdate
  637  0152   D7         	BTST	C		; Chk Permit to update sample or not?
  638  0153   12         	JR	StorePermit	;
  639  0154   91 72      	JPS	INT0_Int1	;
  640  0156              StorePermit	
  641  0156   F4 25      	LDB	C,@H+UpdateSample0
  642  0158   D6         	CCF			;
  643  0159   FC 25      	LDB	@H+UpdateSample0,C
  644  015B   D7         	BTST	C		; Chk where Sample to store?
  645  015C   1B         	JR	StoreSample0	;
  646                    
  647  015D              StoreSample1
  648  015D   DC FC      	LD	EA,WX		; LSB
  649  015F   CD 5C      	LD	SampleCount1+2,EA
  650  0161   DC FE      	LD	EA,YZ		; MSB
  651  0163   CD 5A      	LD	SampleCount1,EA	;
  652  0165   D1 85      	BITS	HaveSample1	; Set Flag for Sample 1 reach
  653  0167   1A         	JR	INT0_Int1	;
  654                    
  655  0168              StoreSample0			;
  656  0168   DC FC      	LD	EA,WX		; LSB
  657  016A   CD 58      	LD	SampleCount0+2,EA
  658  016C   DC FE      	LD	EA,YZ		; MSB
  659  016E   CD 56      	LD	SampleCount0,EA	;
  660  0170   C1 85      	BITS	HaveSample0	; Set Flag for Sample 0 reach
  661                    
  662  0172              INT0_Int1
  663  0172   2A         	POP	HL		;
  664  0173   E1 26      	BITS	OvrAbMaxNow	; Exact absolute max
  665  0175   D9 02      	CPSE	L,#0		;
  666  0177   1E         	JR	INT0_Int3	;
  667                    
  668  0178   81 C7      	LD	EA,#AbsMaxCnt/256-1
  669  017A   DC BE      	SBS	EA,YZ		; Chk MSB
  670  017C   17         	JR	INT0_Int2	;
  671  017D   25         	REF     RLD_HLEA
  672  017E   82         	INCS	HL		; if MSB = AbsMaxCnt/256,
  673  017F   16         	JR	INT0_Int3	; chk LSB
  674  0180   81 00      	LD	EA,#AbsMaxCnt%256
  675                    
  676  0182   DC BC      	SBS	EA,WX		;
  677  0184              INT0_Int2
  678  0184   E0 26      	BITR	OvrAbMaxNow	; Not Exact absolute max
  679  0186              INT0_Int3
  680  0186   FE 8E      	BITR	IRQ0		; Clear INT0 Interrupt Request Flag
  681  0188   77         	REF	RIRET_SB	;
  682                    
  683                    ;----------------------------------------------------------------------------
  684                    ;	F: INTT0 Interrupt for Timer/Counter 0 Compare Match
  685                    ;	I: CntPeriodNow = 0: DischargePeriod
  686                    ;	                  1: CountingPeriod
  687                    ;	N: When enter INTT0_Int, IS0, IS1 = 0, 1
  688  0189              INTT0_Int
  689  0189   73         	REF	RPush_SB	;
  690                    
  691  018A   DD 52      	SRB	RegisterCount	;
  692  018C   20         	REF	RSMB_Variable	;
  693  018D   D3 21      	BTST	CntPeriodNow	;
  694  018F   91 A2      	JPS	DischargePeriod	;
  695                    
  696                    ;v***** IMPORTANT - COUNTING PART *****v
  697  0191              CountingPeriod			;
  698  0191   86         	INCS	YZ		; MSB for Counting Value
  699  0192   11         	JR	INTT0_IntE	;
  700  0193   5A         	INCS	L		; If overflow for 16-bit count number, INCS L
  701                    ;^*************************************^
  702  0194              INTT0_IntE
  703  0194   77         	REF	RIRET_SB	;
  704                    
  705                    ; if L overflow, display "EE"
  706  0195   C2 2B      	BTSF	CntOvrflow	;
  707  0197   77         	REF	RIRET_SB	;
  708  0198   C1 2B      	BITS	CntOvrflow	;
  709  019A   E1 26      	BITS	OvrAbMaxNow	;
  710  019C   B2         	LD	A,#2		; Set OvrWtNow & Clear Others Flags
  711  019D   89 27      	LD	OperFlg8,A	;
  712  019F   EC CB      	CALLS	RL_OWT		;
  713  01A1   77         	REF	RIRET_SB	;
  714                    ;---------------------------------------
  715  01A2              DischargePeriod
  716  01A2   CE 5E      	LD	EA,CntTCNT	;
  717  01A4   DC D8      	DECS	EA		;
  718  01A6   91 C0      	JPS	DischargePeriod8
  719                    
  720                    ;v***** IMPORTANT TO DO FIRST *****v
  721  01A8   21         	REF	RSMB_MemMapIO	; Select Memory Bank
  722  01A9   F9 C1      	BTST	STOPCNT_PIN	; check interrupt pin is high?
  723  01AB   1A         	JR	DischargePeriod4 ; when low, restart timer.
  724                    		
  725  01AC   22         	REF	RSMB_LCD 	;	
  726  01AD   C1 FB      	BITS    DISCHARGE_PIN	;
  727  01AF   20         	REF	RSMB_Variable	;
  728  01B0   D1 21      	BITS	CntPeriodNow	; Set to Counting Period
  729  01B2   87 00      	LD	YZ,#0		; Clear MSB
  730  01B4   D9 0A      	LD	L,#0		;
  731  01B6              DischargePeriod4

⌨️ 快捷键说明

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