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

📄 24cxx.asm

📁 DSP部分功能测试 串口
💻 ASM
📖 第 1 页 / 共 2 页
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include 24cxx.c C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\24cxx.if 
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\24cxx.if C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\24cxx.asm C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\24cxx.tmp 
	.port
	.bss	_ReadArr,10,1
	.bss	_comarr,10
	.file	"24cxx.c"
	.file	"f2407_c.h"
	.globl	_portFF0F
	.globl	_portFFFF
	.file	"string.h"
	.sym	_size_t,0,14,13,16
	.globl	_memchr
	.globl	_memcmp
	.globl	_memcpy
	.globl	_memmove
	.globl	_memset
	.globl	_strcat
	.globl	_strchr
	.globl	_strcmp
	.globl	_strcoll
	.globl	_strcpy
	.globl	_strcspn
	.globl	_strerror
	.globl	_strlen
	.globl	_strncat
	.globl	_strncmp
	.globl	_strncpy
	.globl	_strpbrk
	.globl	_strrchr
	.globl	_strspn
	.globl	_strstr
	.globl	_strtok
	.globl	_strxfrm
	.file	"ioports.h"
	.globl	__out_port
	.globl	__outport0
	.globl	__outport1
	.globl	__outport2
	.globl	__outport3
	.globl	__outport4
	.globl	__outport5
	.globl	__outport6
	.globl	__outport7
	.globl	__outport8
	.globl	__outport9
	.globl	__outport10
	.globl	__outport11
	.globl	__outport12
	.globl	__outport13
	.globl	__outport14
	.globl	__outport15
	.globl	__in_port
	.globl	__inport0
	.globl	__inport1
	.globl	__inport2
	.globl	__inport3
	.globl	__inport4
	.globl	__inport5
	.globl	__inport6
	.globl	__inport7
	.globl	__inport8
	.globl	__inport9
	.globl	__inport10
	.globl	__inport11
	.globl	__inport12
	.globl	__inport13
	.globl	__inport14
	.globl	__inport15
	.file	"24cxx.c"
	.globl	_comarr
	.globl	_ReadArr
	.globl	_test24LC256
	.globl	_test24
	.globl	_EEPROM_LC256
	.globl	_ReadPara
	.text

	.sym	_I2CStart,_I2CStart,32,2,0
	.globl	_I2CStart

	.func	111
;>>>> 	void  I2CStart()           //I2C启动//
;>>>> 	   	//int  k;  
******************************************************
* FUNCTION DEF : _I2CStart
******************************************************
_I2CStart:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	4
;>>>> 	   	SCL_L; //          // (IOPC0)SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* 
	.line	5
;>>>> 	   	SDADIR_O; //            // (IOPC1)SDA为输出1 //
	LACK	2312
	OR	* 
	SACL	* ,AR1
	.line	6
;>>>> 	   	delay(2* T_EEDLY ); //for (k = 17;k >= 0;k--) { }              // 软件延时5.1us //
	LACK	4
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	7
;>>>> 	   	SDA_H;//            // SDA=SCL=1 //  
	LARK	AR3,28826
	LACK	257
	OR	* 
	SACL	* 
	.line	8
;>>>> 	   	SCL_H;
	LACK	8224
	OR	* 
	SACL	* ,AR1
	.line	9
;>>>> 	   	delay( T_EEDLY ); //for (k = 8;k >= 0;k--) { }                // 软件延时2.55us //  
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	10
;>>>> 	   	SDA_L; //           // SDA=0 //
	LARK	AR3,28826
	LACK	65534
	AND	* 
	SACL	* ,AR1
	.line	11
;>>>> 	   	delay( T_EEDLY ); //                // 软件延时2.55us //  
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	12
;>>>> 		SCL_L; //             // SCL=0  //   
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
EPI0_1:
	.line	13
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	123,000000000H,1

	.sym	_I2CSendByte,_I2CSendByte,32,2,0
	.globl	_I2CSendByte

	.func	128
;>>>> 	void  I2CSendByte(int  data)          // 向I2C总线写入数据子程序  //    
******************************************************
* FUNCTION DEF : _I2CSendByte
******************************************************
_I2CSendByte:

