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

📄 mod_response.asm

📁 dsp320lf2407上的相关程序文件
💻 ASM
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00       
*******************************************************
;	C:\tic2xx\c2000\cgtools\bin\dspac.exe -v2xx mod_response.c C:\DOCUME~1\jjd\LOCALS~1\Temp\mod_response.if 
;	dspopt NOT RUN
;	C:\tic2xx\c2000\cgtools\bin\dspcg.exe -o -v2xx -o C:\DOCUME~1\jjd\LOCALS~1\Temp\mod_response.if C:\DOCUME~1\jjd\LOCALS~1\Temp\mod_response.asm C:\DOCUME~1\jjd\LOCALS~1\Temp\mod_response.tmp 
	.port
	.bss	_i3,1,1
	.bss	_i6,1
	.bss	_i1,1
	.bss	_i5,1
	.bss	_i$1,1
	.bss	_res_buf,20
	.bss	_res_data,103
	.file	"mod_response.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"mod_response.c"

	.stag	_datatype,1648
	.member	_data_add_h,0,14,8,16
	.member	_data_add_l,16,14,8,16
	.member	_data_buf,32,62,8,1600,,100
	.member	_data_byte_num,1632,14,8,16
	.eos
	.globl	_res_data
	.globl	_disable
	.globl	_enable
	.globl	_mod_fun
	.globl	_lcddata
	.globl	_start_addr_h
	.globl	_start_addr_l
	.globl	_n_data_h
	.globl	_n_data_l
	.globl	_res_buf

	.sect	".cinit"
	.word	1,_i3
	.word	0

	.sym	_i3,_i3,14,2,16
	.globl	_i3
	.word	1,_i6
	.word	0

	.sym	_i6,_i6,14,2,16
	.globl	_i6
	.word	1,_i1
	.word	0

	.sym	_i1,_i1,14,2,16
	.globl	_i1
	.word	1,_i5
	.word	0

	.sym	_i5,_i5,14,2,16
	.globl	_i5
	.text

	.sym	_reset_response,_reset_response,32,2,0
	.globl	_reset_response

	.func	20
;>>>> 	void reset_response(void)
;>>>> 		unsigned int i;
******************************************************
* FUNCTION DEF : _reset_response
******************************************************
_reset_response:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_i,1,14,1,16
	.line	4
;>>>> 		for(i=0;i<20;i++)res_buf[i]=0;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	20
	BGEZ	L2
L1:
	LAC	* ,AR0
	ADLK	_res_buf+0,0
	SACL	* 
	LAR	AR3,* ,AR3
	LACK	0
	SACL	* ,AR2
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	20
	BLZ	L1
L2:
	.line	5
;>>>> 		mod_fun=0;
	LACK	0
	LDPK	_mod_fun
	SACL	_mod_fun
EPI0_1:
	.line	6
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	25,000000000H,2

	.sym	_uart_send,_uart_send,32,2,0
	.globl	_uart_send

	.func	27
;>>>> 	void uart_send(void)
;>>>> 		static int i=0;
;>>>> 		switch(mod_fun)
;>>>> 			case 3:
******************************************************
* FUNCTION DEF : _uart_send
******************************************************
_uart_send:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+


	.sect	".cinit"
	.word	1,_i$1
	.word	0
	.text

	.sym	_i,_i$1,4,3,16
	B	L3
L4:
	.line	8
;>>>> 				if(i>=i3){i=0;reset_response();return;}
	LDPK	_i$1
	ZALS	_i$1
	SUBS	_i3
	BLZ	L6
	LACK	0
	SACL	_i$1
	CALL	_reset_response,AR1
	B	EPI0_2
	.line	9
;>>>> 				break;
;>>>> 			case 6:
L7:
	.line	13
;>>>> 				if(i>=i6){i=0;reset_response();return;}
	LDPK	_i$1
	ZALS	_i$1
	SUBS	_i6
	BLZ	L6
	LACK	0
	SACL	_i$1
	CALL	_reset_response,AR1
	B	EPI0_2
	.line	14
;>>>> 				break;
;>>>> 			case 5:
L9:
	.line	18
;>>>> 				if(i>=i5){i=0;reset_response();return;}
	LDPK	_i$1
	ZALS	_i$1
	SUBS	_i5
	BLZ	L6
	LACK	0
	SACL	_i$1
	CALL	_reset_response,AR1
	B	EPI0_2
	.line	19
;>>>> 				break;
;>>>> 			case 1:
L11:
	.line	23
;>>>> 				if(i>=i1){i=0;reset_response();return;}
	LDPK	_i$1
	ZALS	_i$1
	SUBS	_i1
	BLZ	L6
	LACK	0
	SACL	_i$1
	CALL	_reset_response,AR1
	B	EPI0_2
	.line	24
;>>>> 				break;
	.line	26
