請哪位大師幫忙看一下錯在哪里?謝謝!
主機發(fā)送從機號,從機收到+1,
extern uchar Slave_PCS=-1;//從機計數(shù)初值 ,為0時第一次會少數(shù)
void ZOHJI_NUM() //============================發(fā)從機代碼=0-255==========
{
static uchar TX_ZHONGJI_COUT=0;//發(fā)送從機的編碼
uchar SLAVE_COUT=0;//從機從計數(shù)//
//===接收到的數(shù)據(jù)等于發(fā)射的數(shù)據(jù)
if(ZHONGJI_Dat==TX_ZHONGJI_COUT)
{
ERR_SALVE_TIM=0; //沒收到開始計時
TX_ZHONGJI_COUT++; //發(fā)送從機號,0-255XTD!
SLAVE_COUT++; //從機返回來編號0-255XDNX!收到也開始計數(shù)
Slave_PCS++; //開始統(tǒng)計從機數(shù)量
}
if(ZHONGJI_Dat!=TX_ZHONGJI_COUT)
{
TX_ZHONGJI_COUT; //發(fā)從機號出去,從機沒有收到,重發(fā)不變的代碼TX_ZHONGJI_COUT
SLAVE_COUT; //從機沒有收到,重發(fā)不計數(shù)
ERR_SALVE_TIM++; //從機未收到超時計時
}
if(ERR_SALVE_TIM==4)
{
TX_ZHONGJI_COUT++; //發(fā)從機號出去,3次從機沒有到,發(fā)下一個從機代碼
SLAVE_COUT++; //統(tǒng)計從機數(shù)量加一次。保持跟發(fā)送的代碼同步
}
if(ERR_SALVE_TIM==7) //如果3次從機也沒有收到就結束
{
ERR_SALVE_TIM=0;
TX_ZHONGJI_COUT=1; //如果還沒有從機返回來重新開始,表一輪結束//從1開始發(fā)
SLAVE_COUT=0; //從機計數(shù)清0
ZHONGJI_PCS_A=Slave_PCS;//把計數(shù)發(fā)送到遙控器上顯示
Slave_PCS=0; //從機總計數(shù)清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);//發(fā)代碼1-255個數(shù)
memset(S_tab,0,sizeof(S_tab));
}
|