我在用keil u4寫單片機程序的時候,遇到如下情況(只貼了整個程序的一部分):
//串口發送函數
void UartDriver()
{
if(flagFrame)
{
flagFrame=0;
UartReceive();
if(buf[0]!=0x01) //地址不相符,直接跳出,buf[0]字節代表地址
{
return;
}
switch(buf[1])
{
case 0x12:PowSta=buf[1];break;
case 0x13:PowSta=buf[1];break;
default:break;
}
ScanKey();
KeyCode();
UartSend();
}
}
如果程序寫成上述形式,用串口助手調試,對從機發0x01+數據,2個字節,程序不能對外發送數據(程序為從機程序),但是如下改下如下:
//串口發送函數
void UartDriver()
{
if(flagFrame)
{
flagFrame=0;
UartReceive();
if(buf[0]==0x01) //地址不相符,直接跳出,buf[0]字節代表地址
{
switch(buf[1])
{
case 0x12:PowSta=buf[1];break;
case 0x13:PowSta=buf[1];break;
default:break;
}
}
ScanKey();
KeyCode();
UartSend();
}
}
采用同樣的方法,則可以對外發出數據,搞不明白為什么,求哪位大俠能給解答一下,十分感謝!
|