LF2	.set	0

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

	.sym	_data,-3+LF2,4,9,16
	.sym	_flag,1,4,1,16
	.sym	_sz,2,4,1,16
	.sym	_k,3,4,1,16
	.line	2
;>>>> 	 	int   flag,sz,k;                           // 定义局部寄存器   //
	.line	4
;>>>> 		SCL_L;
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* 
	.line	5
;>>>> 	  	SDADIR_O; //                  // SDA为输出0 //
	LACK	2312
	OR	* 
	SACL	* ,AR2
	.line	6
;>>>> 	  	for (flag = 0x0080;flag != 0x00; flag = flag/2)
	LACK	128
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	SSXM
	LAC	* 
	BZ	L2
	MAR	* ,AR3
L1:
	.line	8
;>>>> 	    	SCL_L; //              // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
	.line	9
;>>>> 	    	delay( T_EEDLY ); //                  // 软件延时2.55us //  
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR2
	.line	10
;>>>> 	    	sz = data & flag;                       // 屏蔽掉相应的位 //
	SSXM
	LARK	AR2,1
	MAR	*0+
	LAC	* 
	SBRK	4-LF2
	AND	* 
	ADRK	5-LF2
	SACL	* 
	.line	11
;>>>> 	    	if (sz == 0)
	LAC	* 
	BNZ	L3
	.line	13
;>>>> 	    		SDA_L; //  // 如果相应的位为0,则(IOPC1)SDA=0// 
;>>>> 	    	else
	LARK	AR3,28826
	LACK	65534
	MAR	* ,AR3
	AND	* 
	SACL	* 
	B	L4
L3:
	.line	17
;>>>> 	    		SDA_H ; //          // 如果相应的位为1,则SDA=1 //
	LARK	AR3,28826
	LACK	257
	MAR	* ,AR3
	OR	* 
	SACL	* 
L4:
	.line	19
;>>>> 	    	delay( T_EEDLY ); //for (k = 8;k >= 0;k--) { }                   // 软件延时2.55us //
	MAR	* ,AR1
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	20
;>>>> 	    	SCL_H; //    // SCL=1,在SCL=1期间数据线上的状态必须保持不变 //
	LARK	AR3,28826
	LACK	8224
	OR	* 
	SACL	* ,AR1
	.line	21
;>>>> 	    	delay(2* T_EEDLY ); //for (k = 17;k >= 0;k--)  {  }                 // 软件延时5.1us //
	LACK	4
	SACL	*+
	CALL	_delay
	MAR	*-
	.line	6
	LACK	2
	SACL	*+,AR2
	SSXM
	LARK	AR2,1
	MAR	*0+
	LAC	* ,AR1
	CALL	I$$DIV
	MAR	* ,AR2
	SACL	* 
	SSXM
	LAC	* ,AR3
	BNZ	L1
L2:
	.line	23
;>>>> 	  	SCL_L; //                // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	MAR	* ,AR3
	AND	* 
	SACL	* ,AR1
EPI0_2:
	.line	24
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	151,000000000H,4

	.sym	_I2CRecAck,_I2CRecAck,36,2,0
	.globl	_I2CRecAck

	.func	156
;>>>> 	int I2CRecAck()   //检查应答位子程序 //
;>>>> 	 	int  k;
******************************************************
* FUNCTION DEF : _I2CRecAck
******************************************************
_I2CRecAck:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR3

	.sym	_k,1,4,1,16
	.line	4
;>>>> 	   	SCL_L; //     // SCL=0// 
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
	.line	5
;>>>> 	   	delay(2* T_EEDLY ); //for (k = 17; k >= 0; k--) {   }   // 软件延时5.1us// 
	LACK	4
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	6
;>>>> 	   	SCL_H; //        // SCL=1,在SCL=1期间数据线上的状态必须保持不变// 
	LARK	AR3,28826
	LACK	8224
	OR	* 
	SACL	* ,AR1
	.line	7
;>>>> 	   	delay( T_EEDLY ); //for (k = 8; k >= 0; k--) {   }      // 软件延时2.55us// 
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	8
;>>>> 	   	SDADIR_I; //      // IOPC0(SDA为输入)//
	LARK	AR3,28826
	LACK	65270
	AND	* 
	SACL	* ,AR1
	.line	9
