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

📄 can.asm

📁 DSP部分功能测试 串口
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -v2xx -iC:/CCStudio_v3.1/c2400/cgtools/include can.c C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\can.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\can.if C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\can.asm C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\can.tmp 
	.port
	.file	"can.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"can.c"
	.globl	_port2040
	.globl	_test_can
	.text

	.sym	_can_init,_can_init,32,2,0
	.globl	_can_init

	.func	14
;>>>> 	void can_init(void)
******************************************************
* FUNCTION DEF : _can_init
******************************************************
_can_init:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		 *MCRB = *MCRB | 0x0c0;				//IOPC6,7 as CANTX,CANRX
	LARK	AR3,28818
	LACK	192
	OR	* 
	SACL	* 
	.line	4
;>>>> 		 *CAN_IFR=0xffff;					//clear CAN int pending
	ADRK	119
	SPLK	#65535,* 
	.line	5
;>>>> 		 *LAM1_H=0x7fff;					//mailbox 2,3 mask ID R
	ADRK	4
	SPLK	#32767,*+
	.line	6
;>>>> 		 *LAM1_L=0xffff;					//donot need to check the ID
	SPLK	#65535,* 
	.line	9
;>>>> 		 *MCR=0x1040;   					/*set CCR=1,self test*/
	SBRK	11
	SPLK	#4160,* 
	.line	10
;>>>> 		 while(((*GSR)&0x0010) == 0)  		/*if CCE=0 then wait*/
	ADRK	4
	BIT	* ,11
	BBNZ	L3
	.line	11
;>>>> 		 	continue; 	
L1:
	.line	10
	LARK	AR3,28935
	MAR	* ,AR3
	BIT	* ,11
	BBZ	L1
L3:
	.line	12
;>>>> 		 *BCR1=0x0023;						/*TSEG1 = 4, TSEG2 = 3*/;
	LACK	35
	SBRK	2
	SACL	*-
	.line	13
;>>>> 		 *BCR2=0x0003;						/*BRP = 3*/ 
	LACK	3
	SACL	*-
	.line	15
;>>>> 		 *MCR=(*MCR)&0xefff;          		/*CCR=0*/
	LACK	61439
	AND	* 
	SACL	* 
	.line	16
;>>>> 		 while(((*GSR)&0x0010) == 0x0010)	/*if CCE=0 config success*/  
	LACK	16
	ADRK	4
	AND	* 
	SUBK	16
	BNZ	L6
	.line	17
;>>>> 		 	continue;
L4:
	.line	16
	LARK	AR3,28935
	LACK	16
	MAR	* ,AR3
	AND	* 
	SUBK	16
	BZ	L4
L6:
	.line	21
;>>>> 		 *MDER=0x40;			/*disabled mailbox 0-5, config box2 as receive box, box3 as send box*/ 
	LACK	64
	SBRK	7
	SACL	* 
	.line	22
;>>>> 		 *MCR=0x0143;			/*CDR=1, self check mode, select mail box3*/ 
;>>>> 		//config mailbox2 control byte and ID
	ADRK	3
	SPLK	#323,* ,AR4
	.line	25
;>>>> 		 *MSGID2H=0x05555;
	LARK	AR4,29201
	SPLK	#21845,*-
	.line	26
;>>>> 		 *MSGID2L=0x0aaaa;
	SPLK	#43690,* 
	.line	27
;>>>> 		 *MSGCTRL2=0x0008;		/*DCL = 8, RTR = 0 data frame*/
;>>>> 		//mailbox2 initilize	 
	LACK	8
	ADRK	2
	SACL	* 
	.line	29
;>>>> 		 *MBX2A=0x0;
	LACK	0
	ADRK	2
	SACL	*+
	.line	30
;>>>> 		 *MBX2B=0x0;
	SACL	*+
	.line	31
;>>>> 		 *MBX2C=0x0;
	SACL	*+
	.line	32
;>>>> 		 *MBX2D=0x0; 
;>>>> 		//config mailbox2 and 3 control byte and ID
	SACL	* 
	.line	35
;>>>> 		 *MSGID3H=0x05555;
	ADRK	2
	SPLK	#21845,*-
	.line	36
;>>>> 		 *MSGID3L=0x0aaaa;
	SPLK	#43690,* 
	.line	37
;>>>> 		 *MSGCTRL3=0x0008;		/*DCL = 8, RTR = 0 data frame*/
;>>>> 		//mailbox3 initilize	 
	LACK	8
	ADRK	2
	SACL	* 
	.line	39
;>>>> 		 *MBX3A=0x01;
	LACK	1
	ADRK	2
	SACL	*+
	.line	40
