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

📄 spi.asm

📁 EVM2407板卡上的测试程序源码
💻 ASM
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00       
*******************************************************
;	C:\TIC2XX\C2000\CGTOOLS\BIN\DSPAC.EXE -v2xx spi.c C:\WINDOWS\TEMP\spi.if 
;	dspopt NOT RUN
;	C:\TIC2XX\C2000\CGTOOLS\BIN\DSPCG.EXE -o -v2xx -o C:\WINDOWS\TEMP\spi.if C:\WINDOWS\TEMP\spi.asm C:\WINDOWS\TEMP\spi.tmp 
	.port
	.file	"spi.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"spi.c"
	.globl	_test_x25650
	.globl	_write_enable
	.globl	_read_x25650
	.globl	_write_x25650
	.globl	_reset_cs
	.globl	_set_cs
	.globl	_wr_busy
	.globl	_write_status
	.globl	_spi_init
	.text

	.sym	_spi_init,_spi_init,32,2,0
	.globl	_spi_init

	.func	17
;>>>> 	void spi_init(void)
;>>>> 		unsigned int temp;
******************************************************
* FUNCTION DEF : _spi_init
******************************************************
_spi_init:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR3

	.sym	_temp,1,14,1,16
	.line	4
;>>>> 		*SPICCR=0x0007;
	LARK	AR3,28736
	LACK	7
	SACL	*+
	.line	5
;>>>> 		*SPICTL=0x0006;
	LACK	6
	SACL	* 
	.line	6
;>>>> 		*SPIBRR=0x007f;
	LACK	127
	ADRK	3
	SACL	* 
	.line	7
;>>>> 		*SPICCR=*SPICCR|0x0080;
	LACK	128
	SBRK	4
	OR	* 
	SACL	* 
	.line	8
;>>>> 		*SPICCR=0xc7;
	LACK	199
	SACL	* 
	.line	9
;>>>> 		*SPIPRI=0x0030;
	LACK	48
	ADRK	15
	SACL	* 
	.line	10
;>>>> 		*SPITXBUF=0x5500;
	SBRK	7
	SPLK	#21760,* 
L1:
	.line	11
;>>>> 		while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L1
	.line	12
;>>>> 	    temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	13
;>>>> 		  write_enable();
	CALL	_write_enable
	.line	14
;>>>> 		 write_status();
	CALL	_write_status
EPI0_1:
	.line	16
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	32,000000000H,2

	.sym	_write_status,_write_status,32,2,0
	.globl	_write_status

	.func	34
;>>>> 	void write_status(void)    /*wpen=1,BL0=BL1=0*/
;>>>> 		int temp;
******************************************************
* FUNCTION DEF : _write_status
******************************************************
_write_status:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_temp,1,4,1,16
	.line	4
;>>>> 		reset_cs();
	CALL	_reset_cs
	.line	5
;>>>> 		*SPITXBUF=0x0100;
	LARK	AR3,28744
	MAR	* ,AR3
	SPLK	#256,* 
L2:
	.line	6
;>>>> 		while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L2
	.line	7
;>>>> 	    temp=*SPIRXBUF;
	ADRK	5
	LAC	*+,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR3
	.line	8
;>>>> 		*SPITXBUF=0x8000;
	SPLK	#32768,* 
L3:
	.line	9
;>>>> 		while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L3
	.line	10
;>>>> 	    temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	11
;>>>> 		set_cs();
	CALL	_set_cs
L4:
	.line	12
;>>>> 		while(wr_busy());
	CALL	_wr_busy,AR1
	BNZ	L4
EPI0_2:
	.line	13
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	46,000000000H,2

	.sym	_wr_busy,_wr_busy,46,2,0
	.globl	_wr_busy

	.func	48
;>>>> 	unsigned int wr_busy(void)
;>>>> 		 unsigned int temp;
******************************************************
* FUNCTION DEF : _wr_busy
******************************************************
_wr_busy:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_temp,1,14,1,16
	.line	4
;>>>> 		 reset_cs();
	CALL	_reset_cs
	.line	5
;>>>> 		 *SPITXBUF=0x0500; 
	LARK	AR3,28744
	MAR	* ,AR3
	SPLK	#1280,* 
