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

📄 sam2t.l

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

⌨️ 快捷键说明

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