我用的USB转串口,下面的程序怎么不能实现,双工通讯啊?

2024-12-20 05:36:25
推荐回答(3个)
回答1:

收发共用一个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;
}

回答2:

试试看:

……
……
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;
}

回答3:

是否应该选择半双工