我想问一下,我编写的串口中断接收!为什么接收第一组命令,执行后。再发第二条指令,却不执行!!!
下面是一些截取的程序。。。。。恳请大家帮忙
/*串口接收数据中断函数*/
i 是全局变量
。。。。。。。
。。。。。
..........
void uart_rx()
{
UCSRB&=~BIT(RXCIE);//禁止结束接收中断
rdata=UDR; //接收数据
if(rdata == 0xff && i == 0) //如果第一个字节为0xff
{
rec = rdata;
i++;
recflag = 1;
}
else
{
if(recflag)
{
rec = rdata;
i++;
if(i == 7)
{
recfinish = 1;//接收7字节完成,置标志位
i = 0;
recflag = 0;
}
}
}
UCSRB|=BIT(RXCIE);//使能结束接收中断
}
........
.......
........
void main()
{
uint sum = 0;
port_init();
duoji_init();
uart_init(9600);//波特率为9600bps
while(1)
{
if(recfinish)
{
for(i = 1; i < 6; i++ )
{
sum+= rec;
}
if(sum == rec[6]) //校验
{
if(rec[2] != 0)
{
adjust_lens(rec[2]);//调整镜头参数
}
else if(rec[3] != 0)
{
adjust_location(rec[3]);//调整云台位置
}
}
else break;
recfinish = 0;
sum = 0;
}
}
} |