📄 24cxx.asm
字号:
*******************************************************
* 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 + -