📄 39vf400.asm
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00
*******************************************************
; C:\tic2xx\c2000\cgtools\bin\dspac.exe -v2xx 39vf400.c C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\39vf400.if
; dspopt NOT RUN
; C:\tic2xx\c2000\cgtools\bin\dspcg.exe -o -v2xx -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\39vf400.if C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\39vf400.asm C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\39vf400.tmp
.port
.file "39vf400.c"
.file "f2407regs_c.h"
.globl _IMR
.globl _GREG
.globl _IFR
.globl _IMRADDR
.globl _PIRQR0
.globl _PIRQR1
.globl _PIRQR2
.globl _PIACKR0
.globl _PIACKR1
.globl _PIACKR2
.globl _SCSR1
.globl _SCSR2
.globl _DINR
.globl _PIVR
.globl _WDCNTR
.globl _WDKEY
.globl _WDCR
.globl _SPICCR
.globl _SPICTL
.globl _SPISTS
.globl _SPIBRR
.globl _SPIEMU
.globl _SPIRXBUF
.globl _SPITXBUF
.globl _SPIDAT
.globl _SPIPRI
.globl _SCICCR
.globl _SCICTL1
.globl _SCIHBAUD
.globl _SCILBAUD
.globl _SCICTL2
.globl _SCIRXST
.globl _SCIRXEMU
.globl _SCIRXBUF
.globl _SCITXBUF
.globl _SCIPRI
.globl _XINT1CR
.globl _XINT2CR
.globl _PADATDIR
.globl _PBDATDIR
.globl _PCDATDIR
.globl _PDDATDIR
.globl _PEDATDIR
.globl _PFDATDIR
.globl _MCRA
.globl _MCRB
.globl _MCRC
.globl _ADCCTRL1
.globl _ADCCTRL2
.globl _MAXCONV
.globl _CHSELSEQ1
.globl _CHSELSEQ2
.globl _CHSELSEQ3
.globl _CHSELSEQ4
.globl _AUTOSEQSR
.globl _RESULT0
.globl _RESULT1
.globl _RESULT2
.globl _RESULT3
.globl _RESULT4
.globl _RESULT5
.globl _RESULT6
.globl _RESULT7
.globl _RESULT8
.globl _RESULT9
.globl _RESULT10
.globl _RESULT11
.globl _RESULT12
.globl _RESULT13
.globl _RESULT14
.globl _RESULT15
.globl _CALIBRATION
.globl _MDER
.globl _TCR
.globl _RCR
.globl _MCR
.globl _BCR2
.globl _BCR1
.globl _ESR
.globl _GSR
.globl _CEC
.globl _CANIFR
.globl _CANIMR
.globl _LAM0H
.globl _LAM0L
.globl _LAM1H
.globl _LAM1L
.globl _MSGID0L
.globl _MSGID0H
.globl _MSGCTRL0
.globl _MBX0A
.globl _MBX0B
.globl _MBX0C
.globl _MBX0D
.globl _MSGID1L
.globl _MSGID1H
.globl _MSGCTRL1
.globl _MBX1A
.globl _MBX1B
.globl _MBX1C
.globl _MBX1D
.globl _MSGID2L
.globl _MSGID2H
.globl _MSGCTRL2
.globl _MBX2A
.globl _MBX2B
.globl _MBX2C
.globl _MBX2D
.globl _MSGID3L
.globl _MSGID3H
.globl _MSGCTRL3
.globl _MBX3A
.globl _MBX3B
.globl _MBX3C
.globl _MBX3D
.globl _MSGID4L
.globl _MSGID4H
.globl _MSGCTRL4
.globl _MBX4A
.globl _MBX4B
.globl _MBX4C
.globl _MBX4D
.globl _MSGID5L
.globl _MSGID5H
.globl _MSGCTRL5
.globl _MBX5A
.globl _MBX5B
.globl _MBX5C
.globl _MBX5D
.globl _GPTCONA
.globl _T1CNT
.globl _T1CMPR
.globl _T1PR
.globl _T1CON
.globl _T2CNT
.globl _T2CMPR
.globl _T2PR
.globl _T2CON
.globl _COMCONA
.globl _ACTRA
.globl _DBTCONA
.globl _CMPR1
.globl _CMPR2
.globl _CMPR3
.globl _CAPCONA
.globl _CAPFIFOA
.globl _CAP1FIFO
.globl _CAP2FIFO
.globl _CAP3FIFO
.globl _CAP1FBOT
.globl _CAP2FBOT
.globl _CAP3FBOT
.globl _EVAIMRA
.globl _EVAIMRB
.globl _EVAIMRC
.globl _EVAIFRA
.globl _EVAIFRB
.globl _EVAIFRC
.globl _GPTCONB
.globl _T3CNT
.globl _T3CMPR
.globl _T3PR
.globl _T3CON
.globl _T4CNT
.globl _T4CMPR
.globl _T4PR
.globl _T4CON
.globl _COMCONB
.globl _ACTRB
.globl _DBTCONB
.globl _CMPR4
.globl _CMPR5
.globl _CMPR6
.globl _CAPCONB
.globl _CAPFIFOB
.globl _CAP4FIFO
.globl _CAP5FIFO
.globl _CAP6FIFO
.globl _CAP4FBOT
.globl _CAP5FBOT
.globl _CAP6FBOT
.globl _EVBIMRA
.globl _EVBIMRB
.globl _EVBIMRC
.globl _EVBIFRA
.globl _EVBIFRB
.globl _EVBIFRC
.globl _WSGR
.file "global.h"
.globl _port8001
.file "39vf400.c"
.globl _cfgdata
.globl _pcdata
.globl _readOneCfg
.globl _writeOneCfg
.globl _writeOneDefaultCfg
.globl _writeAllCfg
.globl _readAllCfg
.globl _Check_SST_39VF400A
.globl _CFI_Query
.globl _Erase_One_Sector
.globl _Erase_One_Block
.globl _Erase_Entire_Chip
.globl _Program_One_Word
.globl _Program_One_Sector
.globl _Program_One_Block
.globl _Check_Toggle_Ready
.globl _Check_Data_Polling
.globl _Delay_150_Nano_Seconds
.text
.sym _Delay_150_Nano_Seconds,_Delay_150_Nano_Seconds,32,2,0
.globl _Delay_150_Nano_Seconds
.func 42
;>>>> void Delay_150_Nano_Seconds()
******************************************************
* FUNCTION DEF : _Delay_150_Nano_Seconds
******************************************************
_Delay_150_Nano_Seconds:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> asm(" NOP");asm(" NOP");
NOP
NOP
.line 4
;>>>> asm(" NOP");asm(" NOP");
NOP
NOP
.line 5
;>>>> asm(" NOP");asm(" NOP");
NOP
NOP
EPI0_1:
.line 6
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 47,000000000H,1
.sym _Check_SST_39VF400A,_Check_SST_39VF400A,46,2,0
.globl _Check_SST_39VF400A
.func 49
;>>>> uint Check_SST_39VF400A() // same device code as SST39VF400
;>>>> uint *Temp;
;>>>> uint *Temp1;
;>>>> uint SST_id1;
;>>>> uint SST_id2;
;>>>> uint ReturnStatus;
******************************************************
* FUNCTION DEF : _Check_SST_39VF400A
******************************************************
_Check_SST_39VF400A:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,6
LAR AR0,*0+,AR2
.sym _Temp,1,30,1,16
.sym _Temp1,2,30,1,16
.sym _SST_id1,3,14,1,16
.sym _SST_id2,4,14,1,16
.sym _ReturnStatus,5,14,1,16
.line 9
;>>>> cs_flash_0;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1024
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
LACK 65531
AND _PFDATDIR
SACL _PFDATDIR
.line 10
;>>>> Temp1 = (uint *)(BaseAddr+0x5555); //address 5555h
LARK AR2,2
MAR *0+
SPLK #54613,*
.line 11
;>>>> *Temp1= 0xAA; // write 0xAAAA
LAR AR3,* ,AR3
LACK 170
SACL * ,AR2
.line 13
;>>>> Temp1 = (uint *)(BaseAddr+0x2AAA); //address 2AAAh
SPLK #43690,*
.line 14
;>>>> *Temp1= 0x55; // write 0x5555
LAR AR3,* ,AR3
LACK 85
SACL * ,AR2
.line 16
;>>>> Temp1 = (uint *)(BaseAddr+0x5555); //address 5555h
SPLK #54613,*
.line 17
;>>>> *Temp1= 0x90; // write 0x9090
LAR AR3,* ,AR3
LACK 144
SACL * ,AR1
.line 19
;>>>> Delay_150_Nano_Seconds(); //delay Tida
CALL _Delay_150_Nano_Seconds
.line 21
;>>>> Temp = (uint *)(BaseAddr+0x0000); //address 0000h
MAR * ,AR2
LARK AR2,1
MAR *0+
SPLK #32768,*
.line 22
;>>>> SST_id1 = *Temp; // get first ID word
LAR AR3,* ,AR3
LAC * ,AR2
ADRK 2
SACL *-
.line 23
;>>>> Temp1 = (uint *)(BaseAddr+0x0001); //address 0001h
SPLK #32769,*
.line 24
;>>>> SST_id2 = *Temp1; // get second ID word
LAR AR4,* ,AR4
LAC * ,AR2
ADRK 2
SACL *-
.line 26
;>>>> if ( ((SST_id1&0xff) == SST_ID) && (SST_id2 ==SST_39VF400A))ReturnStatus = TRUE;
LACK 255
AND *
SUBK 191
BNZ L1
MAR *+
LAC *
SUBK 10112
BNZ L1
LACK 1
MAR *+
SACL *
B L2
L1:
.line 27
;>>>> else ReturnStatus = FALSE;
LACK 0
LARK AR2,5
MAR *0+
SACL *
L2:
.line 29
;>>>> Temp1 = (uint *)(BaseAddr+0x5555); //address 5555h
SBRK 3
SPLK #54613,*
.line 30
;>>>> *Temp1 = 0xAAAA; // 0xAAAA
LAR AR4,* ,AR4
SPLK #43690,* ,AR2
.line 31
;>>>> Temp1 = (uint *)(BaseAddr+0x2AAA); //address 2AAAh
SPLK #43690,*
.line 32
;>>>> *Temp1 = 0x5555; //0x5555
LAR AR4,* ,AR4
SPLK #21845,* ,AR2
.line 33
;>>>> Temp1 = (uint *)(BaseAddr+0x5555); //address 5555h
SPLK #54613,*
.line 34
;>>>> *Temp1 = 0xF0F0; //0xF0F0
LAR AR4,* ,AR4
SPLK #61680,* ,AR1
.line 36
;>>>> Delay_150_Nano_Seconds(); //delay Tida
CALL _Delay_150_Nano_Seconds
.line 37
;>>>> cs_flash_1;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1028
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 38
;>>>> return(ReturnStatus);
MAR * ,AR2
LARK AR2,5
MAR *0+
ZALS *
EPI0_2:
.line 39
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 87,000000000H,6
.sym _Erase_One_Sector,_Erase_One_Sector,46,2,0
.globl _Erase_One_Sector
.func 118
;>>>> uint Erase_One_Sector (uint *Dst)
******************************************************
* FUNCTION DEF : _Erase_One_Sector
******************************************************
_Erase_One_Sector:
LF3 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _Dst,-3+LF3,30,9,16
.sym _Temp,1,30,1,16
.sym _flag,2,14,1,16
.line 2
;>>>> uint *Temp;
.line 4
;>>>> uint flag = 1;
LACK 1
LARK AR2,2
MAR *0+
SACL *-
.line 6
;>>>> cs_flash_0;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1024
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
LACK 65531
AND _PFDATDIR
SACL _PFDATDIR
.line 8
;>>>> Temp = (uint *)(BaseAddr+0x5555); // set up address to be C000:5555h
SPLK #54613,*
.line 9
;>>>> *Temp = 0xAAAA; // write data 0xAAAA to the address
LAR AR3,* ,AR3
SPLK #43690,* ,AR2
.line 11
;>>>> Temp = (uint *)(BaseAddr+0x2AAA); // set up address to be C000:2AAAh
SPLK #43690,*
.line 12
;>>>> *Temp = 0x5555; // write data 0x5555 to the address
LAR AR3,* ,AR3
SPLK #21845,* ,AR2
.line 14
;>>>> Temp = (uint *)(BaseAddr+0x5555); // set up address to be C000:5555h
SPLK #54613,*
.line 15
;>>>> *Temp = 0x8080; // write data 0x8080 to the address
LAR AR3,* ,AR3
SPLK #32896,* ,AR2
.line 17
;>>>> Temp = (uint *)(BaseAddr+0x5555); // set up address to be C000:5555h
SPLK #54613,*
.line 18
;>>>> *Temp = 0xAAAA; // write data 0xAAAA to the address
LAR AR3,* ,AR3
SPLK #43690,* ,AR2
.line 20
;>>>> Temp = (uint *)(BaseAddr+0x2AAA); // set up address to be C000:2AAAh
SPLK #43690,*
.line 21
;>>>> *Temp = 0x5555; // write data 0x5555 to the address
LAR AR3,* ,AR3
SPLK #21845,* ,AR2
.line 23
;>>>> Temp = Dst; // set up starting address to be erased
SBRK 4-LF3
LAC *
ADRK 4-LF3
SACL *
.line 24
;>>>> *Temp = 0x3030; // write data 0x3030 to the address
LAR AR3,* ,AR3
SPLK #12336,* ,AR1
.line 25
;>>>> flag = Check_Toggle_Ready(Temp);
SAR AR3,*+
CALL _Check_Toggle_Ready
MAR *-,AR2
LARK AR2,2
MAR *0+
SACL *
.line 26
;>>>> cs_flash_1;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1028
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 27
;>>>> if(flag) return 1;
LAC *
BZ L3
LACK 1
B EPI0_3
L3:
.line 28
;>>>> else return 0;
LACK 0
EPI0_3:
.line 29
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 146,000000000H,3
.sym _Program_One_Word,_Program_One_Word,46,2,0
.globl _Program_One_Word
.func 208
;>>>> uint Program_One_Word (uint SrcWord, uint *Dst)
******************************************************
* FUNCTION DEF : _Program_One_Word
******************************************************
_Program_One_Word:
LF4 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,4
LAR AR0,*0+,AR2
.sym _SrcWord,-3+LF4,14,9,16
.sym _Dst,-4+LF4,30,9,16
.sym _Temp,1,30,1,16
.sym _DestBuf,2,30,1,16
.sym _flag,3,14,1,16
.line 2
;>>>> uint *Temp;
;>>>> uint *DestBuf;
.line 5
;>>>> uint flag = 1;
LACK 1
LARK AR2,3
MAR *0+
SACL *
.line 7
;>>>> cs_flash_0;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1024
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
LACK 65531
AND _PFDATDIR
SACL _PFDATDIR
.line 8
;>>>> DestBuf = Dst;
SBRK 7-LF4
LAC *
ADRK 6-LF4
SACL *-
.line 9
;>>>> Temp = (uint *)(BaseAddr+0x5555); // address 555h
SPLK #54613,*
.line 10
;>>>> *Temp = 0xAAAA; // 0xAAAA
LAR AR3,* ,AR3
SPLK #43690,* ,AR2
.line 12
;>>>> Temp = (uint *)(BaseAddr+0x2AAA); //address 2AAAh
SPLK #43690,*
.line 13
;>>>> *Temp = 0x5555; //0x5555
LAR AR3,* ,AR3
SPLK #21845,* ,AR2
.line 15
;>>>> Temp = (uint *)(BaseAddr+0x5555); //address 5555h
SPLK #54613,*
.line 16
;>>>> *Temp = 0xA0A0; //0xA0A0
LAR AR3,*+,AR3
SPLK #41120,* ,AR2
.line 18
;>>>> *DestBuf = SrcWord;
LAR AR4,*
SBRK 5-LF4
LAC * ,AR4
SACL * ,AR1
.line 20
;>>>> cs_flash_1;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1028
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 21
;>>>> flag = Check_Toggle_Ready(DestBuf); // wait for TOGGLE bit to get ready
SAR AR4,*+
CALL _Check_Toggle_Ready
MAR *-,AR2
LARK AR2,3
MAR *0+
SACL *
.line 23
;>>>> if(flag) return 1;
LAC *
BZ L4
LACK 1
B EPI0_4
L4:
.line 24
;>>>> else return 0;
LACK 0
EPI0_4:
.line 25
MAR * ,AR1
SBRK 5
LAR AR0,*-
PSHD *
RET
.endfunc 232,000000000H,4
.sym _Check_Toggle_Ready,_Check_Toggle_Ready,46,2,0
.globl _Check_Toggle_Ready
.func 310
;>>>> uint Check_Toggle_Ready (uint *Dst)
******************************************************
* FUNCTION DEF : _Check_Toggle_Ready
******************************************************
_Check_Toggle_Ready:
LF5 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,6
LAR AR0,*0+,AR2
.sym _Dst,-3+LF5,30,9,16
.sym _Loop,1,12,1,16
.sym _PreData,2,14,1,16
.sym _CurrData,3,14,1,16
.sym _TimeOut,4,15,1,32
.line 2
.line 3
;>>>> uchar Loop = TRUE;
;>>>> uint PreData;
;>>>> uint CurrData;
LACK 1
LARK AR2,1
MAR *0+
SACL *
.line 6
;>>>> unsigned long TimeOut = 0;
LACK 0
ADRK 3
SACL *+
SACH *
.line 8
;>>>> cs_flash_0;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1024
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
LACK 65531
AND _PFDATDIR
SACL _PFDATDIR
.line 9
;>>>> PreData = *Dst;
SBRK 8-LF5
LAR AR3,* ,AR3
LAC * ,AR2
ADRK 5-LF5
SACL *
.line 10
;>>>> PreData = PreData & 0x4040;
LACK 16448
AND *
SACL *-
.line 11
;>>>> while (Loop)
LAC *
BZ L6
SBRK 4-LF5
L5:
.line 13
;>>>> CurrData = *Dst;
LAR AR3,* ,AR3
LAC * ,AR2
ADRK 6-LF5
SACL *
.line 14
;>>>> CurrData = CurrData & 0x4040;
LACK 16448
AND *
SACL *-
.line 15
;>>>> if (PreData == CurrData)
LAC *+
SUB *
BNZ L7
.line 16
;>>>> Loop = FALSE; /* ready to exit the while loop */
LACK 0
SBRK 2
SACL *
L7:
.line 17
;>>>> PreData = CurrData;
LARK AR2,3
MAR *0+
LAC *-
SACL *
.line 18
;>>>> TimeOut++;
ADRK 2
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
.line 19
;>>>> if(TimeOut >= 0x07FFFFFF)
LT *+
MPYK 1
LPH *
LALK 4095,15
ORK 32767
SPAC
BZ $+4
BC L8
.line 21
;>>>> cs_flash_1;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1028
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 22
;>>>> return 0; // failed
LACK 0
B EPI0_5
L8:
.line 11
SBRK 4
LAC *
SBRK 4-LF5
BNZ L5
L6:
.line 25
;>>>> cs_flash_1;
LACK 64511
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 1028
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 26
;>>>> return 1; // success
LACK 1
EPI0_5:
.line 27
MAR * ,AR1
SBRK 7
LAR AR0,*-
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -