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

📄 tbtx.asm

📁 我在公司做的基于430F206的互感器现场效验仪.有原理图印板图及源程序,已定型.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	BLDD	* ,#_nTbTxEnd
	LACK	0
	B	EPI0_4
L24:
	.line	34
;>>>> 			nTbTxChBuf[nTbTxEnd]=SOH_REAPT;
	LAC	_nTbTxEnd
	ADLK	_nTbTxChBuf+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	SPLK	#33153,* 
	.line	35
;>>>> 			nTbTxEnd++;nTbTxEnd &=0x00ff;
	LAC	_nTbTxEnd
	ADDK	1
	SACL	_nTbTxEnd
	ANDK	255
	SACL	_nTbTxEnd
L23:
	.line	38
;>>>> 		for(k=0;k<3;k++)
	LACK	0
	MAR	* ,AR2
	MAR	*-
	SACL	* 
	ZALS	* 
	SUBK	3
	BGEZ	L26
L25:
	.line	40
;>>>> 			if(nTbTxEnd==nTbTxBegin)
	LDPK	_nTbTxEnd
	LAC	_nTbTxEnd
	SUB	_nTbTxBegin
	BNZ	L27
	.line	41
;>>>> 			{nTbTxEnd=nSaveTxEnd;return(False);}
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	BLDD	* ,#_nTbTxEnd
	LACK	0
	B	EPI0_4
L27:
	.line	42
;>>>> 			nTbTxChBuf[nTbTxEnd]=SOH;
	LAC	_nTbTxEnd
	ADLK	_nTbTxChBuf+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	SPLK	#32382,* ,AR2
	.line	43
;>>>> 			nTbTxEnd++;nTbTxEnd &=0x00ff; 
	LAC	_nTbTxEnd
	ADDK	1
	SACL	_nTbTxEnd
	ANDK	255
	SACL	_nTbTxEnd
	.line	38
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	3
	BLZ	L25
L26:
	.line	46
;>>>> 		reg_p=(unsigned int *)reg_imr;
	LACK	4
	ADRK	3
	SACL	* 
	.line	47
;>>>> 		if((*reg_p & 0x0010)==0)
	LAR	AR3,* ,AR3
	BIT	* ,11
	BBNZ	L28
	.line	48
;>>>> 		{*reg_p |=0x00010;}
	LACK	16
	OR	* 
	SACL	* 
L28:
	.line	50
;>>>> 		return(True);
	RSXM
	LACK	65535
EPI0_4:
	.line	51
	MAR	* ,AR1
	SBRK	7
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	174,000000000H,6

	.sym	_TbTranTxData,_TbTranTxData,46,2,0
	.globl	_TbTranTxData

	.func	175
;>>>> 	Boolean TbTranTxData(unsigned int command,unsigned int Len,unsigned int *info,unsigned int *nTxBuf)
******************************************************
* FUNCTION DEF : _TbTranTxData
******************************************************
_TbTranTxData:

LF5	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+,AR2

	.sym	_command,-3+LF5,14,9,16
	.sym	_Len,-4+LF5,14,9,16
	.sym	_info,-5+LF5,30,9,16
	.sym	_nTxBuf,-6+LF5,30,9,16
	.sym	_i,1,14,1,16
	.sym	_k,2,14,1,16
	.sym	_reg_p,3,30,1,16
	.line	2
;>>>> 	unsigned int i,k,*reg_p;
	.line	5
;>>>> 	  if(Len>256-1) return(False);
	LARK	AR2,-4+LF5
	MAR	*0+
	ZALS	* 
	SUBK	255
	BLEZ	L29
	LACK	0
	B	EPI0_5
L29:
	.line	6
;>>>> 	  *nTxBuf++=command;
	SBRK	2
	LAR	AR3,* 
	ADRK	3
	LAC	* ,AR3
	SACL	*+,AR2
	SBRK	3
	SAR	AR3,* 
	.line	7
;>>>> 	  *nTxBuf++=Len;
	LAR	AR3,* 
	ADRK	2
	LAC	* ,AR3
	SACL	*+,AR2
	SBRK	2
	SAR	AR3,* 
	.line	8
;>>>> 	  for(i=2;i<Len+2;i++)    {	*nTxBuf++=*info++;}
	LACK	2
	ADRK	7-LF5
	SACL	* 
	SBRK	5-LF5
	ZALS	* 
	ADDK	2
	ANDK	0FFFFh
	ADRK	5-LF5
	SUBS	* 
	BLEZ	L31
	SBRK	6-LF5
