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

📄 serial.c

📁 基于DSP LF2407A的串口传输程序
💻 C
字号:
/* 2407A板:将JP11和JP14短接到2-3;
	使用直连的串口通信电缆;
	启动串口调试助手.exe;
	PC机发送一个"."为结束标志
*/
#include "2407c.h"                    

void wait(int nWait);

char cString[17]={ "Hello PC!,Over|" },cReceive,cBuffer[17],cAnswer[16]={"Oh,you say"};
int bReceive,nLen;

main()
{
	unsigned int uWork;
	int i,k;
	
	bReceive=0;
	asm(" setc INTM");
	asm(" clrc SXM");
	asm(" clrc OVM");
	*WDCR=0x6f;
	*WDKEY=0x5555;
	*WDKEY=0xaaaa;    
	*SCSR1=0x81fe;	/* 40MHz      */
	uWork=(*MCRA);
	uWork|=0x03;		/* use SCITXD,SCIRXD */
	(*MCRA)=uWork;
	(*SCICCR)=0x07;		/* 8位字符,1停止位,无校验*/
	(*SCICTL1)=0x03;	/* 使能发送和接收 */
	(*SCICTL2)=0x00;	/* 禁止接收和发送中断 */
	(*SCIHBAUD)=0x02;	/* 波特率=208H,40MHz */
	(*SCILBAUD)=0x08;	/* 208h=40*10^6/(9600*8)-1 */
	(*SCICTL1)=0x23;	/* 使能发送和接收,复位SCI */
	while ( 1 )
	{
		if ( bReceive==0 )
		{
			for ( i=0;i<16;i++ )
			{
				do
				{ 
					uWork=(*SCICTL2);
				} while ( uWork&0x0c0 != 0x0c0 );
				(*SCITXBUF)=cString[i];
				wait(100);		
			}
		}
		else
		{
			for ( i=0;i<10;i++ )
			{
				do
				{ 
					uWork=(*SCICTL2);
				} while ( uWork&0x0c0 != 0x0c0 );
				(*SCITXBUF)=cAnswer[i];
				wait(100);		
			}
			do
			{ 
				uWork=(*SCICTL2);
			} while ( uWork&0x0c0 != 0x0c0 );
			(*SCITXBUF)='\"';
			for ( i=0;i<nLen;i++ )
			{
				do
				{ 
					uWork=(*SCICTL2);
				} while ( uWork&0x0c0 != 0x0c0 );
				(*SCITXBUF)=cBuffer[i];
				wait(100);		
			}
			do
			{ 
				uWork=(*SCICTL2);
			} while ( uWork&0x0c0 != 0x0c0 );
			(*SCITXBUF)='\"';
			wait(1024);		
			for ( i=9;i<16;i++ )
			{
				do
				{ 
					uWork=(*SCICTL2);
				} while ( uWork&0x0c0 != 0x0c0 );
				(*SCITXBUF)=cString[i];
				wait(100);		
			}
		}
		k=0; bReceive=0;
		while ( 1 )
		{
			do
			{
				uWork=(*SCIRXST);
			} while ( (uWork&0x40)==0 );
			cReceive=(*SCIRXBUF);
			cBuffer[k]=cReceive; 
			if ( cReceive=='.' )
			{
				cBuffer[k+1]='\0';
				nLen=k+1;
				bReceive=1;
				break;
			}
			k++; k%=16;
		}
	}
}

void wait(int nWait)
{
	int i,j,k=0;
	for ( i=0;i<nWait;i++ )
		for ( j=0;j<64;j++ )
			k++;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -