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

📄 samtestc.l

📁 用SAM72N9写的电子秤文档
💻 L
📖 第 1 页 / 共 5 页
字号:
  475  004E   4A 12      RSkipSRC_YZ	TCALL	SkipSRC_YZ
  476  0050   49 4A      RByteAry	TCALL	ByteAry
  477  0052   49 52      RWrd2Ary	TCALL	Wrd2Ary
  478  0054   4C F8      RStoreWordCode	TCALL	StoreWordCode
  479  0056   4C F2      RStoreByteCode	TCALL	StoreByteCode
  480                    
  481  0058   4D 04      RDspSDigit	TCALL	DspSDigit
  482  005A   4D 07      RDsp4LDigit	TCALL	Dsp4LDigit
  483  005C   4D 30      RDspSymbol	TCALL	DspSymbol
  484                    
  485  005E   4A B7      RKScanDelay	TCALL	KScanDelay
  486                    
  487  0060   47 E8      RCalWeightCnt	TCALL	CalWeightCount
  488  0062   48 AB      RActCurStp2Ary	TCALL	ActlCurStep2Ary
  489  0064   48 A4      RCurStep2Ary	TCALL	CurStep2Ary
  490  0066   48 BA      RSetBnd		TCALL	SetBnd
  491  0068   48 DA      RGetAverageCnt	TCALL	GetAverageCnt
  492  006A   48 1E      RAverageSample  TCALL   AverageSample
  493                    
  494  006C   49 0C      RNWCnt2FReg	TCALL	NWCnt2FReg
  495  006E   49 12      RHxFReg2Dec	TCALL   HxFReg2Dec
  496  0070   49 1B      RCpy_R2FReg	TCALL	Cpy_R2FReg
  497  0072   49 1E      RCpy_F2LReg	TCALL	Cpy_F2LReg
  498  0074   4A 52      RPutDec		TCALL	PutDec
  499                    
  500  0076   DD 67      RPush_SB	PUSH	SB
  501                    
  502  0078   00 0F      RRET_HLEA	TJP	RETHLEA
  503  007A   00 12      RRET_WXHLEA	TJP	RETWXHLEA
  504  007C   00 16      RRET_YZWXHLEA	TJP	RETYZWXHLEA
  505  007E   00 0C      RIRET_SB	TJP	IRETSB
  506                    
  507                    ;----------------------------------------------------------------------------
  508                    ;
  509  0080              	.origin	Main2Loop
  510                    
  511                    ;----------------------------------------------------------------------------
  512                    ;	F: On/Zero Button(MaB)
  513                    ;	I: WeightTareNow
  514                    ;	O: WeightTareNow
  515                    ;	N: Rising edge when release key(MaB)
  516                    ;	   When enter INT1_Int, IS0, IS1 = 1, 0
  517                    ;
  518  0080              INT1_Int
  519  0080   FE AE              BITR    IRQ1            ;
  520  0082   FE A0              BITR    IS0             ;        
  521                    ;	REF	RPush_SB	;
  522                    ;	REF	RSMB_Variable	;
  523                    ;	BTSF	CalibrateOn	;
  524                    ;	BITR	CntDspNow	;
  525                    ;;	REF	RSMB_MemMapIO	;
  526                    ;;INT1_Int1
  527                    ;;	BTST    ONZERO_PIN
  528                    ;;        JR      INT1_Int1
  529                    ;;	REF	RSMB_Variable	;	
  530                    ;	BITS	WeightTareNow	; Set flag to weight tare	
  531                    ;	REF	RIRET_SB	;
  532  0084   D5         	IRET
  533                    
  534                    ;----------------------------------------------------------------------------
  535                    ;	F: INTB Interrupt for Basic Timer Overflow
  536                    ;	N: Interrupt interval = 2.2886.ms
  537                    ;	   when enter into INTB_Int, IS0, IS1 = 1, 0
  538  0085              INTB_Int
  539  0085   FE 88              BITR    IRQB            ;
  540  0087   FE A0              BITR    IS0             ;
  541                    
  542  0089   73         	REF	RPush_SB	;
  543  008A   DD 53      	SRB	RegisterINTB	;
  544  008C   20         	REF	RSMB_Variable	;
  545                    
  546  008D   E2 22      	BTSF	CalibrateOn	; If Calibrate On, skip sleep time
  547  008F   90 CC      	JPS	INTB_Int0_2	; & Timer counting
  548                    
  549  0091   CE 36      	LD	EA,BCNT_1s_M	;
  550  0093   C9 01      	ADS	EA,#1		;
  551  0095   90 CA      	JPS	INTB_Int0_1	;
  552  0097   CA 35      	INCS	BCNT_1s_H	; never skip
  553  0099   C2 35      	BTSF	BCNT_1s_H.0	;
  554  009B   90 CA      	JPS	INTB_Int0_1	;
  555  009D              INTB_1000ms
  556                    
  557  009D   D3 7F      	BTST	HoldRd		; Check for hold reading in progress
  558  009F   1C         	JR	INTB_IntA	;
  559                    
  560  00A0   CA 3F      	INCS	HoldTimer	; Check hold reading timeout
  561  00A2   19         	JR	INTB_IntA	;
  562  00A3   D0 7F      	BITR	HoldRd		; 
  563  00A5   C0 7F      	BITR	HoldStableChk	;
  564  00A7   F1 7F      	BITS	HoldNotAllow	; Hold is not allow unless reading change
  565  00A9   BC         	LD	A,#HoldChkTime	; Reset timer
  566  00AA   89 3F      	LD	HoldTimer,A	;
  567  00AC              INTB_IntA
  568  00AC              INTB_IntB
  569  00AC   E2 25      	BTSF	AutoOffEn	; Chk Auto-power off enabled or not
  570  00AE   90 C5      	JPS	INTB_IntC	; if not, jump
  571  00B0   C2 22      	BTSF	Chge4stepNow	; Chk 4 step changing
  572  00B2   90 C5      	JPS	INTB_IntC	; if change, jump
  573  00B4   C2 24      	BTSF	SleepNow	; Goto Sleep if timeout
  574                    	; remark it by hcy 03-12-2 18:03
  575                    ;	JPS	Sleep1		;
  576  00B6   C1 A8      	bits	PermitSendAPO
  577  00B8   CA 3C      	INCS	SleepTimL	;
  578  00BA   1A         	JR	INTB_IntC	;
  579  00BB   CA 3D      	INCS	SleepTimL+1	;
  580  00BD   17         	JR	INTB_IntC	
  581  00BE   CA 3E      	INCS	SleepTimH	;
  582  00C0   14         	JR	INTB_IntC	
  583  00C1   C1 24      	BITS	SleepNow	; SleepTim overflow, then set sleep flag
  584  00C3   A0         	nop
  585  00C4   A0         	nop
  586                    ; end kwan.
  587                    ;
  588  00C5              INTB_IntC
  589  00C5   B0         	LD	A,#0		;
  590  00C6   89 35      	LD	BCNT_1s_H,A	; Reload 1s timer
  591  00C8   81 4B      	LD	EA,#BCNT1s_RL&0ffh
  592  00CA              INTB_Int0_1
  593  00CA   CD 36      	LD	BCNT_1s_M,EA	;
  594                    
  595  00CC              INTB_Int0_2
  596  00CC   CA 34      	INCS	BCNT_36ms	; BCNT Count from 0 -> 15 -> 0 -> 15 ....
  597  00CE   77         	REF	RIRET_SB	;
  598  00CF              INTB_36ms
  599                    ;-----
  600  00CF              INTB_Int1_1
  601  00CF   CA 29      	INCS	BCNT_183ms	; Check 183ms interval reached?
  602  00D1   90 E1      	JPS	INTB_Int2_1	;
  603                    
  604  00D3              INTB_183ms
  605  00D3   BB         	LD	A,#BCNT183ms_RL	;
  606  00D4   89 29      	LD	BCNT_183ms,A	; Reload 183ms timer
  607                    
  608  00D6              INTB_Int1_2
  609  00D6   C3 25      	BTST	AutoZeroEn	; Chk Auto-revert to zero enabled or not
  610  00D8   18         	JR	INTB_Int1_3	; if not, jump
  611  00D9   E3 27      	BTST	UdrWtNow	; Is Now UnderWeight
  612  00DB   15         	JR	INTB_Int1_3	;
  613  00DC   CA 4B      	INCS	AutoZeroTim	;
  614  00DE   12         	JR	INTB_Int1_3	;
  615  00DF   D1 23      	BITS	AutoZeroNow	; Enable Reset to Zero
  616                    
  617  00E1              INTB_Int1_3
  618                    	
  619                    ;	LD	A,Tag2sec	;
  620                    ;	REF	RCPSE_A0	; if Tag2sec <> 0,
  621                    ;	INCS	Tag2sec		; Incs Tag2sec
  622                    ;--------------------------
  623  00E1              INTB_Int2_1
  624  00E1   CA 2A      	INCS	BCNT_500ms	; chk 512ms reached?
  625  00E3   77         	REF	RIRET_SB	;
  626                    
  627  00E4              INTB_500ms
  628  00E4   B2         	LD	A,#BCNT500ms_RL	; Reload 512ms Timer
  629  00E5   89 2A      	LD	BCNT_500ms,A	;
  630                    ;--------------------------        
  631  00E7   C3 22      	BTST	Chge4stepNow
  632  00E9   17         	JR	INTB_Int3_1
  633  00EA   CA 8A      	INCS	Chge4stepTimer
  634  00EC   14         	JR	INTB_Int3_1
  635  00ED   C0 22      	BITR	Chge4stepNow	; Set sleep timer delay end
  636  00EF   E1 2B      	BITS	ChgeSlpTmrNow
  637  00F1              INTB_Int3_1
  638  00F1   E3 24      	BTST	HoldEn		; Check for hold enable
  639  00F3   1B         	JR	INTB_Int3_2	; 
  640  00F4   D2 7F      	BTSF	HoldRd		; Check the reading is not hold
  641  00F6   18         	JR	INTB_Int3_2	;
  642  00F7   C2 7F      	BTSF	HoldStableChk	; whether the routine executed or not
  643  00F9   15         	JR	INTB_Int3_2	;
  644  00FA   CA 3F      	INCS	HoldTimer	;
  645  00FC   12         	JR	INTB_Int3_2	;
  646  00FD   C1 7F      	BITS	HoldStableChk	; chk hold stable time interval reach
  647  00FF              INTB_Int3_2
  648  00FF   CA 6E              INCS    Tag2sec
  649  0101   12                 JR      INTB_Int3_3
  650  0102   C1 23              BITS	CreepZero	;	
  651                    
  652  0104              INTB_Int3_3
  653  0104   CA 79      	INCS	CreepTimer	; CREEPING TIMER
  654  0106   77         	REF	RIRET_SB	
  655  0107   D1 24      	BITS	TimrFinished	;	
  656  0109   77         	REF	RIRET_SB	;
  657                    ;----------------------------------------------------------------------------
  658                    ;
  659  010A              Sleep
  660  010A   EA F1      	CALLS	Dly20		; simlute the Buzzer tone delay
  661                    ;	REF	RKeyTone	;
  662  010C              Sleep1
  663  010C   FE B2      	DI			;
  664  010E              Sleep2
  665  010E   21         	REF	RSMB_MemMapIO	;
  666                    
  667  010F   B0         	LD	A,#0		;
  668  0110   89 B8      	LD	INTA,A		; Disable Basic Timer Interrupt(INTB)
  669  0112   89 BA      	LD	INTB,A		; Disable Watch Timer
  670  0114   89 BC      	LD	INTC,A		; Disable Timer/Counter Interrupt(INTT0)
  671  0116   89 BE      	LD	INTE,A		; Disable INT0 Pin Interrupt
  672                    				; Disable INT1 Pin Interrupt
  673  0118   89 8E      	LD	LCON,A          ; Display off
  674                    	
  675                    
  676  011A   22         	REF	RSMB_LCD 	; Select LCD Memory Bank1
  677                    ;	BITR	POWERON_PIN	; Power Off  for Chip
  678                    
  679  011B   DB 4F 59   	call	Send_AutoOffCode
  680                    
  681                    	
  682  011E   A0         	NOP
  683  011F   0E         	JR	$-1		; Dead loop until no power supply
  684                    	
  685                    ;----------------------------------------------------------------------------
  686                    ;	F: Chk "Off" key press
  687                    ;	O: SMB = Variable Bank
  688                    ;	D: A
  689  0120              ChkOffButton
  690                    ; remark by hcy 03-11-21 15:06
  691                    
  692                    ;	REF	RSMB_MemMapIO	;
  693                    ;	LD	A,KEYCOL	;
  694                    ;	REF	RSMB_Variable	;
  695                    ;	AND	A,#0001b	;
  696                    ;	DECS	A		;
  697                    ;	RET			;
  698                    ;	JPS	Sleep		; Off button
  699  0120   C5         	RET
  700                    
  701                    ;----------------------------------------------------------------------------
  702                    ;	F: External INT0 pin Interrupt
  703                    ;	N: When enter INT0_Int, IS0, IS1 = 1, 0
  704  0121              INT0_Int
  705  0121   73         	REF	RPush_SB	;
  706                    
  707                    ;v***** IMPORTANT TO DO FIRST *****v
  708  0122   DD 52      	SRB	RegisterCount	;
  709  0124   21         	REF	RSMB_MemMapIO	;
  710  0125   81 70      	LD	EA,#01110000b	; Stop TCNT0
  711  0127   CD 90      	LD	TMOD0,EA	;
  712  0129   22         	REF	RSMB_LCD 	;
  713  012A   C0 FB      	BITR    DISCHARGE_PIN	;
  714                    ;^*********************************^
  715                    
  716  012C   21         	REF	RSMB_MemMapIO	;
  717  012D   CE 94      	LD	EA,TCNT0	; Load LSB

⌨️ 快捷键说明

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