#include <reg51.h>
int flag = 0;
//初始化串行口
void csh()
{
SM0=0;
SM1=1;
REN=1;
TI=0;
RI=0;
PCON=0;
TH1=0xF3;
TL1=0XF3;
TMOD=0X20;
EA=1;
ET1=0;
TR1=1;
}
void main()
{
int i,j;
csh();
while(1)
{
if(RI==1)
RI=0;
if(SBUF == 0x01)
{
ES=0;
SBUF=12;
while(!TI);
TI=0;
SBUF=13;
while(!TI);
TI=0;
ES=1;
for(j=0;j<25;j++)
for(i=0;i<5000;i++) ;
flag=0;
}
}
}
你这是仿真还是实物开发板?这串口通信是单片机与电脑吗?电脑上只能用串口调试助手,才能发送0x01,那接收的数据为什么用0x01?换个字母或数字的ASCII码,电脑上或仿真才方便发送。
程序简化一下,如下
#include <reg51.h>
void main()
{
SCON=0x50;
TL1=0xFD;
TMOD=0x20;
TR1=1;
while(1)
{
if(RI==1)
{
RI=0;
if(SBUF=='A')//接收字母A
{
SBUF='B';//发送字母B
while(!TI);
TI=0;
SBUF=13;//回车
while(!TI);
TI=0;
}
}
}
}
仿真结果如下,可以接收和发送,都正常。请及时采纳。