刘宇杰找实训 发表于 2023-6-7 21:04 谢谢解答 |
串口中断函数接收第一个字节之后,开启定时器计数。接受下一个字节的时候清空定时器计数。如此,当没有数据接收后,计时器无法清零,当计时器计数超过设定的数值之后,触发定时器溢出中断,此时数据即接收完毕 |
xuyaqi 发表于 2023-6-7 18:27 判断和LED处理已放进主循环,并且仅判断一个字节。 仍只有部分数据led1可正常亮起,如ff.fb等 请问这是什么原因呢?我该如何解决嘞。求大佬指点 这是修改后的程序 void main() { UART_init(); //串口初始化 while(1) { if(num1==0x5A) { led1=0; //第一个字节对了之后led1亮 } else led1=1; } } void UART() interrupt 4 { while(!RI); //检测是否接收完成 RI = 0; num1 = SBUF; } |
在串口中断里应该只处理数据接收,LED处理放在main循环里,不要因为LED处理影响数据接收。 |