51单片机串口接收数组数据有误【点击查看详情】
对于发送端,如果数据量较小,且发送时间间隔较短,可以采用中断查询的方式来接收数据包。具体实现如下:在中断服务程序中,可以定义一个接收缓冲区和计数器变量。,void serial () interrupt 4 using 3 { uchar a,cnt;a=0;cnt=250;// 如果波特率较低且系统时钟较快,cnt应定义为int型,并设置更大的值 RI=0;ES=0;// 关闭串口中断 str[a++] = SBUF;while(cnt--){ // 如果cnt等于0时退出循环 if(RI){ RI=0;str[a++] = SBUF;cnt=250;// 接收到新的数据,重新设定超时 } } ES=1;// 重新开启串口中断 // 这里可以设置一个接收数组的标志位。
相关视频/文章