📄 main.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 + -