想通过上位机发送命令来控制单片机,通过接收中断把命令放入接收缓存,再判断缓存里是哪个命令。
想要实现这个操作,第一需要把正确的命令存入缓存,我的命令是以两个@@开始,以#结束,下面是命令接收代码:
unsigned char rx_EN=0;//这里需要定义一个串口接收标志,用于判断包头包尾
void UART1_int (void) interrupt UART1_VECTOR
{
if(RI)
{
unsigned char res;
RI = 0;
res= SBUF;
if(res=='@')
{
RX1_Buffer[RX1_Cnt] = res;
RX1_Cnt=1;
if( RX1_Buffer[RX1_Cnt-1]=='@' && RX1_Buffer[RX1_Cnt]=='@' && RX1_Cnt<2)
{//这里的意思是接收到两个@符号,判断为包头
rx_EN=1;
}
}
if(rx_EN==1)
{
RX1_Buffer[RX1_Cnt++] = res;
if(RX1_Buffer[RX1_Cnt-1] == '#')
{//判断包尾
uart_cmd_flag=1;//值标志位
rx_EN=0;
}
}
if(RX1_Cnt >= UART1_BUF_LENGTH)
{//防止溢出
RX1_Cnt = 0;
rx_EN=0;
}
}
if(TI)
{
TI = 0;
B_TX1_Busy = 0;
}
}