导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→我的89C51为何不返回发送值?可能是什么问题?硬件?谢谢![guest]

 *第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;
}
} 
  
2楼:rou_wexx 2003年12月25日23:31
 读完了吧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;
    }
}

你的程序很容易导致串口溢出,因为收和发不可能完全同步的。


>>>>>>对该主题发表你的看法

本主题贴数3,分页: [第1页]


[上一篇主题]:请教高手:怎样用51系列单片机控制菲丽蒲的高频头??

[下一篇主题]:请教一个很简单的问题