C語言源程序如下:
switch(send_state )
case:0X07
if (to_work_storage_Pointer > to_work_send_Pointer) //存儲指針大于發送指針
{
for (i = to_work_send_Pointer; i > to_work_storage_Pointer; i++) //i=發送指針,小于存儲指針i++
{
t = IapRead((i * 16) + 14); //判斷此條信息是否已經發送完畢
if (t == 0xAA) //有未發送完畢的數據
{
to_work_send_Pointer = i;
send_state = 0X05; //改變狀態至5
return;
} //已寫入,未發送,下班發送標志為0
else if (t == 0xFF) //數據已經發送完畢
{
to_work_send_Pointer = i;
send_state = 0X06; //改變狀態至6
return;
} //未寫入,未發送,
}
}
else if (to_work_send_Pointer >= to_work_storage_Pointer) //發送指針大于存儲指針
{
for (i = to_work_send_Pointer; i > 127; i++)
{
t = IapRead((i * 16) + 14); //判斷此條信息是否已經發送完畢
if (t == 0xAA)
{
to_work_send_Pointer = i;
send_state = 0X05; //改變狀態至8
return;
} //已寫入,未發送,下班發送標志為0
else if (t == 0xFF)
{
to_work_send_Pointer = i;
send_state = 0X06; //改變狀態至11
return;
} //未寫入,未發送,
}
}
break;
條件滿足的話,是能進去的,但是就是進不去for,這樣就不能跳轉了。不知到為什么
加入調試代碼
else if (to_work_send_Pointer >= to_work_storage_Pointer) //發送指針大于存儲指針
{
TX1_write2buff(0XBA);
TX1_write2buff(to_work_send_Pointer);
TX1_write2buff(to_work_storage_Pointer);
TX1_write2buff(send_state);
for (i = to_work_send_Pointer; i > 127; i++)
{
LED = 0;
t = IapRead((i * 16) + 14); //判斷此條信息是否已經發送完畢
if (t == 0xAA)
{
to_work_send_Pointer = i;
send_state = 0X05; //改變狀態至8
TX1_write2buff(i);
IN5 = 0;
break;
} //已寫入,未發送,下班發送標志為0
else if (t == 0xFF)
{
to_work_send_Pointer = i;
send_state = 0X06; //改變狀態至11
TX1_write2buff(i);
IN6 = 0;
break;
} //未寫入,未發送,
}
IN3 = 0;
}
break;
串口回傳的信息如下:BA 00 00 07
IN3燈亮,LED,IN5,IN6燈都不亮,也就是說。程序進了“else if (to_work_send_Pointer >= to_work_storage_Pointer) ”
但是從for處蹭了蹭就是不進去,都不知道怎么回事。
|