收发共用一个SBUF,是半双工。单片机收到串口数据,读到P1后清掉SBUF,后面的a=SBUF估计收不到数据,SBUF=a就发不出数据了。我猜的,没动手编它。
void s() interrupt 4
{
RI=0;
P1=SBUF;
a=SBUF;
flag=1;
}
void s() interrupt 4
{
RI=0;
P1=SBUF;
a=P1;
flag=1;
}
试试看:
……
……
ES = 1;
while(1) {
if (flag == 1) {
flag = 0;
SBUF = a;
}
}
}
void s() interrupt 4
{
if (RI == 1) {
RI = 0;
P1 = SBUF;
a = SBUF;
flag = 1;
}
TI = 0;
}
是否应该选择半双工