;>>>> 		 *MBX3B=0x02;
	LACK	2
	SACL	*+
	.line	41
;>>>> 		 *MBX3C=0x03;
	LACK	3
	SACL	*+
	.line	42
;>>>> 		 *MBX3D=0x04; 
	LACK	4
	SACL	* ,AR3
	.line	46
;>>>> 		 *MCR=0x4c0;  				/*DBO = 1, ABO =1, STM = 1, self test mode*/
	SPLK	#1216,* 
	.line	47
;>>>> 		 *MDER=0x4c;				/*enable mailbox2,3, box2 as receivebox, box3 as sendbox*/
	LACK	76
	SBRK	3
	SACL	* 
	.line	48
;>>>> 		 *CAN_IMR=0x0ffff;			/*disable can int*/
	ADRK	10
	SPLK	#65535,*-
	.line	49
;>>>> 		 *CAN_IFR=0x0ffff;
	SPLK	#65535,* ,AR1
EPI0_1:
	.line	50
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	63,000000000H,1

	.sym	_test_can,_test_can,46,2,0
	.globl	_test_can

	.func	66
;>>>> 	unsigned int test_can(void)
;>>>> 		 unsigned int data_rec1,data_rec2,data_rec3,data_rec4;
******************************************************
* FUNCTION DEF : _test_can
******************************************************
_test_can:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+

	.sym	_data_rec1,1,14,1,16
	.sym	_data_rec2,2,14,1,16
	.sym	_data_rec3,3,14,1,16
	.sym	_data_rec4,4,14,1,16
	.line	4
;>>>> 		 can_init();
	CALL	_can_init
	.line	6
;>>>> 		 *TCR=0x20;					/*mailbox3 request send*/ 
	LARK	AR3,28929
	LACK	32
	MAR	* ,AR3
	SACL	* 
	.line	8
;>>>> 		 while(((*TCR)&0x2000)==0)  	
	BIT	* ,2
	BBNZ	L9
	.line	9
;>>>> 		 	continue;				/*if TA3=0 then wait*/
L7:
	.line	8
	LARK	AR3,28929
	MAR	* ,AR3
	BIT	* ,2
	BBZ	L7
L9:
	.line	10
;>>>> 		 *TCR=(*TCR)|0x2000;		/*clear TA3 and MIF3*/ 
	LACK	8192
	OR	* 
	SACL	*+
	.line	13
;>>>> 		 while(((*RCR)&0x0040)==0) 
	BIT	* ,9
	BBNZ	L12
	.line	14
;>>>> 		 	continue;				/*if RMP0=0 then wait*/
L10:
	.line	13
	LARK	AR3,28930
	MAR	* ,AR3
	BIT	* ,9
	BBZ	L10
L12:
	.line	15
;>>>> 		 *RCR=(*RCR)|0x0040;		/*RMP2=1*/ 
	LACK	64
	OR	* 
	SACL	* ,AR4
	.line	17
;>>>> 		 data_rec1=*MBX2A;
	LARK	AR4,29204
	LAC	*+,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	*+,AR4
	.line	18
;>>>> 		 data_rec2=*MBX2B;
	LAC	*+,AR2
	SACL	*+,AR4
	.line	19
;>>>> 		 data_rec3=*MBX2C;
	LAC	*+,AR2
	SACL	*+,AR4
	.line	20
;>>>> 		 data_rec4=*MBX2D;
	LAC	* ,AR2
	SACL	* 
	.line	25
;>>>> 		 if(data_rec1!=*MBX3A)return(0);
	SBRK	3
	LAC	* ,AR4
	ADRK	5
	SUB	* 
	BZ	L13
	LACK	0
	B	EPI0_2
L13:
	.line	26
;>>>> 		 if(data_rec2!=*MBX3B)return(0);
	MAR	*+,AR2
	MAR	*+
	LAC	* ,AR4
	SUB	* 
	BZ	L14
	LACK	0
	B	EPI0_2
L14:
	.line	27
;>>>> 		 if(data_rec3!=*MBX3C)return(0);
	MAR	*+,AR2
	MAR	*+
	LAC	* ,AR4
	SUB	* 
	BZ	L15
	LACK	0
	B	EPI0_2
L15:
	.line	28
;>>>> 		 if(data_rec4!=*MBX3D)return(0);
	MAR	*+,AR2
	MAR	*+
	LAC	* ,AR4
	SUB	* 
	BZ	L16
	LACK	0
	B	EPI0_2
L16:
	.line	29
;>>>> 		 return(1);
	LACK	1
EPI0_2:
	.line	30
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	95,000000000H,5
	.end

⌨️ 快捷键说明

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