1.要接受数据输入,调整SCON的REN
2.启动中断
3.编写main.c代码
#include <REGX52.H>
void UART_Init()
{
SCON = 0x50; //允许接收数据
PCON |= 0x80; //波特率加倍,不加倍时钟会变慢,会对之后的结果形成较大的误差
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA=1; //启动所有中断
ES=1; //启动串口中断
}
//接收函数
void UART_SendByte(unsigned char Byte)
{
SBUF=Byte;//将Byte写入SBUF中
while(TI==0);//TI为1时,说明产生了发送中断,表示发送数据完成
TI=0;//数据发送完了,软件将TI置0
}
void main()
{
UART_Init();
while(1)
{
}
}
//中断函数
void UART_Routine() interrupt 4
{
//收也同时发送
if(RI==1) //RI为1时,说明产生了接收中断,表示接收数据完成
{
P2=~SBUF;
UART_SendByte(SBUF);
RI=0;
}
}
4.结果展示