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

📄 kclock2.lst

📁 用SAM72N9写的电子秤文档
💻 LST
📖 第 1 页 / 共 5 页
字号:
  474  0074   4A 6B      RPutDec		TCALL	PutDec
  475                    
  476  0076   DD 67      RPush_SB	PUSH	SB
  477                    
  478  0078   00 0F      RRET_HLEA	TJP	RETHLEA
  479  007A   00 12      RRET_WXHLEA	TJP	RETWXHLEA
  480  007C   00 16      RRET_YZWXHLEA	TJP	RETYZWXHLEA
  481  007E   00 0C      RIRET_SB	TJP	IRETSB
  482                    
  483                    ;----------------------------------------------------------------------------
  484                    ;
  485  0080              	.origin	Main2Loop
  486                    
  487                    ;----------------------------------------------------------------------------
  488                    ;	F: On/Zero Button(MaB)
  489                    ;	I: WeightTareNow
  490                    ;	O: WeightTareNow
  491                    ;	N: Rising edge when release key(MaB)
  492                    ;	   When enter INT1_Int, IS0, IS1 = 1, 0
  493                    ;
  494  0080              INT1_Int
  495  0080   FE AE              BITR    IRQ1            ;
  496  0082   FE A0              BITR    IS0             ;        
  497  0084   73         	REF	RPush_SB	;
  498  0085   20         	REF	RSMB_Variable	;
  499  0086   E2 22      	BTSF	CalibrateOn	;
  500  0088   E0 21      	BITR	CntDspNow	;
  501                    ;	REF	RSMB_MemMapIO	;
  502                    ;INT1_Int1
  503                    ;	BTST    ONZERO_PIN
  504                    ;        JR      INT1_Int1
  505                    ;	REF	RSMB_Variable	;	
  506  008A   F1 21      	BITS	WeightTareNow	; Set flag to weight tare	
  507  008C   77         	REF	RIRET_SB	;
  508                    
  509                    ;----------------------------------------------------------------------------
  510                    ;	F: INTB Interrupt for Basic Timer Overflow
  511                    ;	N: Interrupt interval = 2.2886.ms
  512                    ;	   when enter into INTB_Int, IS0, IS1 = 1, 0
  513  008D              INTB_Int
  514  008D   FE 88              BITR    IRQB            ;
  515  008F   FE A0              BITR    IS0             ;
  516                    
  517  0091   73         	REF	RPush_SB	;
  518  0092   DD 53      	SRB	RegisterINTB	;
  519  0094   20         	REF	RSMB_Variable	;
  520                    
  521  0095   E2 22      	BTSF	CalibrateOn	; If Calibrate On, skip sleep time
  522  0097   90 D2      	JPS	INTB_Int0_2	; & Timer counting
  523                    
  524  0099   CE 36      	LD	EA,BCNT_1s_M	;
  525  009B   C9 01      	ADS	EA,#1		;
  526  009D   90 D0      	JPS	INTB_Int0_1	;
  527  009F   CA 35      	INCS	BCNT_1s_H	; never skip
  528  00A1   C2 35      	BTSF	BCNT_1s_H.0	;
  529  00A3   90 D0      	JPS	INTB_Int0_1	;
  530  00A5              INTB_1000ms
  531                    
  532  00A5   D3 7F      	BTST	HoldRd		; Check for hold reading in progress
  533  00A7   1C         	JR	INTB_IntA	;
  534                    
  535  00A8   CA 3F      	INCS	HoldTimer	; Check hold reading timeout
  536  00AA   19         	JR	INTB_IntA	;
  537  00AB   D0 7F      	BITR	HoldRd		; 
  538  00AD   C0 7F      	BITR	HoldStableChk	;
  539  00AF   F1 7F      	BITS	HoldNotAllow	; Hold is not allow unless reading change
  540  00B1   BC         	LD	A,#HoldChkTime	; Reset timer
  541  00B2   89 3F      	LD	HoldTimer,A	;
  542  00B4              INTB_IntA
  543  00B4              INTB_IntB
  544  00B4   E2 25      	BTSF	AutoOffEn	; Chk Auto-power off enabled or not
  545  00B6   90 CB      	JPS	INTB_IntC	; if not, jump
  546  00B8   C2 22      	BTSF	Chge4stepNow	; Chk 4 step changing
  547  00BA   90 CB      	JPS	INTB_IntC	; if change, jump
  548  00BC   C2 24      	BTSF	SleepNow	; Goto Sleep if timeout
  549  00BE   91 12      	JPS	Sleep1		;
  550  00C0   CA 3C      	INCS	SleepTimL	;
  551  00C2   18         	JR	INTB_IntC	;
  552  00C3   CA 3D      	INCS	SleepTimL+1	;
  553  00C5   15         	JR	INTB_IntC	
  554  00C6   CA 3E      	INCS	SleepTimH	;
  555  00C8   12         	JR	INTB_IntC	
  556                    ; Kwan Nov 06, 2003
  557                    ; remark it for non-stop operation
  558                    ;	BITS	SleepNow	; SleepTim overflow, then set sleep flag
  559  00C9   A0         	nop
  560  00CA   A0         	nop
  561                    ; end kwan.
  562                    ;
  563  00CB              INTB_IntC
  564  00CB   B0         	LD	A,#0		;
  565  00CC   89 35      	LD	BCNT_1s_H,A	; Reload 1s timer
  566  00CE   81 4B      	LD	EA,#BCNT1s_RL&0ffh
  567  00D0              INTB_Int0_1
  568  00D0   CD 36      	LD	BCNT_1s_M,EA	;
  569                    
  570  00D2              INTB_Int0_2
  571  00D2   CA 34      	INCS	BCNT_36ms	; BCNT Count from 0 -> 15 -> 0 -> 15 ....
  572  00D4   77         	REF	RIRET_SB	;
  573  00D5              INTB_36ms
  574                    ;-----
  575  00D5              INTB_Int1_1
  576  00D5   CA 29      	INCS	BCNT_183ms	; Check 183ms interval reached?
  577  00D7   90 E7      	JPS	INTB_Int2_1	;
  578                    
  579  00D9              INTB_183ms
  580  00D9   BB         	LD	A,#BCNT183ms_RL	;
  581  00DA   89 29      	LD	BCNT_183ms,A	; Reload 183ms timer
  582                    
  583  00DC              INTB_Int1_2
  584  00DC   C3 25      	BTST	AutoZeroEn	; Chk Auto-revert to zero enabled or not
  585  00DE   18         	JR	INTB_Int1_3	; if not, jump
  586  00DF   E3 27      	BTST	UdrWtNow	; Is Now UnderWeight
  587  00E1   15         	JR	INTB_Int1_3	;
  588  00E2   CA 4B      	INCS	AutoZeroTim	;
  589  00E4   12         	JR	INTB_Int1_3	;
  590  00E5   D1 23      	BITS	AutoZeroNow	; Enable Reset to Zero
  591                    
  592  00E7              INTB_Int1_3
  593                    	
  594                    ;	LD	A,Tag2sec	;
  595                    ;	REF	RCPSE_A0	; if Tag2sec <> 0,
  596                    ;	INCS	Tag2sec		; Incs Tag2sec
  597                    ;--------------------------
  598  00E7              INTB_Int2_1
  599  00E7   CA 2A      	INCS	BCNT_500ms	; chk 512ms reached?
  600  00E9   77         	REF	RIRET_SB	;
  601                    
  602  00EA              INTB_500ms
  603  00EA   B2         	LD	A,#BCNT500ms_RL	; Reload 512ms Timer
  604  00EB   89 2A      	LD	BCNT_500ms,A	;
  605                    ;--------------------------        
  606  00ED   C3 22      	BTST	Chge4stepNow
  607  00EF   17         	JR	INTB_Int3_1
  608  00F0   CA 8A      	INCS	Chge4stepTimer
  609  00F2   14         	JR	INTB_Int3_1
  610  00F3   C0 22      	BITR	Chge4stepNow	; Set sleep timer delay end
  611  00F5   E1 2B      	BITS	ChgeSlpTmrNow
  612  00F7              INTB_Int3_1
  613  00F7   E3 24      	BTST	HoldEn		; Check for hold enable
  614  00F9   1B         	JR	INTB_Int3_2	; 
  615  00FA   D2 7F      	BTSF	HoldRd		; Check the reading is not hold
  616  00FC   18         	JR	INTB_Int3_2	;
  617  00FD   C2 7F      	BTSF	HoldStableChk	; whether the routine executed or not
  618  00FF   15         	JR	INTB_Int3_2	;
  619  0100   CA 3F      	INCS	HoldTimer	;
  620  0102   12         	JR	INTB_Int3_2	;
  621  0103   C1 7F      	BITS	HoldStableChk	; chk hold stable time interval reach
  622  0105              INTB_Int3_2
  623  0105   CA 6E              INCS    Tag2sec
  624  0107   12                 JR      INTB_Int3_3
  625  0108   C1 23              BITS	CreepZero	;	
  626                    
  627  010A              INTB_Int3_3
  628  010A   CA 79      	INCS	CreepTimer	; CREEPING TIMER
  629  010C   77         	REF	RIRET_SB	
  630  010D   D1 24      	BITS	TimrFinished	;	
  631  010F   77         	REF	RIRET_SB	;
  632                    ;----------------------------------------------------------------------------
  633                    ;
  634  0110              Sleep
  635  0110   EA E9      	CALLS	Dly20		; simlute the Buzzer tone delay
  636                    ;	REF	RKeyTone	;
  637  0112              Sleep1
  638  0112   FE B2      	DI			;
  639  0114              Sleep2
  640  0114   21         	REF	RSMB_MemMapIO	;
  641                    
  642  0115   B0         	LD	A,#0		;
  643  0116   89 B8      	LD	INTA,A		; Disable Basic Timer Interrupt(INTB)
  644  0118   89 BA      	LD	INTB,A		; Disable Watch Timer
  645  011A   89 BC      	LD	INTC,A		; Disable Timer/Counter Interrupt(INTT0)
  646  011C   89 BE      	LD	INTE,A		; Disable INT0 Pin Interrupt
  647                    				; Disable INT1 Pin Interrupt
  648  011E   89 8E      	LD	LCON,A          ; Display off
  649                    
  650  0120   22         	REF	RSMB_LCD 	; Select LCD Memory Bank1
  651  0121   C0 FA      	BITR	POWERON_PIN	; Power Off  for Chip
  652                    
  653  0123   A0         	NOP
  654  0124   0E         	JR	$-1		; Dead loop until no power supply
  655                    	
  656                    ;----------------------------------------------------------------------------
  657                    ;	F: Chk "Off" key press
  658                    ;	O: SMB = Variable Bank
  659                    ;	D: A
  660  0125              ChkOffButton
  661  0125   21         	REF	RSMB_MemMapIO	;
  662  0126   8C F6      	LD	A,KEYCOL	;
  663  0128   20         	REF	RSMB_Variable	;
  664  0129   DD 11      	AND	A,#0001b	;
  665  012B   48         	DECS	A		;
  666  012C   C5         	RET			;
  667  012D   91 10      	JPS	Sleep		; Off button
  668                    
  669                    ;----------------------------------------------------------------------------
  670                    ;	F: External INT0 pin Interrupt
  671                    ;	N: When enter INT0_Int, IS0, IS1 = 1, 0
  672  012F              INT0_Int
  673  012F   73         	REF	RPush_SB	;
  674                    
  675                    ;v***** IMPORTANT TO DO FIRST *****v
  676  0130   DD 52      	SRB	RegisterCount	;
  677  0132   21         	REF	RSMB_MemMapIO	;
  678  0133   81 70      	LD	EA,#01110000b	; Stop TCNT0
  679  0135   CD 90      	LD	TMOD0,EA	;
  680  0137   22         	REF	RSMB_LCD 	;
  681  0138   C0 FB      	BITR    DISCHARGE_PIN	;
  682                    ;^*********************************^
  683                    
  684  013A   21         	REF	RSMB_MemMapIO	;
  685  013B   CE 94      	LD	EA,TCNT0	; Load LSB
  686  013D   26         	REF     RLD_WXEA        ; Store LSB to WX
  687  013E   81 7C      	LD	EA,#01111100b	; Enable T/C0
  688  0140   CD 90      	LD	TMOD0,EA        ; clear TCNT0 & Restart
  689                    
  690  0142   20         	REF	RSMB_Variable	;
  691  0143   D0 21      	BITR	CntPeriodNow	;
  692                    
  693  0145   F9 8C      	BTST	IRQT0		;
  694  0147   15         	JR	StoreSample	;
  695  0148   86         	INCS	YZ		;
  696  0149   13         	JR	StoreSample	;
  697  014A   5A         	INCS	L		;	
  698  014B   FE 8C      	BITR	IRQT0		; Clear Timer/Counter Request Flag
  699                    	
  700  014D              StoreSample
  701  014D   2B         	PUSH	HL		;
  702  014E   83 85      	LD	HL,#HaveData	;
  703                    	
  704  0150   F4 35      	LDB	C,@H+PermitUpdate
  705  0152   D7         	BTST	C		; Chk Permit to update sample or not?
  706  0153   12         	JR	StorePermit	;
  707  0154   91 72      	JPS	INT0_Int1	;
  708  0156              StorePermit	
  709  0156   F4 25      	LDB	C,@H+UpdateSample0
  710  0158   D6         	CCF			;
  711  0159   FC 25      	LDB	@H+UpdateSample0,C
  712  015B   D7         	BTST	C		; Chk where Sample to store?
  713  015C   1B         	JR	StoreSample0	;
  714                    
  715  015D              StoreSample1
  716  015D   DC FC      	LD	EA,WX		; LSB

⌨️ 快捷键说明

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