L5:
	.line	6
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L5
	.line	7
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	*+,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR3
	.line	8
;>>>> 	     *SPITXBUF=0x0000;
	LACK	0
	SACL	* 
L6:
	.line	9
;>>>> 	     while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L6
	.line	10
;>>>> 	     set_cs();
	CALL	_set_cs,AR1
	.line	11
;>>>> 	     temp=*SPIRXBUF;
	LARK	AR3,28743
	MAR	* ,AR3
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	12
;>>>> 	     temp=temp&0x0001;
	LACK	1
	AND	* 
	SACL	* 
	.line	13
;>>>> 	     return(temp);
	ZALS	* 
EPI0_3:
	.line	14
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	61,000000000H,2

	.sym	_set_cs,_set_cs,32,2,0
	.globl	_set_cs

	.func	63
;>>>> 	void set_cs(void)
******************************************************
* FUNCTION DEF : _set_cs
******************************************************
_set_cs:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		 *PCDATDIR=*PCDATDIR|0x0020;
	LARK	AR3,28828
	LACK	32
	OR	* 
	SACL	* ,AR1
EPI0_4:
	.line	4
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	66,000000000H,1

	.sym	_reset_cs,_reset_cs,32,2,0
	.globl	_reset_cs

	.func	68
;>>>> 	void reset_cs(void)
******************************************************
* FUNCTION DEF : _reset_cs
******************************************************
_reset_cs:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		*PCDATDIR=*PCDATDIR&0xffdf;
	LARK	AR3,28828
	LACK	65503
	AND	* 
	SACL	* ,AR1
EPI0_5:
	.line	4
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	71,000000000H,1

	.sym	_write_x25650,_write_x25650,32,2,0
	.globl	_write_x25650

	.func	73
;>>>> 	void write_x25650(unsigned int addr,unsigned int data)
******************************************************
* FUNCTION DEF : _write_x25650
******************************************************
_write_x25650:

LF6	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_addr,-3+LF6,14,9,16
	.sym	_data,-4+LF6,14,9,16
	.sym	_temp,1,14,1,16
	.line	2
;>>>> 		 unsigned temp;
	.line	4
;>>>> 		 write_enable();
	CALL	_write_enable
	.line	5
;>>>> 		 reset_cs();
	CALL	_reset_cs
	.line	6
;>>>> 		 *SPITXBUF=0x0200;
	LARK	AR3,28744
	MAR	* ,AR3
	SPLK	#512,* 
L7:
	.line	7
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L7
	.line	8
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	9
;>>>> 		 *SPITXBUF=addr;
	SBRK	4-LF6
	LAC	* ,AR3
	MAR	*+
	SACL	* 
L8:
	.line	10
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L8
	.line	11
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	12
;>>>> 	     *SPITXBUF=(addr%0x100)*0x100;
	LACK	255
	SBRK	4-LF6
	AND	* ,AR0
	SACL	* 
	LAC	* ,8,AR3
	MAR	*+
	SACL	* 
L9:
	.line	13
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L9
	.line	14
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	15
;>>>> 		 *SPITXBUF=data*0x100;
	SBRK	5-LF6
	LAC	* ,8,AR3
	MAR	*+
	SACL	* 
L10:
	.line	16
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L10
	.line	17
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	18
;>>>> 		 set_cs();
	CALL	_set_cs
L11:
	.line	19
;>>>> 		 while(wr_busy());
	CALL	_wr_busy,AR1
	BNZ	L11
EPI0_6:
	.line	20
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	92,000000000H,2

	.sym	_read_x25650,_read_x25650,46,2,0
	.globl	_read_x25650

	.func	94
;>>>> 	unsigned int read_x25650(unsigned int addr)
******************************************************
* FUNCTION DEF : _read_x25650
******************************************************
_read_x25650:

LF7	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_addr,-3+LF7,14,9,16
	.sym	_temp,1,14,1,16
	.line	2
;>>>> 		unsigned int temp;
	.line	4
;>>>> 		reset_cs();
	CALL	_reset_cs
	.line	5
;>>>> 		*SPITXBUF=0x0300;
	LARK	AR3,28744
	MAR	* ,AR3
	SPLK	#768,* 
