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

📄 protocol.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.line	25
;>>>> 	      		pcdata[2] = 0xb0;
	LACK	176
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	26
;>>>> 	      		pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	27
;>>>> 	      		wr_crc_resp();
;>>>> 	   	else                          // 错误参数模式
	CALL	_wr_crc_resp
	B	L67
L63:
	.line	32
;>>>> 	      	if( pcdata[1] == deviceAddr )   //只有本机地址响应      	
	LDPK	_pcdata+1
	LAC	_pcdata+1
	LDPK	_deviceAddr
	SUB	_deviceAddr
	BNZ	L67
	.line	33
;>>>> 	         	resp_para_err();
	CALL	_resp_para_err,AR1
L67:
EPI0_10:
	.line	35
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	372,000000000H,5

	.sym	_rd_sgl_blk_pro,_rd_sgl_blk_pro,32,2,0
	.globl	_rd_sgl_blk_pro

	.func	375
;>>>> 	void rd_sgl_blk_pro(void)   
;>>>> 	   	uchar flags,addr;
******************************************************
* FUNCTION DEF : _rd_sgl_blk_pro
******************************************************
_rd_sgl_blk_pro:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,6
	LAR	AR0,*0+,AR2

	.sym	_flags,1,12,1,16
	.sym	_addr,2,12,1,16
	.sym	_flag,3,12,1,16
	.sym	_i,4,12,1,16
	.sym	_j,5,12,1,16
	.line	4
;>>>> 	   	uchar flag=0;   
;>>>> 	   	uchar i,j;
	LACK	0
	LARK	AR2,3
	MAR	*0+
	SACL	*-
	.line	7
;>>>> 	   	addr = pcdata[1];
	BLKD	#_pcdata+1,*-
	.line	8
;>>>> 	   	flags = pcdata[4]&0x07;
	LACK	7
	LDPK	_pcdata+4
	AND	_pcdata+4
	SACL	* 
	.line	9
;>>>> 	   	if( (flags==0)||(flags==2) )
	LAC	* 
	BZ	LL13
	LAC	* 
	SUBK	2
	BNZ	L69
LL13:
	.line	11
;>>>> 	      	if(flags==0) { flags = ISOFlagsSys&0xcf;}
	LAC	* 
	BNZ	L70
	LACK	207
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	SACL	* 
	B	L71
L70:
	.line	12
;>>>> 	      	else         { flags = ISOFlagsSys|0x10;}	//select_flag
	LACK	16
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
L71:
	.line	13
;>>>> 	      	if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }	//option_flag  
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L72
	LACK	64
	OR	* 
	SACL	* 
L72:
	.line	15
;>>>> 	      	if(pcdata[5] >64) { flag = 1; }      //目前先调试64块以内数据
;>>>> 	      	else
	LDPK	_pcdata+5
	ZALS	_pcdata+5
	SUBK	64
	BLEZ	L73
	LACK	1
	ADRK	2
	SACL	* 
	B	L75
L73:
	.line	18
;>>>> 	         	viccdata[0] = 6;
	LACK	6
	LDPK	_viccdata
	SACL	_viccdata
	.line	19
;>>>> 	         	viccdata[1] = flags;
	BLDD	* ,#_viccdata+1,AR1
	.line	20
;>>>> 	         	viccdata[2] = 0x20;
	LACK	32
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	21
;>>>> 	         	viccdata[3] = pcdata[5];
	LDPK	_pcdata+5
	BLDD	_pcdata+5,#_viccdata+3
	.line	22
;>>>> 		       	wr_crc_send();
	CALL	_wr_crc_send
	B	L75
L69:
	.line	25
;>>>> 	   	else if(flags==1)
	LAC	* 
	SUBK	1
	BNZ	L76
	.line	27
;>>>> 	      	if(pcdata[13] >63) { flag = 1;}
;>>>> 	      	else
	LDPK	_pcdata+13
	ZALS	_pcdata+13
	SUBK	63
	BLEZ	L77
	LACK	1
	ADRK	2
	SACL	* 
	B	L75
L77:
	.line	30
;>>>> 	      		flags = ISOFlagsSys|0x20;	//address_flag
	LACK	32
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
	.line	31
;>>>> 	      		if((ISOModeSys & 0x04) == 0x04) {flags |= 0x40;}	//option_flag 
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L79
	LACK	64
	OR	* 
	SACL	* 
L79:
	.line	32
;>>>> 	         	viccdata[0] = 14;
	LACK	14
	LDPK	_viccdata
	SACL	_viccdata
	.line	33
;>>>> 	         	viccdata[1] = flags;
	BLDD	* ,#_viccdata+1
	.line	34
