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

📄 uart.c

📁 C8051F410上调试成功的串口代码
💻 C
字号:
//&&&&&&&&&&&&&&&&&&&&&&&&&&方法一&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//定义一个全局位变量 ser_ti
/************************************************
波特率:115200bps

接收数据缓冲区
extern unsigned char data serdatabuf[16]

发送函数
ser_send()	len 数据长度	pdata 指向发送数据的指针



************************************************/
void ser_send(unsigned char len,unsigned char xdata *pserdata)
{
	unsigned int data i;
	TR1 = 1;
	TI0 = 0;
	for(i = 0; i < len; i++)
		{
			SBUF0 = *pserdata;
			ser_ti = 1;
			while(ser_ti);
			pserdata ++;
		}
	TR1 = 0;
}

void ser_init()
{
/***************************
TIME1 波特率发生器
115200bps
****************************/
TMOD      = 0x20;
CKCON     = 0x08;
TH1       = 0xF0;
/***************************
UART0 初始化
方式0 :8位UART
停止位逻辑电平忽略
接收允许
***************************/
SCON0     = 0x10;
TB80 = 0;
ES0 = 1;	//开串口中断

}

/*void ser_read()
{
	

}
*/
void UART0_ISR() interrupt 4 
{
	unsigned char data i;
	if( TI0 )
		{	
			ser_ti = 0;
			TI0 = 0;
		}
	else if( RI0 )
		{
			serdatabuf[i] = SBUF0;
			i++;
			if(i > 15)
				i = 0;
			
			RI0 = 0;
		}

}



//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
/************************************************
波特率:115200bps

接收数据缓冲区
extern unsigned char data serdatabuf[16]

发送函数
ser_send()	len 数据长度	pdata 指向发送数据的指针



************************************************/
void ser_send(unsigned char len,unsigned char xdata *pserdata)
{
	unsigned int data i;
	TR1 = 1;
	for(i = 0; i < len; i++)
		{
			TI0 = 0;
			SBUF0 = *pserdata;
			while(!TI0);
			pserdata ++;
		}
	TR1 = 0;
}

void ser_init()
{
/***************************
TIME1 波特率发生器
115200bps
****************************/
TMOD      = 0x20;
CKCON     = 0x08;
TH1       = 0xF0;
/***************************
UART0 初始化
方式0 :8位UART
停止位逻辑电平忽略
接收允许
***************************/
SCON0     = 0x10;
TB80 = 0;
ES0 = 1;	//开串口中断

}

/*void ser_read()
{
	

}
*/
void UART0_ISR() interrupt 4 
{
	unsigned char data i;
	if( TI0 )
		{	
			return;
		}
	else if( RI0 )
		{
			serdatabuf[i] = SBUF0;
			i++;
			if(i > 15)
				i = 0;
			
			RI0 = 0;
		}

}

//@@@@@@@@@@@@@@@@@@@@@@接收发送成功代码@@@@@@@@@@@@@@
/************************************************
波特率:115200bps

接收数据缓冲区
extern unsigned char data serdatabuf[16]

发送函数
ser_send()	len 数据长度	pdata 指向发送数据的指针
UART中断处理程序
void UART0_ISR() interrupt 4 


************************************************/
void ser_send(unsigned char len,unsigned char xdata *pserdata)
{
	unsigned int data i;
	
	for(i = 0; i < len; i++)
		{
			TI0 = 0;
			SBUF0 = *pserdata;
			while(!TI0);
			pserdata ++;
		}
	
	TI0 = 0;
}

void ser_init()
{
//**************定时器***********
	TMOD      = 0x20;
	CKCON     = 0x08;
	TH1       = 0xF0;
	TR1 	= 1;
//************中断***********
	ES0 = 1;
	EA = 1;	//全局中断
//*********uart*************
	REN0 = 1;
//***************************
}

void UART0_ISR() interrupt 4 
{
	unsigned char data i;
	if( TI0 )
		{	
			return;
		}
	else if( RI0 )
		{
			g_serbuf[i] = SBUF0;
			i++;
			if(i > 15)
				i = 0;
			
			RI0 = 0;
		}

}

⌨️ 快捷键说明

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