本人写单片机程序也有五六年了,其实在三年前我写的程序里几乎没有delay()了,如果你的程序没有delay那么整个程序执行起来会非常的快。下面我们来分析下平时写单片机程序中所遇到的阻塞,以及解决思路。
在讲之前我们的程序框架是main函数里先初始化,然后while(1),前台程序是各种中断。
阻塞有:
①按键程序判断会用到delay消抖,典型的消抖是5ms。
②动态显示时候显示一位数码管时候也会用到延时5ms左右。
③等待串口发送完成。
④好像就这些比较耗时的了。
解决方法:
①像这样的程序,我们可以在定时中断里面判断按键的状态
②解决方法同上
③串口中断发送估计很多人没有用过,也有很多人觉得没有必要,我想说的是你没有写过大型项目,对实时性要求不高,如果你的程序很大,需要服务的地方很多,那你用阻塞式发送很可能会降低整个程序的实时性了,例如9600波特率发送一个字符1ms时间,如果一次发送50个字符就是相当于执行delay(50);那怎么用中断发送呢?很简单,打开串口\发送中断,第一个字符你程序发送,剩余的在发送中断里面发送即可。