;>>>> 	         	viccdata[2] = 0x20;
	LACK	32
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	35
;>>>> 	         	for(i=3,j=12;i<11;i++,j--) { viccdata[i] = pcdata[j];}
	LACK	3
	ADRK	3
	SACL	*+
	LACK	12
	SACL	*-
	ZALS	* 
	SUBK	11
	BGEZ	L81
	MAR	*+
L80:
	LAC	*-,AR0
	ADLK	_pcdata+0,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_viccdata+0,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	*+
	LAC	* 
	SUBK	1
	SACL	*-
	ZALS	*+
	SUBK	11
	BLZ	L80
L81:
	.line	36
;>>>> 	         	viccdata[11] = pcdata[13] ;
	LDPK	_pcdata+13
	BLDD	_pcdata+13,#_viccdata+11
	.line	37
;>>>> 	         	wr_crc_send();
	CALL	_wr_crc_send,AR1
	B	L75
L76:
	.line	40
;>>>> 	   	else { flag = 1;}
	LACK	1
	ADRK	2
	SACL	* 
L75:
	.line	43
;>>>> 	   	if( deviceAddr == pcdata[1] )   //本机响应   
	LDPK	_deviceAddr
	LAC	_deviceAddr
	LDPK	_pcdata+1
	SUB	_pcdata+1
	BNZ	L82
	.line	45
;>>>> 	      	if(flag == 1)                      //块号参数超出标签允许值
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	LAC	* 
	SUBK	1
	BNZ	L83
	.line	47
;>>>> 	         	resp_para_err();
;>>>> 	      	else
	CALL	_resp_para_err,AR1
	B	L82
L83:
	.line	51
;>>>> 	         	ISOMode = ISOModeSys;          	      		
	LDPK	_ISOModeSys
	BLDD	_ISOModeSys,#_ISOMode
	.line	52
;>>>> 	         	i = sendISOCmd();
	CALL	_sendISOCmd,AR1
	MAR	* ,AR2
	LARK	AR2,4
	MAR	*0+
	SACL	* 
	.line	53
;>>>> 	         	CS_RAM_1;	      
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	54
;>>>> 	         	if(i==0)                                //没有标签的存在
	LAC	* 
	BNZ	L85
	.line	56
;>>>> 	            	resp_no_trns();
;>>>> 	         	else
	CALL	_resp_no_trns,AR1
	B	L82
L85:
	.line	60
;>>>> 	            	if(viccdata[1]==0)                   //标签正确执行ISO指令
	LDPK	_viccdata+1
	LAC	_viccdata+1
	BNZ	L87
	.line	62
;>>>> 	            		if((ISOModeSys & 0x04) == 0x04)	//含有块状态信息
	LACK	4
	LDPK	_ISOModeSys
	AND	_ISOModeSys
	SUBK	4
	BNZ	L88
	.line	64
;>>>> 		               		pcdata[0] = 11;
	LACK	11
	LDPK	_pcdata
	SACL	_pcdata
	.line	65
;>>>> 		               		pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	66
;>>>> 		               		pcdata[2] = 0xb0;
	LACK	176
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	67
;>>>> 		               		pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	68
;>>>> 		               		pcdata[4] = viccdata[2];
	LDPK	_viccdata+2
	BLDD	_viccdata+2,#_pcdata+4
	.line	69
;>>>> 		               		pcdata[5] = viccdata[3];
	LDPK	_viccdata+3
	BLDD	_viccdata+3,#_pcdata+5
	.line	70
;>>>> 		               		pcdata[6] = viccdata[4];
	LDPK	_viccdata+4
	BLDD	_viccdata+4,#_pcdata+6
	.line	71
;>>>> 		               		pcdata[7] = viccdata[5];
	LDPK	_viccdata+5
	BLDD	_viccdata+5,#_pcdata+7
	.line	72
;>>>> 		               		pcdata[8] = viccdata[6];
;>>>> 	               		else	//不含有块状态信息
	LDPK	_viccdata+6
	BLDD	_viccdata+6,#_pcdata+8
	B	L89
L88:
	.line	76
;>>>> 	               			pcdata[0] = 10;
	LACK	10
	LDPK	_pcdata
	SACL	_pcdata
	.line	77
;>>>> 		               		pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	78
;>>>> 		               		pcdata[2] = 0xb0;
	LACK	176
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	79
;>>>> 		               		pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	80
;>>>> 		               		pcdata[4] = viccdata[2];
	LDPK	_viccdata+2
	BLDD	_viccdata+2,#_pcdata+4
	.line	81
;>>>> 		               		pcdata[5] = viccdata[3];
	LDPK	_viccdata+3
	BLDD	_viccdata+3,#_pcdata+5
	.line	82
;>>>> 		               		pcdata[6] = viccdata[4];
	LDPK	_viccdata+4
	BLDD	_viccdata+4,#_pcdata+6
	.line	83
