*第18293篇: 我的89C51为何不返回发送值?可能是什么问题?硬件?谢谢!
楼 主:guest 2003年12月25日21:32
我的89C51为何不返回发送值?可能是什么问题?硬件?谢谢!我以用pc的两个rs232测试过,两个pc串口和测试软件是ok的,我的c51如下,请高手赐教。
#include
<at89x51.h>
sbit
p00=p0^0;
sbit
p20=p2^0;
main()
{unsigned
char
i;
//unsigned
long
j;
scon
=
0x50;
//scon:
serail
mode
1,
8-bit
uart,
enable
ucvr
tmod
=
0x20;
//tmod:
timer
1,
mode
2,
8-bit
reload
pcon
=
0x00;
//smod=0;
th1
=
0xfd;
//baud:9600
fosc=11.0592mhz
tl1
=
0xfd;
//
ie
=
0x90;
//enable
serial
interrupt
tr1
=
1;
//
timer
1
run
p00=0;//only
for
display.
p20=0;
while(1)
{while(ri==0);
i=sbuf;
sbuf=i;
while(ti==0);
ti=0;
}
}







读完了吧RI清零啊。试试。读完了吧RI清零啊。试试。
第3楼:guest 2003年12月26日16:07
最后那段改成这样试试:
while(1最后那段改成这样试试:
while(1)
{
if(ri)
{
ri=0;
i=sbuf;
}
if(ti)
{
ti=0;
ti=0;
}
}
你的程序很容易导致串口溢出,因为收和发不可能完全同步的。