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

📄 serial.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
*******************************************************
* 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 + -