;>>>> 			default:return;
L3:
	.line	4
	LDPK	_mod_fun
	ZALS	_mod_fun
	SUBK	1
	BZ	L11
	SUBK	2
	BZ	L4
	SUBK	2
	BZ	L9
	SUBK	1
	BZ	L7
	B	EPI0_2
L6:
	.line	28
;>>>> 		*SCITXBUF=res_buf[i++];
	LAC	_i$1
	ADDK	1
	SACL	_i$1
	SUBK	1
	ADLK	_res_buf+0,0
	MAR	* ,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LARK	AR4,28761
	LAC	* ,AR4
	SACL	* ,AR3
	.line	29
;>>>> 		*IFR=0x0010;
	LARK	AR3,6
	LACK	16
	SACL	* ,AR1
	.line	30
;>>>> 		enable();
	CALL	_enable
EPI0_2:
	.line	31
	MAR	* ,AR1
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	57,000000000H,1

	.sym	_mod_res,_mod_res,32,2,0
	.globl	_mod_res

	.func	64
;>>>> 	void mod_res(void)
;>>>> 		unsigned int i,crc_temp,j;
******************************************************
* FUNCTION DEF : _mod_res
******************************************************
_mod_res:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+

	.sym	_i,1,14,1,16
	.sym	_crc_temp,2,14,1,16
	.sym	_j,3,14,1,16
	.line	4
;>>>> 		delay(1000);
	LACK	1000
	SACL	*+
	CALL	_delay
	MAR	*-
	.line	5
;>>>> 		rs485_send_rd();
;>>>> 		switch(mod_fun)
;>>>> 			case 3:			/*response to Read Holding Registers*/
	CALL	_rs485_send_rd
	B	L14
L15:
	.line	10
;>>>> 				res_buf[0]=0x01;
	LACK	1
	LDPK	_res_buf
	SACL	_res_buf
	.line	11
;>>>> 				res_buf[1]=0x03;
	LACK	3
	SACL	_res_buf+1
	.line	12
;>>>> 				res_buf[2]=res_data.data_byte_num;
	BLKD	#_res_data+102,_res_buf+2
	.line	13