;>>>> 	   	delay( T_EEDLY ); //for (k = 1; k >= 0; k--) {   }      // 软件延时600ns //
;>>>> 	   	//for (k = 6; k >= 0; k--) {   }      // 软件延时1.95us //
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	11
;>>>> 	   	SCL_L; //      // SCL=0//
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* 
	.line	12
;>>>> 	    k = PB & 0x0001; //            // k值存储应答位,若K=0,则表示操作成功 若k=1,则表示操作失败//  
	LACK	1
	AND	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	13
;>>>> 	   	return ( k ); 
	SSXM
	LAC	* 
EPI0_3:
	.line	14
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	169,000000000H,2

	.sym	_I2CRecByte,_I2CRecByte,36,2,0
	.globl	_I2CRecByte

	.func	174
;>>>> 	int I2CRecByte()              // 从I2C总线读取数据//
******************************************************
* FUNCTION DEF : _I2CRecByte
******************************************************
_I2CRecByte:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,5
	LAR	AR0,*0+,AR2

	.sym	_k,1,4,1,16
	.sym	_flag,2,4,1,16
	.sym	_sz,3,4,1,16
	.sym	_rev,4,4,1,16
	.line	3
;>>>> 	  	int   k = 0;
;>>>> 	  	int   flag;
;>>>> 	  	int   sz;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	6
;>>>> 	  	int   rev = 0;	 
	ADRK	3
	SACL	* ,AR3
	.line	7
;>>>> 	  	SCL_L;		 // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* 
	.line	8
;>>>> 	  	SDADIR_I; //                 // (SDA为输入)// 
;>>>> 	  	 //                  
	LACK	65270
	AND	* 
	SACL	* ,AR2
	.line	10
;>>>> 	  	for (flag = 0x0080;flag != 0x0000;flag = flag/2)
	LACK	128
	SBRK	2
	SACL	* 
	SSXM
	LAC	* 
	BZ	L6
	MAR	* ,AR1
L5:
	.line	12
;>>>> 	    	delay(2* T_EEDLY ); //            // 软件延时5.1us//
	LACK	4
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	13
;>>>> 	    	SCL_H; //                // SCL=1 //
	LARK	AR3,28826
	LACK	8224
	OR	* 
	SACL	* ,AR1
	.line	14
;>>>> 	    	delay( T_EEDLY ); //for (k = 8; k >= 0; k--) {    }             // 软件延时2.55us//
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	15
;>>>> 	    	sz = PB & 0x0001; //                  // 取得应该读取的相应位 //
	LARK	AR3,28826
	LACK	1
	AND	* ,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	.line	16
;>>>> 	    	if (sz == 0x0001)  rev = rev | flag;  // 若读取的相应位为1,则rev值的相应位置1 //
	SSXM
	LAC	* 
	SUBK	1
	BNZ	L7
	MAR	*-
	LAC	* 
	ADRK	2
	OR	* 
	SACL	* 
L7:
	.line	17
;>>>> 	    	delay( T_EEDLY ); //for (k = 8; k >= 0; k--) {    }             // 软件延时2.55us//
	MAR	* ,AR1
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	18
;>>>> 	    	SCL_L; //                // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
	.line	10
	LACK	2
	SACL	*+,AR2
	SSXM
	LARK	AR2,2
	MAR	*0+
	LAC	* ,AR1
	CALL	I$$DIV
	MAR	* ,AR2
	SACL	* 
	SSXM
	LAC	* ,AR1
	BNZ	L5
L6:
	.line	20
;>>>> 	  	return(rev);
	MAR	* ,AR2
	ADRK	2
	LAC	* 
EPI0_4:
	.line	21
	MAR	* ,AR1
	SBRK	6
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	194,000000000H,5

	.sym	_I2CAck,_I2CAck,32,2,0
	.globl	_I2CAck

	.func	199
