📄 spi.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 + -