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

📄 sam2t.l

📁 用SAM72N9写的电子秤文档
💻 L
📖 第 1 页 / 共 5 页
字号:
  237         00 30      HexBuf0		.equ	030h	; most msb
  238         00 31      HexBuf1		.equ	031h	;
  239         00 32      HexBuf2		.equ	032h	;
  240         00 33      HexBuf3		.equ	033h	; most lsb
  241                    
  242         00 40      DecBuf		.equ	040h	; Max 5-digit BCD
  243         00 40      DecBuf0		.equ	040h	; most msb
  244         00 41      DecBuf1		.equ	041h	;
  245         00 42      DecBuf2		.equ	042h	;
  246         00 43      DecBuf3		.equ	043h	;
  247         00 44      DecBuf4		.equ	044h	; most lsb
  248                    
  249                    ; the followings variables need a fixed address
  250         00 4C      LDigit___1	.equ	4ch	; LCD Large Digit dsp for decimal place(1B)
  251         00 4E      LDigitxxx1	.equ	4eh	; LCD Large Digit dsp value(1B)
  252         00 50      LDigitxx1x	.equ	50h	; LCD Large Digit dsp value(1B)
  253         00 52      LDigitx1xx	.equ	52h	; LCD Large Digit dsp value(1B)
  254         00 54      LDigit1xxx	.equ	54h	; LCD Large Digit dsp value(1B)
  255         00 55      LDigit1xxxH	.equ	055h
  256                    
  257                    ; for arithmetic calculation
  258         00 60      YS_F_REG        .equ	060h
  259         00 60      YS_F_REG_0      .equ	060h	; most msb
  260         00 61      YS_F_REG_1      .equ	061h	;
  261         00 62      YS_F_REG_2      .equ	062h	;
  262         00 63      YS_F_REG_3      .equ	063h	;
  263         00 64      YS_F_REG_4      .equ	064h	; most lsb
  264                    
  265         00 70      YS_L_REG        .equ	070h
  266         00 70      YS_L_REG_0      .equ	070h	; most msb
  267         00 71      YS_L_REG_1      .equ	071h	;
  268         00 72      YS_L_REG_2      .equ	072h	;
  269         00 73      YS_L_REG_3      .equ	073h	;
  270         00 74      YS_L_REG_4      .equ	074h	; most lsb
  271                    
  272         00 80      YS_R_REG        .equ	080h
  273         00 80      YS_R_REG_0      .equ	080h	; most msb
  274         00 81      YS_R_REG_1      .equ	081h	;
  275         00 82      YS_R_REG_2      .equ	082h	;
  276         00 83      YS_R_REG_3      .equ	083h	;
  277         00 84      YS_R_REG_4      .equ	084h	; most lsb
  278                    
  279                    ; the followings variables need a fixed address
  280         00 90      NewWeightBCD	.equ	090h	; New Weight obtained from AverageCount(2B)
  281         00 90      NewWeightBCD0	.equ	090h	; most msb
  282         00 91      NewWeightBCD1	.equ	091h	;
  283         00 92      NewWeightBCD2	.equ	092h	;
  284         00 93      NewWeightBCD3	.equ	093h	;
  285         00 94      NewWeightBCD4	.equ	094h	; most lsb
  286                    
  287                    
  288                    ; the followings variables need a fixed address
  289         00 96      Step1		.equ	096h	; 1st region dsp step(2B) - multipied by 10
  290         00 9A      Bound1		.equ	09Ah	; 1st Boundary of weighting display(2B)
  291         00 9A      MaxBound	.equ	09Ah	; MaxBound
  292         00 9E      UnitCnt		.equ	09Eh	; Unit count value(1B)
  293         00 9E      gRatio		.equ	09Eh	; - 1g count ratio
  294         00 9E      oz1_8Ratio	.equ	09Eh	; - 1/8oz count ratio
  295         00 A0      ozRatio		.equ	0A0h	; 1oz count ratio(2B)
  296         00 A4      lbRatio		.equ	0A4h	; 1lb count ratio(2B)
  297                    
  298                    ;-----------------------------
  299         00 A8      TimeoutTmr	.equ	0A8h	; (1N) communication timeout timer 183*3 ms
  300                    
  301                    	.list on
  302                    
  303                    ;-----------------
  304         00 01      VerD1		.equ	1
  305         00 08      VerD2		.equ	8
  306                    
  307                    ;----------------------------------------------------------------------------
  308                    
  309  0000              	.origin	VectorTable
  310  0000              ResetVector
  311  0000   8B 86      	VENT0	1,0,Reset	; Reset Vector
  312  0002   C0 8D      	VENT1	1,1,INTB_Int	;
  313  0004   C1 2F      	VENT2	1,1,INT0_Int	;
  314  0006   C0 80      	VENT3	1,1,INT1_Int	;
  315  000A              	ORG	00ah		;
  316  000A   C1 89      	VENT5	1,1,INTT0_Int	;
  317                    
  318                    ;----------------------------------------------------------------------------
  319                    ;
  320  000C              	.origin	Main1Loop
  321                    
  322                    ;----------------------------------------------------------------------------
  323  000C   DD 66      IRETSB	POP	SB
  324  000E   D5         	IRET
  325                    ;----------------------------------------------------------------------------
  326  000F   2A         RETHLEA	POP	HL
  327  0010   28         	POP	EA
  328  0011   C5         	RET
  329                    ;----------------------------------------------------------------------------
  330  0012              RETWXHLEA
  331  0012   2C         	POP	WX
  332  0013   2A         	POP	HL
  333  0014   28         	POP	EA
  334  0015   C5         	RET
  335                    ;----------------------------------------------------------------------------
  336  0016              RETYZWXHLEA
  337  0016   2E         	POP	YZ
  338  0017   2C         	POP	WX
  339  0018   2A         	POP	HL
  340  0019   28         	POP	EA
  341  001A   C5         	RET
  342                    
  343                    ;***********************************************************
  344                    ;	F: Copy Buf to Buf from xyH to x0H where x & y are any hex num
  345                    ;	I: HL = Destination Buf(Buf end pointer)
  346                    ;	   WL = Source Buf(Buf end pointer)
  347                    ;	O: HL = Duplicated Buf
  348                    ;	D: A, HL
  349                    ;
  350  001B   8F         CpyBuf	LD	A,@WL		;
  351  001C   7B         	XCHD	A,@HL		;
  352  001D   0D         	JR	CpyBuf		;
  353  001E   C5         	RET
  354                    
  355                    ;----------------------------------------------------------------------------
  356                    ;
  357  0020              	.origin	LookupTable
  358                    
  359  0020   DD 40      RSMB_Variable	SMB	VariableBank
  360  0022   DD 4F      RSMB_MemMapIO	SMB	MemMapIOBank
  361  0024   DD 41      RSMB_LCD	SMB	LCDBank
  362                    
  363  0026   82         RINCS_2HL	INCS	HL		;
  364  0027   82         		INCS	HL		;
  365  0028   DC DA      RDECS_HL	DECS	HL		;
  366  002A   DC F2      RLD_HLEA	LD	HL,EA		;
  367  002C   DC F4      RLD_WXEA	LD	WX,EA		;
  368  002E   81 00      RLD_EA0		LD	EA,#0		;
  369  0030   D9 09      RLD_E0		LD	E,#0		;
  370  0032   D9 00      RCPSE_A0	CPSE	A,#0		;
  371  0034   DC EA      RCPSE_EAHL	CPSE	EA,HL		;
  372  0036   DC AA      RADC_EAHL	ADC	EA,HL		;
  373                    
  374                    
  375  0038   CD 4E      RLD_LDIGxxx1EA	LD	LDigitxxx1,EA
  376  003A   CD 50      RLD_LDIGxx1xEA	LD	LDigitxx1x,EA
  377                    
  378  003C   44 24      RDiv_YS		TCALL	Div_YS
  379  003E   44 6A      RRound_YS	TCALL	Round_YS
  380  0040   49 68      RMul_10_FReg	TCALL	Mul_10_FReg
  381  0042   49 71      RDiv_10_FReg	TCALL	Div_10_FReg
  382  0044   44 14      RDouble_YS	TCALL	Double_YS
  383                    
  384  0046   49 78      RCmpHex		TCALL	CmpHex
  385  0048   40 1B      RCpyBuf		TCALL	CpyBuf
  386  004A   49 1C      RHex2BCD_16	TCALL	Hex2BCD_16
  387  004C   49 D9      RSubHex		TCALL	SubHex
  388                    
  389  004E   4A 02      RSkipSRC_YZ	TCALL	SkipSRC_YZ
  390  0050   49 40      RByteAry	TCALL	ByteAry
  391  0052   49 48      RWrd2Ary	TCALL	Wrd2Ary
  392  0054   4C F8      RStoreWordCode	TCALL	StoreWordCode
  393  0056   4C F2      RStoreByteCode	TCALL	StoreByteCode
  394                    
  395  0058   4D 38      RDspSDigit	TCALL	DspSDigit
  396  005A   4D 45      RDsp4LDigit	TCALL	Dsp4LDigit
  397  005C   4D 5A      RDspSymbol	TCALL	DspSymbol
  398                    
  399  005E   4A 8F      RKScanDelay	TCALL	KScanDelay
  400                    
  401  0060   47 F7      RCalWeightCnt	TCALL	CalWeightCount
  402  0062   48 A1      RActCurStp2Ary	TCALL	ActlCurStep2Ary
  403  0064   48 9A      RCurStep2Ary	TCALL	CurStep2Ary
  404  0066   48 B0      RSetBnd		TCALL	SetBnd
  405  0068   48 D0      RGetAverageCnt	TCALL	GetAverageCnt
  406  006A   48 14      RAverageSample  TCALL   AverageSample
  407                    
  408  006C   49 02      RNWCnt2FReg	TCALL	NWCnt2FReg
  409  006E   49 08      RHxFReg2Dec	TCALL   HxFReg2Dec
  410  0070   49 11      RCpy_R2FReg	TCALL	Cpy_R2FReg
  411  0072   49 14      RCpy_F2LReg	TCALL	Cpy_F2LReg
  412  0074   4A 42      RPutDec		TCALL	PutDec
  413                    
  414  0076   DD 67      RPush_SB	PUSH	SB
  415                    
  416  0078   00 0F      RRET_HLEA	TJP	RETHLEA
  417  007A   00 12      RRET_WXHLEA	TJP	RETWXHLEA
  418  007C   00 16      RRET_YZWXHLEA	TJP	RETYZWXHLEA
  419  007E   00 0C      RIRET_SB	TJP	IRETSB
  420                    
  421                    ;----------------------------------------------------------------------------
  422                    ;
  423  0080              	.origin	Main2Loop
  424                    
  425                    ;----------------------------------------------------------------------------
  426                    ;	F: On/Zero Button(MaB)
  427                    ;	I: WeightTareNow
  428                    ;	O: WeightTareNow
  429                    ;	N: Rising edge when release key(MaB)
  430                    ;	   When enter INT1_Int, IS0, IS1 = 1, 0
  431                    ;
  432  0080              INT1_Int
  433  0080   FE AE              BITR    IRQ1            ;
  434  0082   FE A0              BITR    IS0             ;        
  435  0084   73         	REF	RPush_SB	;
  436  0085   20         	REF	RSMB_Variable	;
  437  0086   E2 22      	BTSF	CalibrateOn	;
  438  0088   E0 21      	BITR	CntDspNow	;
  439                    ;	REF	RSMB_MemMapIO	;
  440                    ;INT1_Int1
  441                    ;	BTST    ONZERO_PIN
  442                    ;        JR      INT1_Int1
  443                    ;	REF	RSMB_Variable	;	
  444  008A   F1 21      	BITS	WeightTareNow	; Set flag to weight tare	
  445  008C   77         	REF	RIRET_SB	;
  446                    
  447                    ;----------------------------------------------------------------------------
  448                    ;	F: INTB Interrupt for Basic Timer Overflow
  449                    ;	N: Interrupt interval = 2.2886.ms
  450                    ;	   when enter into INTB_Int, IS0, IS1 = 1, 0
  451  008D              INTB_Int
  452  008D   FE 88              BITR    IRQB            ;
  453  008F   FE A0              BITR    IS0             ;
  454                    
  455  0091   73         	REF	RPush_SB	;
  456  0092   DD 53      	SRB	RegisterINTB	;
  457  0094   20         	REF	RSMB_Variable	;
  458                    
  459  0095   E2 22      	BTSF	CalibrateOn	; If Calibrate On, skip sleep time
  460  0097   90 D2      	JPS	INTB_Int0_2	; & Timer counting
  461                    
  462  0099   CE 36      	LD	EA,BCNT_1s_M	;
  463  009B   C9 01      	ADS	EA,#1		;
  464  009D   90 D0      	JPS	INTB_Int0_1	;
  465  009F   CA 35      	INCS	BCNT_1s_H	; never skip
  466  00A1   C2 35      	BTSF	BCNT_1s_H.0	;
  467  00A3   90 D0      	JPS	INTB_Int0_1	;
  468  00A5              INTB_1000ms
  469                    
  470  00A5   D3 7F      	BTST	HoldRd		; Check for hold reading in progress
  471  00A7   1C         	JR	INTB_IntA	;
  472                    
  473  00A8   CA 3F      	INCS	HoldTimer	; Check hold reading timeout
  474  00AA   19         	JR	INTB_IntA	;
  475  00AB   D0 7F      	BITR	HoldRd		; 
  476  00AD   C0 7F      	BITR	HoldStableChk	;
  477  00AF   F1 7F      	BITS	HoldNotAllow	; Hold is not allow unless reading change
  478  00B1   BC         	LD	A,#HoldChkTime	; Reset timer
  479  00B2   89 3F      	LD	HoldTimer,A	;
  480  00B4              INTB_IntA
  481  00B4              INTB_IntB
  482  00B4   E2 25      	BTSF	AutoOffEn	; Chk Auto-power off enabled or not
  483  00B6   90 CB      	JPS	INTB_IntC	; if not, jump
  484  00B8   C2 22      	BTSF	Chge4stepNow	; Chk 4 step changing

⌨️ 快捷键说明

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