最近在研究430 看到有人写的一段代码,为了接收GPS的数据,使用串口中断接收,部分代码如下:
if(global_temp_data_num==0) //获取"GG"标志
{
if(RXBUF0=='G')
{
global_temp_data[0]='G';
global_temp_data_num=1;
}
else global_temp_data_num=0;
}
else if(global_temp_data_num==1)
{
if(RXBUF0=='G')
{
global_temp_data[1]='G';
global_temp_data_num=2;
}
else global_temp_data_num=0;
}//"GG"标志获取完成
else
{
global_temp_data[global_temp_data_num]=RXBUF0;
global_temp_data_num++;
}
global_temp_data_num 接收前初始化为0.
搞不明白的是,global_temp_data[0]里面不可能存入数据嘛,那么
if(RXBUF0=='G')
{
global_temp_data[0]='G';
global_temp_data_num=1;
}
怎么可能成立,请各位大侠求助,实在想不通了
此帖出自
小平头技术问答
回想一下=和==的区别就知道了
=是赋值语句,==是判断语句
if(global_temp_data_num==0) //当global_temp_data_num=0时
{
if(RXBUF0=='G')//如果收到G
{
global_temp_data[0]='G';//那么存入global_temp_data[0]
global_temp_data_num=1; //再让global_temp_data_num=1
}
else global_temp_data_num=0;//如果收到的不是G,那么让global_temp_data_num回到0
}
else if(global_temp_data_num==1)//如果global_temp_data_num=1,说明之前接收到一个G了,这是G后面的一个字符
{
if(RXBUF0=='G')//判断第二个收到的是不是G
{
global_temp_data[1]='G';//如果还是G,那赋值进global_temp_data[1]
global_temp_data_num=2; //同时让global_temp_data_num变成2
}
else global_temp_data_num=0;//如果收到的第二个字符不是G,那么说明不符合开始条件,回到global_temp_data_num=0重新接收
}//"GG"标志获取完成
else//收完GG开始标志之后,收到其他的字符
{
global_temp_data[global_temp_data_num]=RXBUF0;把字符放进global_temp_data[global_temp_data_num]里
global_temp_data_num++;//让global_temp_data_num比原来多1,好存放下一个字符
}
一周热门 更多>