51单片机的串口是全双工的,可以同时实现发送和接收。基于这个原理,做了一个数据同时发送和接收的小实验。 双机通信的protues图
代码如下,欢迎大家交流学习
#include<reg51.h>
#define uchar unsigned char
uchar send=0;
uchar receive=0;//设置接收和发送
void delay(unsigned int time )//延时
{
unsigned int j=0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void UART()interrupt 4
{
if(RI) //如果接收到信号
{
RI = 0; //清除中断标志
receive = SBUF;
}
if(TI) //发送完信号,等待下次发送
{
TI = 0; //清除中断标志
}
}
void init()
{
SCON = 0x50; //串口工作在方式1
PCON = 0; //SMOD=0,波特率不加倍
TMOD = 0x20; //