;>>>> 	void  I2CAck()                        // 对I2C总线产生应答// 
;>>>> 	  //	int k;
******************************************************
* FUNCTION DEF : _I2CAck
******************************************************
_I2CAck:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	4
;>>>> 	  	SCL_L; //    // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
	.line	5
;>>>> 	  	delay( T_EEDLY ); //for (k = 8; k >= 0; k--) {k=k;}  // 软件延时2.55us//
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	6
;>>>> 	  	SDADIR_O; //      // 设置(IOPC1)SDA为输出//
	LARK	AR3,28826
	LACK	2312
	OR	* 
	SACL	* 
	.line	7
;>>>> 	  	SDA_L; //  // SDA=0 //
	LACK	65534
	AND	* 
	SACL	* ,AR1
	.line	8
;>>>> 	  	delay( T_EEDLY ); //for (k = 8; k >= 0; k--) {k=k;}  // 软件延时2.55us// 
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	9
;>>>> 	  	SCL_H; //    // SCL=1 //
	LARK	AR3,28826
	LACK	8224
	OR	* 
	SACL	* ,AR1
	.line	10
;>>>> 	  	delay( T_EEDLY ); //for (k = 17; k >= 0; k--) {    }  // 软件延时5.1us//
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	11
;>>>> 	  	SCL_L; //    // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
EPI0_5:
	.line	12
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	210,000000000H,1

	.sym	_I2CNoAck,_I2CNoAck,32,2,0
	.globl	_I2CNoAck

	.func	215
;>>>> 	void  I2CNoAck()                    // 不对I2C总线产生应答//
;>>>> 	  //	int k;
******************************************************
* FUNCTION DEF : _I2CNoAck
******************************************************
_I2CNoAck:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	4
;>>>> 	  	SCL_L; // // SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
	.line	5
;>>>> 	  	delay( T_EEDLY ); //for (k = 8;k > 0;k--) {  }      // 软件延时2.55us //
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	6
;>>>> 	  	SDADIR_O; //    // 设置(IOPC1)SDA为输出口 //
	LARK	AR3,28826
	LACK	2312
	OR	* 
	SACL	* 
	.line	7
;>>>> 	  	SDA_H; //    // SDA=1 //
	LACK	257
	OR	* 
	SACL	* ,AR1
	.line	8
;>>>> 	  	delay( T_EEDLY ); //for (k = 8;k > 0;k--) {  }      // 软件延时2.55us //
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	9
;>>>> 	  	SCL_H; //    // SCL=1 //
	LARK	AR3,28826
	LACK	8224
	OR	* 
	SACL	* ,AR1
	.line	10
;>>>> 	  	delay(2* T_EEDLY ); //for (k = 17;k > 0;k--){  }      // 软件延时5.1us//
	LACK	4
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	11
;>>>> 	  	SCL_L; //  // SCL=0//
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
EPI0_6:
	.line	12
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	226,000000000H,1

	.sym	_I2CStop,_I2CStop,32,2,0
	.globl	_I2CStop

	.func	231
;>>>> 	void  I2CStop()                        // 停止I2C总线 //
******************************************************
* FUNCTION DEF : _I2CStop
******************************************************
_I2CStop:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR3

	.line	3
;>>>> 		SCL_L; //  // (IOPC0)SCL=0 //
	LARK	AR3,28826
	LACK	65503
	AND	* 
	SACL	* ,AR1
	.line	4
;>>>> 		delay( T_EEDLY ); //for (k = 8;k > 0;k--) {  }         // 软件延时2.55us //
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	5
;>>>> 	  	SDADIR_O; //      // 设置(IOPC1)SDA为输出口 //
	LARK	AR3,28826
	LACK	2312
	OR	* 
	SACL	* 
	.line	6
;>>>> 	  	SDA_L; //    // SDA=0 // 
	LACK	65534
	AND	* 
	SACL	* ,AR1
	.line	7
;>>>> 	  	delay( T_EEDLY ); //for (k = 8;k > 0;k--) {  }         // 软件延时2.55us //
	LACK	2
	SACL	*+
	CALL	_delay
	MAR	*-,AR3
	.line	8
;>>>> 	  	SCL_H; //     // SCL=1 // 
	LARK	AR3,28826

⌨️ 快捷键说明

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