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

📄 uart.c

📁 这是自己写的基于单片机89s52的UART口的双机通讯
💻 C
字号:
/*******************************************************************************
	Uart.C
	串行口收发程序
*******************************************************************************/


#include <Uart.h>


//定义发送中断辅助标志(仅用于发送)
bit _TI_;

//定义接收缓冲区和标志
unsigned char UartRecBuf;
bit UartRecFlag = 0;


//串行口初始化
void UartInit()
{
	EA = 0;
	TR1 = 0;
	RXD = 1;
	TXD = 1;
	_TI_ = 1;
	SCON = 0x50;	//串口方式1,允许接收
	PCON |= 0x80;	//波特率加倍
	TMOD &= 0x0F;
	TMOD |= 0x20;
	TH1 = 256 - ( MCLK / 12 ) / ( 16 * BAUD_RATE );
	TL1 = TH1;		//设置波特率
	TR1 = 1;
	ES = 1;			//允许串行口中断
	EA = 1;			//允许中断
}


//串行口中断服务程序
void UartINTSVC() interrupt 4
{
	char c;
	if ( RI )	//接收中断
	{
		c = SBUF;
		RI = 0;
		UartRecBuf = c;
		UartRecFlag = 1;
	}
	if ( TI )	//发送中断
	{
		TI = 0;
		_TI_ = 1;
	}
}


/*******************************************************************************
函数:UartPutc()
功能:通过串行口发送单个字节
参数:c-被发送的字节数据,取值0x00~0xFF
*******************************************************************************/
void UartPutc(char c)
{
	while ( !_TI_ );
	_TI_ = 0;
	SBUF = c;
}


/*******************************************************************************
函数:UartPuts()
功能:通过串行口发送字符串
参数:*s-被发送的字符串:字符串应当以'\0'结尾,而'\0'本身不会被发送出去
*******************************************************************************/
void UartPuts(char *s)
{
	char c;
	for (;;)
	{
		c = *s;
		if ( c == '\0' ) break;
		s++;
		UartPutc(c);
	}
}

⌨️ 快捷键说明

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