C51串口接收数组并发送

2019-07-15 15:22发布

串口接收一组以数据,数组以FF开头,如FF 00 11 22 33 44 55 66,一直接收。然后在满足某一条件时候发送出去,现在收到数据的顺序不对了,程序:

void r_t_data(void) interrupt 4        //串口中断接收数据组,共7个,首位为0xFF.
{
   uchar data_r,i;
           bit rec;
        
        if (RI==1)
        {
         data_r=SBUF;
         RI=0;
         if((data_r==0xff))
                 {i=0;
                 rd=SBUF;
                 i++;
                 rec=1;        }
         if(rec==1)                           
                  {
                          if(i<7)
                           {rd=SBUF;        
                          i++;
                          }
                         if(i>=7)
                         { rec=0;
                         }
                  }                 
                 }

        

               if(r==1)                       //如果r为1,则发送数组。在主程序里;
                        {ES=0;
                        zhuanhuan();                        
                        cai1=cai1+cai;
                        txdd(rd,7);
                        ES=1;        
                         r=0;
                        }

void txdd(uchar tt[],uchar n)                                           //RS232装tt数组里的的n个数据写出,
{  uchar i;
         for(i=0;i<n;i++)
         { SBUF=tt;
          while(!ti );
                TI=0;   
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。