;>>>> 		               		pcdata[7] = viccdata[5];	               				
	LDPK	_viccdata+5
	BLDD	_viccdata+5,#_pcdata+7
L89:
	.line	85
;>>>> 	               		wr_crc_resp();
;>>>> 	            	else                                 //标签执行指令ISO错误
	CALL	_wr_crc_resp,AR1
	B	L82
L87:
	.line	89
;>>>> 	               		resp_iso_err();
	CALL	_resp_iso_err,AR1
L82:
EPI0_11:
	.line	94
	MAR	* ,AR1
	SBRK	7
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	468,000000000H,6

	.sym	_wr_sgl_blk_pro,_wr_sgl_blk_pro,32,2,0
	.globl	_wr_sgl_blk_pro

	.func	470
;>>>> 	void wr_sgl_blk_pro(void)     //Write Single Block 
;>>>> 	   	uchar flags,addr;
;>>>> 	   	uchar i,j;
******************************************************
* FUNCTION DEF : _wr_sgl_blk_pro
******************************************************
_wr_sgl_blk_pro:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,6
	LAR	AR0,*0+,AR2

	.sym	_flags,1,12,1,16
	.sym	_addr,2,12,1,16
	.sym	_i,3,12,1,16
	.sym	_j,4,12,1,16
	.sym	_flag,5,12,1,16
	.line	5
;>>>> 	   	uchar flag =0; 
	LACK	0
	LARK	AR2,5
	MAR	*0+
	SACL	* 
	.line	7
;>>>> 	   	addr = pcdata[1];
	SBRK	3
	BLKD	#_pcdata+1,*-
	.line	8
;>>>> 	   	flags = pcdata[4]&0x07;
	LACK	7
	LDPK	_pcdata+4
	AND	_pcdata+4
	SACL	* 
	.line	9
;>>>> 	   	if( (flags==0)||(flags==2) )
	LAC	* 
	BZ	LL16
	LAC	* 
	SUBK	2
	BNZ	L91
LL16:
	.line	11
;>>>> 			if(flags==0) { flags = ISOFlagsSys&0xcf;}
	LAC	* 
	BNZ	L92
	LACK	207
	LDPK	_ISOFlagsSys
	AND	_ISOFlagsSys
	SACL	* 
	B	L93
L92:
	.line	12
;>>>> 	      	else         { flags = ISOFlagsSys|0x10;}	//select_flag
	LACK	16
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
L93:
	.line	13
;>>>> 	      	flags |= 0x40;		//option_flag        		
	ORK	64
	SACL	* 
	.line	14
;>>>> 	      	if(pcdata[5] >64) { flag = 1;} 
;>>>> 	      	else
	LDPK	_pcdata+5
	ZALS	_pcdata+5
	SUBK	64
	BLEZ	L94
	LACK	1
	ADRK	4
	SACL	* 
	B	L96
L94:
	.line	17
;>>>> 	         	viccdata[0] = 10;
	LACK	10
	LDPK	_viccdata
	SACL	_viccdata
	.line	18
;>>>> 	         	viccdata[1] = flags;
	BLDD	* ,#_viccdata+1,AR1
	.line	19
;>>>> 	         	viccdata[2] = 0x21;
	LACK	33
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	20
;>>>> 	         	viccdata[3] = pcdata[5] ;
	LDPK	_pcdata+5
	BLDD	_pcdata+5,#_viccdata+3
	.line	21
;>>>> 	         	viccdata[4] = pcdata[7];
	LDPK	_pcdata+7
	BLDD	_pcdata+7,#_viccdata+4
	.line	22
;>>>> 	         	viccdata[5] = pcdata[8];
	LDPK	_pcdata+8
	BLDD	_pcdata+8,#_viccdata+5
	.line	23
;>>>> 	         	viccdata[6] = pcdata[9];
	LDPK	_pcdata+9
	BLDD	_pcdata+9,#_viccdata+6
	.line	24
;>>>> 	         	viccdata[7] = pcdata[10];
	LDPK	_pcdata+10
	BLDD	_pcdata+10,#_viccdata+7
	.line	25
;>>>> 	         	wr_crc_send();
	CALL	_wr_crc_send
	B	L96
L91:
	.line	28
;>>>> 	   	else if(flags==1)
	LAC	* 
	SUBK	1
	BNZ	L97
	.line	30
;>>>> 	      	flags = ISOFlagsSys|0x20;	//address_flag
	LACK	32
	LDPK	_ISOFlagsSys
	OR	_ISOFlagsSys
	SACL	* 
	.line	31
;>>>> 	      	flags |= 0x40;		//option_flag      		
	ORK	64
	SACL	* 
	.line	32
;>>>> 	      	if(pcdata[13] >64) { flag = 1;}
;>>>> 	      	else
	LDPK	_pcdata+13
	ZALS	_pcdata+13
	SUBK	64
	BLEZ	L98
	LACK	1
	ADRK	4
	SACL	* 
	B	L96
