单片机可以按分时、顺序、中断的方法处理多个任务

程序是非常抽象的,程序质量的好与差直接影响到运行的效果。我们用单片机设计电子产品时,同时运行多个任务是很正常的。单片机是按顺序执行指令的,所以,主程序也是按着顺序从头到底的运行的。以C语言写的单片机程序为例,一般以main()作为主函数,利用while(1)不断循环要执行的任务程序。在实时性要求不同的应用场合,顺序运行就可以了,实时性要求很高的任务一般用中断来处理,如果想平衡各个任务的运行时间,可以分时处理。

中断处理实时性高任务

中断可以理解为中途打断,比如你正在工作,突然领导来电话了,当你认为领导电话比较重要的时候,就可以先保存正在进行的工作进度,接听领导电话,然后再接着你的工作。单片机程序也是一样的。高优级的任务可以设置为中断,比如按键输入中断或者串口接收中断。以串口接收中断为例,假如单片机配置了串口接收中断,当串口接收到数据时,主程序就会被打断,保护现场数据后马上跳到串口接收中断程序,串口接收中断程序处理完成后,再返回主程序接着运行。

分时处理多个任务

可以用分时的方案平衡各个任务的处理时间,比如,我们可以引入一个计数器i,假如有5个任务,可以让i在0~4之不断循环,当i=0时执行任务1,当i=1时执行任务2,当i=3时执行任务4,当i=4时执行任务5就可以了。

当然,你还可以用定时器中断做一个计时器,0~1ms时运行任务1,1~2ms时运行任务2,2~3ms时运行任务3,3~4ms时运行任务4,4~5ms时运行任务5。如果有更高的要求的话,还要以用到嵌入式操作系统了,比如FreeRTOS、uCos。