L30:
	LAR	AR3,*-
	LAR	AR4,*+,AR3
	LAC	*+,AR2
	SAR	AR3,*-,AR4
	SACL	*+,AR2
	SAR	AR4,* 
	ADRK	7-LF5
	LAC	* 
	ADDK	1
	SACL	* 
	SBRK	5-LF5
	ZALS	* 
	ADDK	2
	ANDK	0FFFFh
	ADRK	5-LF5
	SUBS	* 
	SBRK	6-LF5
	BGZ	L30
L31:
	.line	9
;>>>> 	  nTxBuf=nTxBuf-Len-2;
	LARK	AR2,-6+LF5
	MAR	*0+
	LAC	* 
	SUBK	2
	ADRK	2
	SUB	* 
	SBRK	2
	SACL	* 
	.line	10
;>>>> 	  i=TbSentTxCrc(nTxBuf,Len+2);
	ADRK	2
	LAC	* ,AR1
	ADDK	2
	SACL	*+,AR2
	SBRK	2
	LAC	* ,AR1
	SACL	*+
	CALL	_TbSentTxCrc
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	12
;>>>> 	  if(i==False)
	LAC	* 
	BNZ	L32
	.line	13
;>>>> 	    {reg_p=(unsigned int *)reg_imr;
	LACK	4
	ADRK	2
	SACL	* 
	.line	14
;>>>> 		 if((*reg_p & 0x0010)==0)
	LAR	AR3,* ,AR3
	BIT	* ,11
	BBNZ	L32
	.line	15
;>>>> 		 {*reg_p |=0x00010;}
	LACK	16
	OR	* 
	SACL	* 
L32:
	.line	17
;>>>> 		return(i);
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	ZALS	* 
EPI0_5:
	.line	18
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	192,000000000H,4

	.sym	_TbTxInt,_TbTxInt,32,2,0
	.globl	_TbTxInt

	.func	193
;>>>> 	interrupt void TbTxInt()
;>>>> 	unsigned int	i,flag_sspcr,*reg_p;
******************************************************
* FUNCTION DEF : _TbTxInt
******************************************************
_TbTxInt:
	CALL	I$$SAVE
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.sym	_flag_sspcr,2,14,1,16
	.sym	_reg_p,3,30,1,16
	.line	4
;>>>> 		reg_p=(unsigned int *)reg_ifr;
	LACK	6
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	6
;>>>> 		if(nTbTxBegin==nTbTxEnd)
	LDPK	_nTbTxBegin
	LAC	_nTbTxBegin
	SUB	_nTbTxEnd
	BNZ	L34
	.line	8
;>>>> 				*reg_p |=0x0010; 
	LAR	AR3,* ,AR3
	LACK	16
	OR	* 
	SACL	* ,AR2
	.line	9
;>>>> 		 		reg_p=(unsigned int *)reg_imr;
	LACK	4
	SACL	* 
	.line	10
;>>>> 				*reg_p &=0xffef;
	LAR	AR3,* ,AR3
	LACK	65519
	AND	* 
	SACL	* 
	.line	11
;>>>> 		 		return;
	B	EPI0_6
L34:
	.line	13
;>>>> 	  if((reg_sspcr & 0x2000)==0)
	MAR	* ,AR0
	IN	* ,0fff1h
	ZALS	* 
	ANDK	8192
	BNZ	L35
	.line	15
;>>>> 		for(i=0;i<4;i++)
	LACK	0
	MAR	* ,AR2
	SBRK	2
	SACL	* 
	ZALS	* 
	SUBK	4
	BGEZ	L35
L36:
	.line	17
;>>>> 		  if(nTbTxBegin==nTbTxEnd)
	LDPK	_nTbTxBegin
	LAC	_nTbTxBegin
	SUB	_nTbTxEnd
	BNZ	L38
	.line	18
;>>>> 		 	{   reg_sdtr=SOH;
;>>>> 			else
	LACK	32382
	MAR	* ,AR0
	SACL	* 
	OUT	* ,0fff0h
	B	L39
L38:
	.line	23
;>>>> 		  		reg_sdtr=nTbTxChBuf[nTbTxBegin++];
	LAC	_nTbTxBegin
	ADDK	1
	SACL	_nTbTxBegin
	SUBK	1
	ADLK	_nTbTxChBuf+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	OUT	* ,0fff0h
	.line	24
;>>>> 		  		nTbTxBegin &=0x00ff;
	LACK	255
	AND	_nTbTxBegin
	SACL	_nTbTxBegin
L39:
	.line	15
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	4
	BLZ	L36
L35:
	.line	28
;>>>> 		*reg_p |=0x0010; 
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	LAR	AR3,* ,AR3
	LACK	16
	OR	* 
	SACL	* 
EPI0_6:
	.line	29
	MAR	* ,AR1
	SBRK	4
	B	I$$REST,AR1   ;and return

	.endfunc	221,000000000H,4

	.sym	_TbRxInt,_TbRxInt,32,2,0
	.globl	_TbRxInt

	.func	222
;>>>> 	interrupt void TbRxInt()
;>>>> 	unsigned int	iii,*reg_p;
******************************************************
* FUNCTION DEF : _TbRxInt
******************************************************
_TbRxInt:
	CALL	I$$SAVE
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+,AR2

	.sym	_iii,1,14,1,16
	.sym	_reg_p,2,30,1,16
	.line	5
;>>>> 		reg_p=(unsigned int *)reg_ifr;
	LACK	6
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR0
	.line	6
;>>>> 		if((reg_sspcr & 0x0080)!=0)	
	IN	* ,0fff1h
	ZALS	* 
	ANDK	128
	BZ	L40
	.line	7
;>>>> 		iii=0;
	LACK	0
	MAR	* ,AR2
	MAR	*-
	SACL	* 
L40:
	.line	8
;>>>> 		cc1++;
	LDPK	_cc1
	LAC	_cc1
	ADDK	1
	SACL	_cc1
	.line	9
;>>>> 		cc1 &=0xf; 
	ANDK	15
	SACL	_cc1
	.line	10
;>>>> 		iii=0; iii=0;
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	SACL	* ,AR0
	.line	11
;>>>> 		while((reg_sspcr & 0x1000)!=0)
	IN	* ,0fff1h
	ZALS	* 
	ANDK	4096
	BZ	L42
	MAR	* ,AR2
L41:
	.line	13
;>>>> 	     iii++;
	LAC	* 
	ADDK	1
	SACL	* ,AR0
	.line	14
;>>>> 	     nTbRxChBuf[nTbRxEnd++]=reg_sdtr;
	LDPK	_nTbRxEnd
	LAC	_nTbRxEnd
	ADDK	1
	SACL	_nTbRxEnd
	SUBK	1
	ADLK	_nTbRxChBuf+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	IN	* ,0fff0h,AR0
	.line	15
;>>>> 	     nTbRxEnd &=0x00ff;
	LACK	255
	AND	_nTbRxEnd
	SACL	_nTbRxEnd
	.line	11
	IN	* ,0fff1h
	ZALS	* ,AR2
	ANDK	4096
	BNZ	L41
L42:
	.line	17
;>>>> 		ccc[cc1]=iii;
	LAC	_cc1
	ADLK	_ccc+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	*+,AR3
	SACL	* ,AR2
	.line	18
;>>>> 	   *reg_p =0x0008; 
	LAR	AR3,* ,AR3
	LACK	8
	SACL	* ,AR1
EPI0_7:
	.line	20
	SBRK	3
	B	I$$REST,AR1   ;and return

	.endfunc	241,000000000H,3

	.sym	_RdSysData,_RdSysData,32,2,0
	.globl	_RdSysData

	.func	242
;>>>> 	void RdSysData()                              
;>>>> 	{unsigned nTab[5];
******************************************************
* FUNCTION DEF : _RdSysData
******************************************************
_RdSysData:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,6
	LAR	AR0,*0+

	.sym	_nTab,1,62,1,80,,5
	.line	3
;>>>> 	   ReadRom((unsigned *)((&TbRdSysTab)+nNewSysDataRdPreAdr),nTab,4);
	LACK	4
	SACL	*+,AR3
	LARK	AR3,1
	MAR	*0+,AR1
	SAR	AR3,*+
	LDPK	_nNewSysDataRdPreAdr
	LAC	_nNewSysDataRdPreAdr
	ADLK	_TbRdSysTab+0,0
	SACL	*+
	CALL	_ReadRom
	SBRK	3
	.line	4
;>>>> 	   if(nTab[0]==0 )
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	BNZ	L43
	.line	5
;>>>> 	    {nNewSysDataRdPreAdr=0;bNewSysRdData=False;return;}
	LACK	0
	SACL	_nNewSysDataRdPreAdr
	SACL	_bNewSysRdData
	B	EPI0_8
L43:
	.line	6
;>>>> 	   TbTranTxData(0x2200,4,nTab,nTbTxCh);  
	LALK	_nTbTxCh+0
	MAR	* ,AR1
	SACL	*+,AR3
	LARK	AR3,1
	MAR	*0+,AR1
	SAR	AR3,*+
	LACK	4
	SACL	*+
	LACK	8704
	SACL	*+
	CALL	_TbTranTxData
	SBRK	4
EPI0_8:
	.line	7
	MAR	* ,AR1
	SBRK	7
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	248,000000000H,6

	.sym	_WrSysData,_WrSysData,46,2,0
	.globl	_WrSysData

	.func	249
;>>>> 	Boolean WrSysData()                              
;>>>> 	unsigned int i,*reg_p,*info;
;>>>> 	int	Len;
******************************************************
* FUNCTION DEF : _WrSysData
******************************************************
_WrSysData:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+

	.sym	_i,1,14,1,16
	.sym	_reg_p,2,30,1,16
	.sym	_info,3,30,1,16
	.sym	_Len,4,4,1,16
	.line	5
;>>>> 	  ReadRom((unsigned *)((&TbWrSysTab)+nNewSysDataWrPreAdr),nTbTxCh+1,4);   
	LACK	4
	SACL	*+
	LALK	_nTbTxCh+1
	SACL	*+
	LDPK	_nNewSysDataWrPreAdr
	LAC	_nNewSysDataWrPreAdr
	ADLK	_TbWrSysTab+0,0
	SACL	*+
	CALL	_ReadRom
	SBRK	3
	.line	6
;>>>> 	  if(nTbTxCh[1]==0)
	LDPK	_nTbTxCh+1
	LAC	_nTbTxCh+1
	BNZ	L44
	.line	7
;>>>> 	   {nNewSysDataWrPreAdr=0;
	LACK	0
	LDPK	_nNewSysDataWrPreAdr
	SACL	_nNewSysDataWrPreAdr
	.line	8
;>>>> 	    if(bRefurbish==True)
	ZALS	_bRefurbish
	RSXM
	SUBK	-1
	BNZ	EPI0_9
	.line	9
;>>>> 	    TbTranTxData(0x4444,1,nTbRxCh,nTbTxCh);
	LALK	_nTbTxCh+0
	SACL	*+
	LALK	_nTbRxCh+0
	SACL	*+
	LACK	1
	SACL	*+
	LACK	17476
	SACL	*+
	CALL	_TbTranTxData
	SBRK	4
	.line	10
;>>>> 	    return;}
	B	EPI0_9
L44:
	.line	11
;>>>> 	  Len=nTbTxCh[2];
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	BLKD	#_nTbTxCh+2,*-
	.line	12
;>>>> 	  info=(unsigned *)nTbTxCh[1];
	BLKD	#_nTbTxCh+1,*-
	.line	13
;>>>> 	  reg_p=nTbTxCh;
	LALK	_nTbTxCh+0
	SACL	* 
	.line	14
;>>>> 	  if(Len>256-1) return(False);
	SSXM
	ADRK	2
	LAC	* 
	SUBK	255
	BLEZ	L46
	LACK	0
	B	EPI0_9
L46:
	.line	15
;>>>> 	  *reg_p++=0x3355;
	SBRK	2
	LAR	AR3,* ,AR3
	SPLK	#13141,*+,AR2
	SAR	AR3,* 
	.line	16
;>>>> 	  *reg_p++=Len+3;
	ADDK	258
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	17
;>>>> 	  reg_p+=3;
	LAC	* 
	ADDK	3
	SACL	*-
	.line	18
;>>>> 	  for(i=5;i<Len+5;i++)    {	*reg_p++=*info++;}
	LACK	5
	SACL	* 
	ADRK	3
	LAC	* 
	ADDK	5
	ANDK	0FFFFh
	SBRK	3
	SUBS	* 
	BLEZ	L48
	ADRK	2
L47:
	LAR	AR3,*-
	LAR	AR4,*+,AR3
	LAC	*+,AR2
	SAR	AR3,*-,AR4
	SACL	*+,AR2
	SAR	AR4,*-
	LAC	* 
	ADDK	1
	SACL	* 

⌨️ 快捷键说明

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