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

📄 main.c

📁 UART基本收发
💻 C
字号:
/*******************************************************************************
程序名称:简单的串行口收发
硬件接法:RXD和TXD通过RS-232电平转换电路接到电脑的串行口上
运行效果:开机时向电脑发送Hello,然后接收电脑发出的字符并回显
*******************************************************************************/


#include <reg51.h>


//定义波特率(取值1200、2400、4800、9600、19200等)
#define BaudRate	9600L


/*******************************************************************************
函数:UartInit()
功能:串行口初始化
*******************************************************************************/
void UartInit()
{
	SCON = 0x50;	//串口方式1(8位UART),允许接收
	PCON |= 0x80;	//波特率加倍
	TMOD &= 0x0F;	//设置T1为8位自动重装定时器,用于产生波特率
	TMOD |= 0x20;
	TH1 = TL1 = 256 - (11059200L / 12) / (16 * BaudRate);	//设置T1初值
	TR1 = 1;		//启动T1
}


/*******************************************************************************
函数:UartSendChar()
功能:通过串行口发送单个字节
参数:c是被发送的字节数据,取值0x00~0xFF
*******************************************************************************/
void UartSendChar(char c)
{
	SBUF = c;		//数据写入SBUF,同时启动硬件发送过程
	while ( !TI );	//等待发送完毕
	TI = 0;			//清除发送标志
}


/*******************************************************************************
函数:UartSendStr()
功能:通过串行口发送一个字符串
参数:*s是被发送的字符串
*******************************************************************************/
void UartSendStr(char *s)
{
	char c;
	for (;;)
	{
		c = *s++;
		if ( c == '\0' ) break;
		UartSendChar(c);
	}
}


//主函数
void main()
{
	unsigned char c;
	UartInit();
	UartSendStr("Hello\r\n");
	for (;;)
	{
		if ( RI )		//如果收到数据
		{
			RI = 0;		//清除接收标志
			c = SBUF;	//读取收到的数据
			UartSendChar(c);	//回送收到的数据
		}
	}
}

⌨️ 快捷键说明

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