我在用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();
}
}
采用同样的方法,则可以对外发出数据,搞不明白为什么,求哪位大侠能给解答一下,十分感谢!
|