L98:
	.line	35
;>>>> 	         	viccdata[0] = 18;
	LACK	18
	LDPK	_viccdata
	SACL	_viccdata
	.line	36
;>>>> 	         	viccdata[1] = flags;
	BLDD	* ,#_viccdata+1
	.line	37
;>>>> 	         	viccdata[2] = 0x21;
	LACK	33
	LDPK	_viccdata+2
	SACL	_viccdata+2
	.line	38
;>>>> 	         	for(i=3,j=12;i<11;i++,j--) { viccdata[i]= pcdata[j]; }
	LACK	3
	ADRK	2
	SACL	*+
	LACK	12
	SACL	*-
	ZALS	* 
	SUBK	11
	BGEZ	L101
	MAR	*+
L100:
	LAC	*-,AR0
	ADLK	_pcdata+0,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_viccdata+0,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	*+
	LAC	* 
	SUBK	1
	SACL	*-
	ZALS	*+
	SUBK	11
	BLZ	L100
L101:
	.line	39
;>>>> 	         	viccdata[11] = pcdata[13] ;
	LDPK	_pcdata+13
	BLDD	_pcdata+13,#_viccdata+11
	.line	40
;>>>> 	         	viccdata[12] = pcdata[15];
	LDPK	_pcdata+15
	BLDD	_pcdata+15,#_viccdata+12
	.line	41
;>>>> 	         	viccdata[13] = pcdata[16];
	LDPK	_pcdata+16
	BLDD	_pcdata+16,#_viccdata+13
	.line	42
;>>>> 	         	viccdata[14] = pcdata[17];
	LDPK	_pcdata+17
	BLDD	_pcdata+17,#_viccdata+14
	.line	43
;>>>> 	         	viccdata[15] = pcdata[18];
	LDPK	_pcdata+18
	BLDD	_pcdata+18,#_viccdata+15
	.line	44
;>>>> 	         	wr_crc_send();
	CALL	_wr_crc_send,AR1
	B	L96
L97:
	.line	47
;>>>> 	   	else { flag = 1;}//mode error
	LACK	1
	ADRK	4
	SACL	* 
L96:
	.line	49
;>>>> 	   	if(flag == 1)                      //块号参数超出标签允许值
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	LAC	* 
	SUBK	1
	BNZ	L102
	.line	51
;>>>> 	      	if( deviceAddr == pcdata[1] )   //本机响应
	LDPK	_deviceAddr
	LAC	_deviceAddr
	LDPK	_pcdata+1
	SUB	_pcdata+1
	BNZ	L104
	.line	53
;>>>> 	         	resp_para_err();
;>>>> 	   	else
	CALL	_resp_para_err,AR1
	B	L104
L102:
	.line	58
;>>>> 	      	ISOMode = ISOModeSys | 0x10; //write        	   		
	LACK	16
	LDPK	_ISOModeSys
	OR	_ISOModeSys
	LDPK	_ISOMode
	SACL	_ISOMode
	.line	59
;>>>> 	      	i = sendISOCmd();  
	CALL	_sendISOCmd,AR1
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	60
;>>>> 	      	CS_RAM_1;
	LACK	63487
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	2056
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	61
;>>>> 	      	if( deviceAddr == pcdata[1] )   //本机响应
	LDPK	_deviceAddr
	LAC	_deviceAddr
	LDPK	_pcdata+1
	SUB	_pcdata+1
	BNZ	L104
	.line	63
;>>>> 	         	if(i==0)
	LAC	* 
	BNZ	L106
	.line	65
;>>>> 	            	resp_no_trns();
;>>>> 	         	else
	CALL	_resp_no_trns,AR1
	B	L104
L106:
	.line	69
;>>>> 	            	if(viccdata[1] == 0)
	LDPK	_viccdata+1
	LAC	_viccdata+1
	BNZ	L108
	.line	71
;>>>> 	               		pcdata[0] = 6;
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	72
;>>>> 	               		pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	73
;>>>> 	               		pcdata[2] = ISO_MANDATORY_CMD;
	LACK	176
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	74
;>>>> 	               		pcdata[3] = OK;
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
	.line	75
;>>>> 	               		wr_crc_resp();
;>>>> 	            	else
	CALL	_wr_crc_resp,AR1
	B	L104
L108:
	.line	79
;>>>> 	               		resp_iso_err();
	CALL	_resp_iso_err,AR1
L104:
EPI0_12:
	.line	84
	MAR	* ,AR1
	SBRK	7
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	553,000000000H,6

	.sym	_lock_mul_blk_pro,_lock_mul_blk_pro,32,2,0
	.globl	_lock_mul_blk_pro

⌨️ 快捷键说明

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