📄 serial.asm
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00
*******************************************************
; C:\tic2xx\c2000\cgtools\bin\dspac.exe -v2xx serial.c C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\serial.if
; dspopt NOT RUN
; C:\tic2xx\c2000\cgtools\bin\dspcg.exe -o -v2xx -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\serial.if C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\serial.asm C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\serial.tmp
.port
.bss _simConter,1,1
.file "serial.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 "serial.c"
.globl _pcdata
.globl _status_rx
.globl _len_rx
.globl _p_rx
.globl _b_com_success
.globl _cfgdata
.globl _GISR1
.globl _serialPortInit
.globl _serialPortOutput1byte
.globl _setSNT
.globl _clrSNT
.globl _send_resp
.globl _testSerialOutput
.globl _simInit
.globl _delay17us
.globl _delay26us
.globl _delay34us
.globl _delay52us
.globl _delay104us
.globl _simOutput1byte
.globl _simdata
.globl _sim_begin
.globl _sim_end
.text
.sym _serialPortInit,_serialPortInit,32,2,0
.globl _serialPortInit
.func 42
;>>>> void serialPortInit()
;>>>> uchar baud,form;
******************************************************
* FUNCTION DEF : _serialPortInit
******************************************************
_serialPortInit:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _baud,1,12,1,16
.sym _form,2,12,1,16
.line 4
;>>>> baud = cfgdata[17] >>8;
RSXM
LDPK _cfgdata+17
LAC _cfgdata+17,7
LARK AR2,1
MAR *0+
SACH *+,1
.line 5
;>>>> form = cfgdata[17] & 0x03; //get parity
;>>>> switch (baud)
LACK 3
AND _cfgdata+17
SACL *
B L1
L2:
.line 8
;>>>> case 0x06: { SCIHBAUD = 0x02;SCILBAUD = 0x08; break; }//9600
LACK 2
LDPK _SCIHBAUD
SACL _SCIHBAUD
LACK 8
LDPK _SCILBAUD
SACL _SCILBAUD
B L3
L4:
.line 9
;>>>> case 0x07: { SCIHBAUD = 0x01;SCILBAUD = 0x03; break; }//19200
LACK 1
LDPK _SCIHBAUD
SACL _SCIHBAUD
LACK 3
LDPK _SCILBAUD
SACL _SCILBAUD
B L3
L5:
.line 10
;>>>> case 0x08: { SCIHBAUD = 0x00;SCILBAUD = 0x81; break; }//38400
LACK 0
LDPK _SCIHBAUD
SACL _SCIHBAUD
LACK 129
LDPK _SCILBAUD
SACL _SCILBAUD
B L3
L6:
.line 11
;>>>> case 0x09: { SCIHBAUD = 0x00;SCILBAUD = 0x56; break; }//57600
LACK 0
LDPK _SCIHBAUD
SACL _SCIHBAUD
LACK 86
LDPK _SCILBAUD
SACL _SCILBAUD
B L3
L7:
.line 12
;>>>> case 0x0a: { SCIHBAUD = 0x00;SCILBAUD = 0x2a; break; }//115200
LACK 0
LDPK _SCIHBAUD
SACL _SCIHBAUD
LACK 42
LDPK _SCILBAUD
SACL _SCILBAUD
B L3
L8:
.line 13
;>>>> default : { SCIHBAUD = 0x00;SCILBAUD = 0x81; break; }//38400
LACK 0
LDPK _SCIHBAUD
SACL _SCIHBAUD
LACK 129
LDPK _SCILBAUD
SACL _SCILBAUD
B L3
L1:
.line 6
MAR *-
ZALS *
SUBK 6
BZ L2
SUBK 1
BZ L4
SUBK 1
BZ L5
SUBK 1
BZ L6
SUBK 1
BZ L7
B L8
L3:
.line 15
;>>>> if(form==0) { SCICCR = 0x07; } //no parity
MAR * ,AR2
LARK AR2,2
MAR *0+
LAC *
BNZ L9
LACK 7
LDPK _SCICCR
SACL _SCICCR
B L10
L9:
.line 16
;>>>> else if(form ==1){ SCICCR = 0x67; } //even parity
LAC *
SUBK 1
BNZ L11
LACK 103
LDPK _SCICCR
SACL _SCICCR
B L10
L11:
.line 17
;>>>> else if(form ==2){ SCICCR = 0x27; } //odd parity
LAC *
SUBK 2
BNZ L12
LACK 39
LDPK _SCICCR
SACL _SCICCR
B L10
L12:
.line 18
;>>>> else { SCICCR = 0x07; } //no parity
LACK 7
LDPK _SCICCR
SACL _SCICCR
L10:
.line 20
;>>>> SCICTL1 = 0x03; /*发送器接收器使能*/
LACK 3
LDPK _SCICTL1
SACL _SCICTL1
.line 21
;>>>> SCICTL2 = 0x02; /*使能接收中断 */
LACK 2
LDPK _SCICTL2
SACL _SCICTL2
.line 22
;>>>> SCICTL1 |= 0x20; /*sw reset*/
LACK 32
LDPK _SCICTL1
OR _SCICTL1
SACL _SCICTL1
.line 23
;>>>> SCIPRI &= 0x87; /* high priority*/
LACK 135
LDPK _SCIPRI
AND _SCIPRI
SACL _SCIPRI
.line 24
;>>>> MCRA |= 0x3; // configure iopa0,iopa1 as SCITXD,SCIRXD
LACK 3
LDPK _MCRA
OR _MCRA
SACL _MCRA
.line 25
;>>>> IMR |= 0x01;
LACK 1
LDPK _IMR
OR _IMR
SACL _IMR
.line 26
;>>>> IFR = 0xffff; //clr all flag
LDPK _IFR
SPLK #-1,_IFR
.line 28
;>>>> pcdata[0] = 0x05;pcdata[1] = 0x44; /*测试数据*/
LACK 5
LDPK _pcdata
SACL _pcdata
LACK 68
LDPK _pcdata+1
SACL _pcdata+1
.line 29
;>>>> pcdata[2] = 0x33;pcdata[3] = 0x22;
LACK 51
LDPK _pcdata+2
SACL _pcdata+2
LACK 34
LDPK _pcdata+3
SACL _pcdata+3
.line 30
;>>>> pcdata[4] = 0x11;
LACK 17
LDPK _pcdata+4
SACL _pcdata+4
.line 32
;>>>> status_rx = 0;
LACK 0
LDPK _status_rx
SACL _status_rx
.line 33
;>>>> testSerialOutput(); //test Serial Output
CALL _testSerialOutput,AR1
EPI0_1:
.line 34
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 75,000000000H,3
.sym _testSerialOutput,_testSerialOutput,32,2,0
.globl _testSerialOutput
.func 78
;>>>> void testSerialOutput() // initial serial port testing
;>>>> uchar i;
******************************************************
* FUNCTION DEF : _testSerialOutput
******************************************************
_testSerialOutput:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,2
LAR AR0,*0+,AR2
.sym _i,1,12,1,16
.line 4
;>>>> for(i=0;i<pcdata[0];i++)
LACK 0
LARK AR2,1
MAR *0+
SACL *
ZALS *
LDPK _pcdata
SUBS _pcdata
BGEZ L14
L13:
.line 5
;>>>> serialPortOutput1byte(pcdata[i]);
LAC * ,AR0
ADLK _pcdata+0,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 4
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
LDPK _pcdata
SUBS _pcdata
BLZ L13
L14:
EPI0_2:
.line 6
MAR * ,AR1
SBRK 3
LAR AR0,*-
PSHD *
RET
.endfunc 83,000000000H,2
.sym _serialPortOutput1byte,_serialPortOutput1byte,32,2,0
.globl _serialPortOutput1byte
.func 85
;>>>> void serialPortOutput1byte(uchar c)
******************************************************
* FUNCTION DEF : _serialPortOutput1byte
******************************************************
_serialPortOutput1byte:
LF3 .set 0
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.sym _c,-3+LF3,12,9,16
.line 2
.line 3
;>>>> setSNT();
CALL _setSNT
.line 4
;>>>> b_com_success = 1;
LACK 1
LDPK _b_com_success
SACL _b_com_success
.line 5
;>>>> SCITXBUF = c;
MAR * ,AR2
LARK AR2,-3+LF3
MAR *0+
BLDD * ,#_SCITXBUF
L15:
.line 6
;>>>> while((SCICTL2 & 0x40) == 0);
;>>>> // while((SCICTL2 & 0xc0) == 0);
LDPK _SCICTL2
BIT _SCICTL2,9
BBZ L15
.line 8
;>>>> clrSNT();
CALL _clrSNT,AR1
EPI0_3:
.line 9
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 93,000000000H,1
.sym _setSNT,_setSNT,32,2,0
.globl _setSNT
.func 94
;>>>> void setSNT(void)
******************************************************
* FUNCTION DEF : _setSNT
******************************************************
_setSNT:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> MCRB &= 0xfffe;
LACK 65534
LDPK _MCRB
AND _MCRB
SACL _MCRB
.line 4
;>>>> PCDATDIR |= 0x0101; //IOPC0设置为输出方式,置为1,send out
LACK 257
LDPK _PCDATDIR
OR _PCDATDIR
SACL _PCDATDIR
EPI0_4:
.line 5
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 98,000000000H,1
.sym _clrSNT,_clrSNT,32,2,0
.globl _clrSNT
.func 99
;>>>> void clrSNT(void)
******************************************************
* FUNCTION DEF : _clrSNT
******************************************************
_clrSNT:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> MCRB &= 0xfffe;
LACK 65534
LDPK _MCRB
AND _MCRB
SACL _MCRB
.line 4
;>>>> PCDATDIR |= 0x0100;
LACK 256
LDPK _PCDATDIR
OR _PCDATDIR
SACL _PCDATDIR
.line 5
;>>>> PCDATDIR &= 0xfffe; //IOPC0设置为输出方式置为0,receive
LACK 65534
AND _PCDATDIR
SACL _PCDATDIR
EPI0_5:
.line 6
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 104,000000000H,1
.sym _send_resp,_send_resp,32,2,0
.globl _send_resp
.func 106
;>>>> void send_resp(void)
;>>>> uchar i;
;>>>> uint j;
******************************************************
* FUNCTION DEF : _send_resp
******************************************************
_send_resp:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _i,1,12,1,16
.sym _j,2,14,1,16
.line 5
;>>>> i = pcdata[0] - 2;
LDPK _pcdata
LAC _pcdata
SUBK 2
LARK AR2,1
MAR *0+
SACL *
.line 6
;>>>> j = crc16Calculate(pcdata,i);
LAC * ,AR1
SACL *+
LALK _pcdata+0
SACL *+
CALL _crc16Calculate
SBRK 2
MAR * ,AR2
LARK AR2,2
MAR *0+
SACL *
.line 7
;>>>> j = ~j;
LAC *
CMPL
SACL *
.line 8
;>>>> pcdata[i] = (j&0xff); //crc LSByte
LACK 255
AND *-,AR1
SACL * ,AR2
LAC *+,AR0
ADLK _pcdata+0,0
SACL *
LAR AR3,* ,AR1
LAC * ,AR3
SACL * ,AR2
.line 9
;>>>> pcdata[i+1] = (j>>8); //crc MSByte
RSXM
LAC *-,7,AR1
SACH * ,1,AR2
LAC * ,AR0
ADLK _pcdata+1,0
SACL *
LAR AR3,* ,AR1
LAC * ,AR3
SACL * ,AR2
.line 10
;>>>> for(i=0;i<pcdata[0];i++)
LACK 0
SACL *
ZALS *
LDPK _pcdata
SUBS _pcdata
BGEZ L17
L16:
.line 11
;>>>> serialPortOutput1byte(pcdata[i]);
LAC * ,AR0
ADLK _pcdata+0,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 10
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
LDPK _pcdata
SUBS _pcdata
BLZ L16
L17:
EPI0_6:
.line 12
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 117,000000000H,3
.sect ".cinit"
.word 1,_simConter
.word 0
.sym _simConter,_simConter,12,3,16
.text
.sym _GISR1,_GISR1,32,2,0
.globl _GISR1
.func 120
;>>>> void interrupt GISR1()
******************************************************
* FUNCTION DEF : _GISR1
******************************************************
_GISR1:
CALL I$$SAVE
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR2
.sym _rec,1,12,1,16
.sym _temp,2,12,1,16
.sym _i,3,12,1,16
.sym _simSerial,4,14,1,16
.line 3
;>>>> uchar rec = 0,temp;
;>>>> uchar i;
;>>>> uint simSerial;
LACK 0
LARK AR2,1
MAR *0+
SACL *
.line 7
;>>>> simSerial = cfgdata[18] >> 8;
;>>>> switch( PIVR)
;>>>> case 0x0006:
RSXM
LDPK _cfgdata+18
LAC _cfgdata+18,7
ADRK 3
SACH * ,1
B L18
L19:
.line 12
;>>>> b_com_success = 1;
LACK 1
LDPK _b_com_success
SACL _b_com_success
.line 13
;>>>> if(status_rx == 0 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -