【编程基础】程序设计中的“时间片轮转”

    先用一个小例子引出今天的主题,想象一下,一个基本的家电控制板,肯定或多或少的会包含 LED 或者数码管显示,按键,继电器或者可控硅的输出3部分。数码管需要 10ms20ms的动态扫描,按键也需要 20ms左右的延时消抖,有没有意识到,其实这些时间是同时在进行的。回想一下咱们的教科书怎么教按键的延时消抖的?没错,死循环,绝对是原地踏步死循环,用指令来计时。这样很自然的引发一个问题,单片机在原地踏步死循环的话,那么其它的工作怎么办?如数码管的动态扫描怎么办?唯有等按键扫描之后再进行了,这样出来的效果,数码管肯定会闪烁的,扫描时间过长了,缩短按键消抖时间也不是解决办法,想象如果咱们还有其它很多工作也是同时做的呢?解决办法之一,就是今天的主题,分时扫描的思想。当然不会是唯一的办法,只不过俺一直在用,觉得这个是非常不错的思想,可以解决很多实际问题。大胆妄言一下,分时扫描的思想也是单片机编程最核心的思想了,信不信就由你自己判断了。(转自 程序匠人

    最近接触了嵌入式系统,所以对这个时间片轮转思想理解比较容易。单CPU一个时间点就只能执行一个进程,所谓的多任务就是在多进程中进行不断切换。因为速度太快,我们无法分辨出这种现象,造成了多进程同时执行的假象,就像数码管的动态扫描一个道理。

  时间片轮转在某些嵌入式系统也是适用的。将基础时钟(如systick)划分为多个时间片。时间1到达----执行任务1;时间2到达----执行任务2;时间n到达----执行任务n...

  如此好的程序设计方法,完全可以在平时的编程中养成,能够大大增加程序的执行效率。那怕是51单片机也需要如此。告别原地踏步的空延迟,不要再让程序在原地等待。我们的单片机是一直跑着的。咱们要跑着等,不是站着等。等待的时间可以让单片机去执行其他程序,提高程序执行效率

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值