请哪位大师帮忙看一下错在哪里?谢谢!
主机发送从机号,从机收到+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));
}
|