打印

单片机模拟串口,接收多个字节时,只有第一个字节是对的

[复制链接]
2264|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xp1314520|  楼主 | 2013-5-5 19:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接收多个字节时,只有第一个字节是对的,下面是接收字节子函数
//接收一个字符
void PGetChar()
{
    unsigned char rch,ii,j;
    for(j=0;j<4;j++)  //接收4个字节
   {
       TIMER0_ENABLE;
       F_TM=0;
       ii=0;
       rch=0;
        while(!F_TM); //等过起始位,时间到了,进入定时器0中断以后,F_TM置1,执行下一条语句
        while(ii<8)   //
       {
             rch>>=1; //一开始接收时,rch=0,右移1位还是0.
            if(BT_REC) //根据接收端口的值来判断是0还是1,如果接收到1进入if,0则跳过
            {
                     rch|=0x80;//将最高位置1,如果是0,则跳过不与0x80相或。
            }
             ii++;   //最后将得到的数据存入rch中。rch即为接收到了字节
             F_TM=0;
             while(!F_TM);//等待,
         }
         F_TM=0;
         while(!F_TM)
         {
          if(BT_REC)
         {
                break;
          }
         }
  
            TIMER0_DISABLE; //停止timer0

           recode[j]=rch;
           rch=0;
    }
}
求高手指教
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

57

帖子

1

粉丝