void uart_rx_isr(void) //接收中断函数{ uchar c; c=SBUF;//c等于接收的字节; switch (recv_state) { case 0: if (c==0x02) // 是数组第一字节 { recv_state=1; // 进入下一个状态 } else recv_state=0; // 回到初始状态 break; case 1: if (c!=0xff) // 是数组第二字节 拢共 3位数据 中间这位 为数据位 就不进行校验判断了 { recv_state=2; // 进入下一个状态 Rx_Data=SBUF; //把 这个数据 纪录下来 作为 后面的判断 } else { recv_state=0; // 回到初始状态 } break; case 2: if (c==0x03) // 是数组第三字节 { // recv_state=3; // 进入下一个状态 Flag=1; recv_state=0; // 回到初始状态 } else { recv_state=0; // 回到初始状态 } break; }}void UART_interrupt() interrupt 4{ if(RI==1)//如果接收了数据(RI会置1) { RI=0; //先清零,下次可以在接收数据 uart_rx_isr(); //调用数据判断这个函数 } }