|
這個程序,在第一次判斷(!send_busy)后,可以進入
if(head_counts)....但是執(zhí)行到SEND_PULS(PULS_HEAD_WIDTH)后,
send_busy就為非0 了,那么下次就直接執(zhí)行最后的
else{SEND_PULS(PULS_STOP_WIDTH)...}了,
好像不能進入發(fā)送send_buf[]的部分。
http://www.zg4o1577.cn/mcu/1926.html 這個網(wǎng)頁里有段程序,想請教一下。
void send()
{
if (!send_busy)
{
if(send_byts || send_bit_p)
{
if (head_counts)
{
head_counts--;
if(head_counts)
SEND_PULS(PULS_HEAD_WIDTH);
else
SEND_PULS(PULS_START_WIDTH);
}
else{
if (send_bit_p == 0)
{
sending_byte = send_buf[send_byte_p];
send_byte_p++;
send_byts--;
send_bit_p = 8;
}
if(sending_byte & 0x80)
{
SEND_PULS(PULS_1_WIDTH);
}
else
{
SEND_PULS(PULS_0_WIDTH);
}
sending_byte <<= 1;
send_bit_p--;
}
}
else
{
SEND_PULS(PULS_STOP_WIDTH);
send_stat = SEND_SUCCESS;
}
}
return;
}
|
|