L12:
	.line	6
;>>>> 		while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L12
	.line	7
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	8
;>>>> 		*SPITXBUF=addr;
	SBRK	4-LF7
	LAC	* ,AR3
	MAR	*+
	SACL	* 
L13:
	.line	9
;>>>> 		while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L13
	.line	10
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	11
;>>>> 	     *SPITXBUF=(addr%0x100)*0x100;
	LACK	255
	SBRK	4-LF7
	AND	* ,AR0
	SACL	* 
	LAC	* ,8,AR3
	MAR	*+
	SACL	* 
L14:
	.line	12
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L14
	.line	13
;>>>> 	     temp=*SPIRXBUF;
	ADRK	5
	LAC	*+,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR3
	.line	14
;>>>> 		*SPITXBUF=0;
	LACK	0
	SACL	* 
L15:
	.line	15
;>>>> 		while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L15
	.line	16
;>>>> 	    temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	17
;>>>> 	    set_cs();
	CALL	_set_cs
	.line	18
;>>>> 	    return(temp&0x00ff);
	LACK	255
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	AND	* 
EPI0_7:
	.line	19
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	112,000000000H,2

	.sym	_write_enable,_write_enable,32,2,0
	.globl	_write_enable

	.func	114
;>>>> 	void write_enable(void)
;>>>> 		 int temp;
******************************************************
* FUNCTION DEF : _write_enable
******************************************************
_write_enable:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_temp,1,4,1,16
	.line	4
;>>>> 		 reset_cs();
	CALL	_reset_cs
	.line	5
;>>>> 		 *SPITXBUF=0x0600;
	LARK	AR3,28744
	MAR	* ,AR3
	SPLK	#1536,* 
L16:
	.line	6
;>>>> 		 while((*SPISTS&0x0040)==0);
	LARK	AR3,28738
	BIT	* ,9
	BBZ	L16
	.line	7
;>>>> 		 temp=*SPIRXBUF;
	ADRK	5
	LAC	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	8
;>>>> 		 set_cs();
	CALL	_set_cs
L17:
	.line	9
;>>>> 		 while(wr_busy());
	CALL	_wr_busy,AR1
	BNZ	L17
EPI0_8:
	.line	10
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	123,000000000H,2

	.sym	_test_x25650,_test_x25650,46,2,0
	.globl	_test_x25650

	.func	126
;>>>> 	unsigned int test_x25650(void)
;>>>> 		unsigned int data_read;
;>>>> 		unsigned int address;
******************************************************
* FUNCTION DEF : _test_x25650
******************************************************
_test_x25650:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+

	.sym	_data_read,1,14,1,16
	.sym	_address,2,14,1,16
	.line	5
;>>>> 		spi_init();
	CALL	_spi_init
	.line	6
;>>>> 		for(address=0;address<0x2000;address++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8192
	BGEZ	L19
	MAR	* ,AR1
L18:
	.line	8
;>>>> 			write_x25650(address,0x55);
	LACK	85
	SACL	*+,AR2
	LAC	* ,AR1
	SACL	*+
	CALL	_write_x25650
	SBRK	2
	.line	9
;>>>> 			data_read=read_x25650(address);
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	CALL	_read_x25650
	MAR	*-,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	*+
	.line	10
;>>>> 			if((address%256)<128)asm("	clrc  XF");
	LACK	255
	AND	* 
	SUBK	128
	BGEZ	L20
	clrc  XF
	B	L21
L20:
	.line	11
;>>>> 			else asm("	setc  XF");
	setc  XF
L21:
	.line	12
;>>>> 			if(data_read!=0x55)
	MAR	*-
	LAC	* 
	SUBK	85
	BZ	L22
	.line	14
;>>>> 				asm("nop");
nop
	.line	15
;>>>> 				return(0);
	LACK	0
	B	EPI0_9
L22:
	.line	6
	MAR	*+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* ,AR1
	SUBK	8192
	BLZ	L18
L19:
	.line	20
;>>>> 		return(1);
	LACK	1
EPI0_9:
	.line	21
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	146,000000000H,3
	.end

⌨️ 快捷键说明

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