标题: 单片机多机通信程序 主机为什么统计有时不准? [打印本页]

作者: liduofu    时间: 2022-4-22 22:54
标题: 单片机多机通信程序 主机为什么统计有时不准?
请哪位大师帮忙看一下错在哪里?谢谢!
主机发送从机号,从机收到+1,
extern uchar  Slave_PCS=-1;//从机计数初值 ,为0时第一次会少数

void ZOHJI_NUM()   //============================发从机代码=0-255==========
{
static uchar  TX_ZHONGJI_COUT=0;//发送从机的编码
        uchar  SLAVE_COUT=0;//从机从计数//
          //===接收到的数据等于发射的数据
      if(ZHONGJI_Dat==TX_ZHONGJI_COUT)
     {
           ERR_SALVE_TIM=0;  //没收到开始计时   
           TX_ZHONGJI_COUT++; //发送从机号,0-255XTD!
           SLAVE_COUT++;  //从机返回来编号0-255XDNX!收到也开始计数
     Slave_PCS++;    //开始统计从机数量
     }
     
   if(ZHONGJI_Dat!=TX_ZHONGJI_COUT)
     
      {
     
        TX_ZHONGJI_COUT;  //发从机号出去,从机没有收到,重发不变的代码TX_ZHONGJI_COUT
        SLAVE_COUT;     //从机没有收到,重发不计数
   
        ERR_SALVE_TIM++;  //从机未收到超时计时
     
      }
    if(ERR_SALVE_TIM==4)
        {      
         TX_ZHONGJI_COUT++;  //发从机号出去,3次从机没有到,发下一个从机代码
      SLAVE_COUT++;         //统计从机数量加一次。保持跟发送的代码同步
        }
        
     if(ERR_SALVE_TIM==7)   //如果3次从机也没有收到就结束
        {
         ERR_SALVE_TIM=0;      
         TX_ZHONGJI_COUT=1;  //如果还没有从机返回来重新开始,表一轮结束//从1开始发
     
       SLAVE_COUT=0; //从机计数清0
                  ZHONGJI_PCS_A=Slave_PCS;//把计数发送到遥控器上显示
                  Slave_PCS=0; //从机总计数清0   
   
        }
   
   TX_ZHONGJI_NUM[0]=TX_ZHONGJI_COUT/100+0x30;
      TX_ZHONGJI_NUM[1]=TX_ZHONGJI_COUT%100/10+0x30;
   TX_ZHONGJI_NUM[2]=TX_ZHONGJI_COUT%100%10+0x30;
   TX_ZHONGJI_NUM[3]='X';
      TX_ZHONGJI_NUM[4]='T';
   TX_ZHONGJI_NUM[5]='D';
   TX_ZHONGJI_NUM[6]='!';   
     
SendString(TX_ZHONGJI_NUM);//发代码1-255个数   
     
  memset(S_tab,0,sizeof(S_tab));  
   
}

作者: 快乐眼泪    时间: 2022-11-15 20:52
楼主找到原因了吗?
作者: Hephaestus    时间: 2022-11-16 14:40
先把主机和从机的问题区分开来,先用PC端串口助手自动发送功能模拟主机,看看从机响应如何。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1