;>>>> 				for(i=0;i<res_data.data_byte_num;i++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBS	_res_data+102
	BGEZ	L17
L16:
	.line	14
;>>>> 				res_buf[3+i]=res_data.data_buf[i];
	LAC	* ,AR0
	ADLK	_res_data+2,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_res_buf+3,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	13
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	LDPK	_res_data+102
	SUBS	_res_data+102
	BLZ	L16
L17:
	.line	15
;>>>> 				crc_temp=CRC16(res_buf,3+i);
	LAC	* ,AR1
	ADDK	3
	SACL	*+
	LALK	_res_buf+0
	SACL	*+
	CALL	_CRC16
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	16
;>>>> 				res_buf[3+i]=crc_temp/0x0100;
	RSXM
	LAC	*-,7,AR1
	SACH	* ,1,AR2
	LAC	*+,AR0
	ADLK	_res_buf+3,0
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* ,AR2
	.line	17
;>>>> 				res_buf[4+i]=crc_temp%0x0100;
	LACK	255
	AND	*-,AR1
	SACL	* ,AR2
	LAC	* ,AR0
	ADLK	_res_buf+4,0
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* ,AR2
	.line	19
;>>>> 				i3=5+i;
	LAC	* 
	ADDK	5
	LDPK	_i3
	SACL	_i3
	.line	29
;>>>> 	   			break;
;>>>> 	   		case 6:
	B	L18
L19:
	.line	34
;>>>> 	   			res_buf[0]=0x01;
	LACK	1
	LDPK	_res_buf
	SACL	_res_buf
	.line	35
;>>>> 	   			res_buf[1]=0x06;
	LACK	6
	SACL	_res_buf+1
	.line	36
;>>>> 	   			res_buf[2]=res_data.data_add_h;
	BLKD	#_res_data,_res_buf+2
	.line	37
;>>>> 	   			res_buf[3]=res_data.data_add_l;
	BLKD	#_res_data+1,_res_buf+3
	.line	38
;>>>> 	   			res_buf[4]=res_data.data_buf[0];
	BLKD	#_res_data+2,_res_buf+4
	.line	39
;>>>> 	   			res_buf[5]=res_data.data_buf[1];
	BLKD	#_res_data+3,_res_buf+5
	.line	40
;>>>> 	   			crc_temp=CRC16(res_buf,6);
	MAR	* ,AR1
	SACL	*+
	LALK	_res_buf+0
	SACL	*+
	CALL	_CRC16
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	41
;>>>> 	   			res_buf[6]=crc_temp/0x0100;
	RSXM
	LAC	* ,7
	LDPK	_res_buf+6
	SACH	_res_buf+6,1
	.line	42
;>>>> 	   			res_buf[7]=crc_temp%0x0100;
	LACK	255
	AND	* 
	SACL	_res_buf+7
	.line	44
;>>>> 	   			i6=8;
	LACK	8
	SACL	_i6
	.line	54
;>>>> 	   			break;
;>>>> 	   		case 1:
	B	L18
L20:
	.line	59
;>>>> 	   			res_buf[0]=0x01;
	LACK	1
	LDPK	_res_buf
	SACL	_res_buf
	.line	60
;>>>> 	   			res_buf[1]=0x01;
	SACL	_res_buf+1
	.line	61
;>>>> 	   			res_buf[2]=res_data.data_byte_num;
	BLKD	#_res_data+102,_res_buf+2
	.line	62
;>>>> 				for(i=0;i<res_data.data_byte_num;i++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBS	_res_data+102
	BGEZ	L22
L21:
	.line	63
;>>>> 				res_buf[3+i]=res_data.data_buf[i];
	LAC	* ,AR0
	ADLK	_res_data+2,0
	SACL	* 
	LAR	AR3,* ,AR2
	LAC	* ,AR0
	ADLK	_res_buf+3,0
	SACL	* 
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	SACL	* ,AR2
	.line	62
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	LDPK	_res_data+102
	SUBS	_res_data+102
	BLZ	L21
L22:
	.line	64
;>>>> 				crc_temp=CRC16(res_buf,3+i);
	LAC	* ,AR1
	ADDK	3
	SACL	*+
	LALK	_res_buf+0
	SACL	*+
	CALL	_CRC16
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	65
;>>>> 				res_buf[3+i]=crc_temp/0x0100;
	RSXM
	LAC	*-,7,AR1
	SACH	* ,1,AR2
	LAC	*+,AR0
	ADLK	_res_buf+3,0
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* ,AR2
	.line	66
;>>>> 				res_buf[4+i]=crc_temp%0x0100;
	LACK	255
	AND	*-,AR1
	SACL	* ,AR2
	LAC	* ,AR0
	ADLK	_res_buf+4,0
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* ,AR2
	.line	68
;>>>> 				i1=5+i;
	LAC	* 
	ADDK	5
	LDPK	_i1
	SACL	_i1
	.line	78
;>>>> 	   			break;
;>>>> 	   		case 5:
	B	L18
L23:
	.line	83
;>>>> 	   			res_buf[0]=0x01;
	LACK	1
	LDPK	_res_buf
	SACL	_res_buf
	.line	84
;>>>> 	   			res_buf[1]=0x05;
	LACK	5
	SACL	_res_buf+1
	.line	85
;>>>> 	   			res_buf[2]=res_data.data_add_h;
	BLKD	#_res_data,_res_buf+2
	.line	86
;>>>> 	   			res_buf[3]=res_data.data_add_l;
	BLKD	#_res_data+1,_res_buf+3
	.line	87
;>>>> 	   			res_buf[4]=res_data.data_buf[0];
	BLKD	#_res_data+2,_res_buf+4
	.line	88
;>>>> 	   			res_buf[5]=res_data.data_buf[1];
	BLKD	#_res_data+3,_res_buf+5
	.line	89
;>>>> 	   			crc_temp=CRC16(res_buf,6);
	MAR	* ,AR1
	LACK	6
	SACL	*+
	LALK	_res_buf+0
	SACL	*+
	CALL	_CRC16
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	90
;>>>> 				res_buf[6]=crc_temp/0x0100;
	RSXM
	LAC	* ,7
	LDPK	_res_buf+6
	SACH	_res_buf+6,1
	.line	91
;>>>> 				res_buf[7]=crc_temp%0x0100;
	LACK	255
	AND	* 
	SACL	_res_buf+7
	.line	93
;>>>> 				i5=8;
	LACK	8
	SACL	_i5
	.line	103
;>>>> 	   			break;
	B	L18
L24:
	.line	106
;>>>> 	   		default:reset_response();
	CALL	_reset_response,AR1
	B	L18
L14:
	.line	6
	LDPK	_mod_fun
	ZALS	_mod_fun
	SUBK	1
	BZ	L20
	SUBK	2
	BZ	L15
	SUBK	2
	BZ	L23
	SUBK	1
	BZ	L19
	B	L24
L18:
	.line	109
;>>>> 	   rs485_rec_rd();
	CALL	_rs485_rec_rd,AR1
EPI0_3:
	.line	110
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	173,000000000H,4

	.sym	_transaction,_transaction,32,2,0
	.globl	_transaction

	.func	183
;>>>> 	extern void transaction(void)
;>>>> 		unsigned int i,j,temp;
;>>>> 		switch(mod_fun)
;>>>> 			case 3:
******************************************************
* FUNCTION DEF : _transaction
******************************************************
_transaction:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+

	.sym	_i,1,14,1,16
	.sym	_j,2,14,1,16
	.sym	_temp,3,14,1,16
	B	L25
L26:
	.line	9
;>>>> 				 res_data.data_byte_num=2*(n_data_h*0x0100+n_data_l);
	LDPK	_n_data_l
	LAC	_n_data_l
	LDPK	_n_data_h
	ADD	_n_data_h,8
	MAR	* ,AR0
	SACL	* 
	LT	* ,AR2
	MPYK	2
	LDPK	_res_data+102
	SPL	_res_data+102
	.line	10
;>>>> 				 for(i=0,j=0;j<(n_data_h*0x0100+n_data_l);i+=2,j++)
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	SACL	* 
	LDPK	_n_data_l
	ZALS	_n_data_l
	RSXM
	LDPK	_n_data_h
	ADD	_n_data_h,8
	ANDK	0FFFFh
	SUBS	* 
	BLEZ	L29
L27:
	.line	12
;>>>> 				 	temp=*(start_addr_h*0x0100+start_addr_l+lcddata+j);
	LDPK	_start_addr_h
	LAC	_start_addr_h,8
	ADLK	_lcddata+0,0
	LDPK	_start_addr_l
	ADD	_start_addr_l
	ADD	*+,AR0
	SACL	* 
	LAR	AR3,* ,AR3
	LAC	* ,AR2
	SACL	* 
	.line	13
;>>>> 				 	res_data.data_buf[i]=temp/0x0100;
	LAC	* ,7,AR1
	SACH	*+,1,AR2
	SBRK	2
	LAC	* ,AR0
	ADLK	_res_data+2,0
	SACL	* 
	LAR	AR3,* ,AR1
	MAR	*-
	LAC	* ,AR3
	SACL	* ,AR2
	.line	14
;>>>> 				 	res_data.data_buf[i+1]=temp%0x0100;
	LACK	255
	ADRK	2
	AND	* ,AR1
	SACL	*+,AR2
	SBRK	2
	LAC	* ,AR0
	ADLK	_res_data+3,0
	SACL	* 
	LAR	AR3,* ,AR1
	MAR	*-
	LAC	* ,AR3
	SACL	* ,AR2
	.line	10
	LAC	* 
	ADDK	2
	SACL	*+
	LAC	* 
	ADDK	1
	SACL	* 
	LDPK	_n_data_l
	ZALS	_n_data_l
	LDPK	_n_data_h
	ADD	_n_data_h,8
	ANDK	0FFFFh
	SUBS	* 
	BGZ	L27
	.line	16
;>>>> 				 break;
;>>>> 			case 6:
	B	L29
L30:
	.line	20
;>>>> 				res_data.data_add_h=start_addr_h;
	LDPK	_start_addr_h
	BLDD	_start_addr_h,#_res_data
	.line	21
;>>>> 				res_data.data_add_l=start_addr_l;
	LDPK	_start_addr_l
	BLDD	_start_addr_l,#_res_data+1
	.line	22
;>>>> 				*(start_addr_h*0x0100+start_addr_l+lcddata)=n_data_h*0x0100+n_data_l;
	LDPK	_n_data_l
	LAC	_n_data_l
	LDPK	_n_data_h
	ADD	_n_data_h,8
	MAR	* ,AR1
	SACL	* ,AR0
	RSXM
	LDPK	_start_addr_h
	LAC	_start_addr_h,8
	ADLK	_lcddata+0,0
	LDPK	_start_addr_l
	ADD	_start_addr_l
	SACL	* 
	LAR	AR3,* ,AR1
	LAC	* ,AR3
	SACL	* 
	.line	23
;>>>> 				res_data.data_buf[0]=n_data_h;
	LDPK	_n_data_h
	BLDD	_n_data_h,#_res_data+2
	.line	24
;>>>> 				res_data.data_buf[1]=n_data_l;
	LDPK	_n_data_l
	BLDD	_n_data_l,#_res_data+3
	.line	26
;>>>> 			break;
	B	L29
	.line	28
;>>>> 			default:return;
L25:
	.line	5
	LDPK	_mod_fun
	ZALS	_mod_fun
	SUBK	3
	BZ	L26
	SUBK	3
	BZ	L30
	B	EPI0_4
L29:
	.line	30
;>>>> 		mod_res();
	CALL	_mod_res,AR1
EPI0_4:
	.line	32
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	214,000000000H,4

	.sym	_res_buf,_res_buf,62,2,320,,20
	.globl	_res_buf

	.sym	_res_data,_res_data,8,2,1648,_datatype
	.globl	_res_data
*****************************************************
* UNDEFINED REFERENCES                              *
*****************************************************
	.global	_delay
	.global	_rs485_send_rd
	.global	_CRC16
	.global	_rs485_rec_rd
	.end

⌨️ 快捷键说明

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