您的位置:程序门 -> 硬件/嵌入开发 -> 片机/工控



串口接收:发aa(10101010)收d5(11010101);发55(01010101)收也收d5


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


串口接收:发aa(10101010)收d5(11010101);发55(01010101)收也收d5
发表于:2007-07-10 11:15:38 楼主
串口接收:发aa(10101010)收d5(11010101);发55(01010101)收也收d5??

现在发送没问题,只是接收出问题,
顺便问一下如何清除接收sbuf的内容,看书上说复位/断电sbuf的状态都不定,我怀疑可能这出问题,波特率也没问题(9600,8,1)
发表于:2007-07-10 11:16:191楼 得分:0
main()
{
    tmod=0x20;                       //确定定时器的工作方式
    tl1=0xfd;th1=0xfd;       //装载th1,tl1   paul=9600
    scon=0xd8;pcon=0x00;
    tr1=1;

    ie=0x90;         //   es=1;
    i=0;

    while(1)
    {
          delay(1000);
    }
}
//-------------------------------------------------
void   serial()   interrupt   4   using   1
{
/*
      char   c;
      c=   sbuf;
      ri=0;
      if(i!=19)
      {
            rdata[i++]=c;
      }
*/
if(ri)
{
    if(i> =20)
    {
        i=0;

    }
    else
    {
        rdata[i++]=sbuf;
    }
    ri=0;
}
}
//-------------------------------------------------
发表于:2007-07-10 16:51:292楼 得分:0
sbuf有两个,一个发送sbuf,一个接收sbuf,虽然名字都一样,发送sbuf只能写不能读,接收的sbuf只能读不能写.复位后接收sbuf的值应该是0x00,即使不是,都已经进接收中断了程序了说明接收sbuf也被接收的数据更新了,所以你说的问题应该是不存在的.是不是你程序里的i没有定义成全局变量?呵呵!
发表于:2007-07-10 23:41:363楼 得分:0
现在真是有搞不到北了!
既然物理上有两个独立的sbuf为何又让他们使用同一个地址!这倒不是我关心所在,只是这个入门级的小程序都遇到如此问题555
更有意思的是,每次主从机都上电时能正确接收一次,以后就不行了,
发表于:2007-07-11 08:28:234楼 得分:0
问题解决,大家引以为戒:两个串口一个公头,一个母头(备用),备用头没有空载接到另一个闲置的试验板忘拔下来了:)
发表于:2007-07-11 09:25:075楼 得分:0
大小头序的问题吧?reverse一下。
发表于:2007-07-11 11:30:436楼 得分:0
选串口工作方式应该不对吧
发表于:2007-07-11 19:35:487楼 得分:0
有时侯在断电/上电时,怎么会接收到一些数据:0x00,0xff,
发表于:2007-07-26 23:40:338楼 得分:0
我上电时会发送0x00或者0xff。不知道为什么!
发表于:2007-07-27 08:51:159楼 得分:0
lz注意一下时序...

好好计算一下定时器的值...
发表于:2007-07-28 08:59:3410楼 得分:0
captive007(笨蛋中的笨蛋):你也遇到此问题?
发表于:2007-07-28 09:41:3211楼 得分:0
我现在也是啊,每次都要上电才能正确下载,我都设置了自定义下载的,还是没用阿!!!


快速检索

最新资讯
热门点击