Fork me on GitHub

【单片机程序设计】8051单片机的简单任务调配(时间调度)——调教你呆萌的八位机变机智吧

自从Inter公司开放出8051的内核生产权,到如今,8051占领着八位机的大半江山,国产STC更是推出了各种版本。即使32位机的兴起,8051这款八位机依旧宝刀未老,32位机还是代替不了8051的精明能干又低工资的廉价劳动力。各种低端嵌入式,运用8051可以解决囊中羞涩之困。但是,随着交给8051的任务开始多了起来,51单片机就开始变得越来越呆萌呆萌的,有些许小马拉大车的尴尬。剥削阶层的程序设计工程师们为了缓解尴尬,想出了一个时间表的任务调度方法,也就是时间触发系统。可以使我们呆萌的51单片机变得更有条理,更精明能干,不再因为作为肉食者而便秘啦。
##正文
不多 肺(废)法(话)拉接下来让我来介绍一下基本原理。其实原理类似就像我们小学每个星期五大扫除,每个星期三下午上体育课,每节课有45分钟一样。你想象看我们就是一块自由自在的单片机,每天早上6:00起床读书,每天晚上读书到3、4点。。。。。。。。。。其实一天就是一个周期。单片机和人一样,我们给他定个任务周期,每个任务都有固定的任务周期,时间一到,我们就让它完成相应的任务。这就是时间调度式的任务调配结构。我们写一个系统来管理这些任务函数,这个系统叫做时间触发系统。当然任务调配系统有很多种,但是时间触发系统实时性高,实用性强,资源利用率高,因此是项目开发的数一数二的选择。
###我个人总结出以下几个设计的要点,

  • 1.就是周期的选择,
  • 2.就是执行函数时间的把握,
  • 3.是打破延时函数的束缚,
  • 4.是降低任务间的关联性,将大问题化解成多个小任务,由小任务解决大问题。
  • 5.任务优先级的调度方法
    一、周期的选择要满足几个前提,第一是优先满足精确执行周期,其次是要尽量选择公倍数比较大的周期,因为公倍数越大,时间上重合的间隔就越长,周期越稳定。
    二、所有的任务函数的执行时间之和应当小于最小的时钟周期。将时间冲突降到最小。时间冲突在所难免,最坏的情况是在任务还没有执行完的情况下,任务又来了,因此所有的任务函数的执行时间之和应当小于函数执行的最小时钟周期。
    三、尽量不要用Delay()函数,或者将Delay()函数的时间利用起来,执行杂散任务。
    四、任务关联越大、任务执行时间越长,系统实时性就越低,单片机就越呆萌,因此我们必须将任务函数的执行时间降下来,降低函数间的关联性,学会吧大事情分成几天完成,每天完成一点点。将大问题化解成多个小任务,由小任务解决大问题。
    五、设置函数间的优先级,优先级高的函数在时间冲突时优先执行。
    学会利用调度机制调配任务,能提高系统的实时性,实用性,提高单片机的利用率,是充分发挥单片机的必要之举。
    ##总结
    好啦,我在此分享任务调度小思路,告别几个任务从头依次执行到位的日子啦,希望大家也能充分地调教(利用)51单片机。
posted @ 2020-08-04 09:55  赤诚Xie  阅读(73)  评论(0编辑  收藏  举报