找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1930|回复: 0
打印 上一主题 下一主题
收起左侧

从设计角度理解单片机定时器及相应的程序结构

[复制链接]
跳转到指定楼层
楼主
ID:266429 发表于 2018-1-7 21:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    可以这样说,如果你不能理解在单片机中为什么要设计这么一个东西、如何设计的这个东西,那么你就只能照抄别人的程序,而不知道程序结构为什么是这样的,这个没意思是吧?所以,我们应该弄懂。
    简单点说吧,我们知道在单片机的工作中,经常在做完一件事后,需要延迟一段时间才能去做下一步事件,也就是要“确定过一段时间”即定时。
我们知道,在单片机中,程序的执行都是由中央处理器来执行的。我们把这个“中央处理器”比作你,你做完一步,然后要延迟一段时间后再去做下一步。这个延迟时间的做法,我们首先想到的就是自己去数数,一二三四等等,数到了,就开始做下一步。这个蛮浪费你的时间,因为你自己计数时,别的事就都干不了了。这个方法在编程中,我们就看到是放在主程序中直接执行延时计算程序(或者是直接调用延时子程序)。
    为了解决浪费的问题,我们就想到了在旁边放一个钟,让钟来帮你数数(计时),然后你可以做其它的事,过一会看一下钟,再做其它的事,再过一会再看一下钟,也就是做一会事看一下钟,一看时间到了,就开始做你原先计划定时后的下一步。这个方法在编程中,我们就看到主程序中依然要花一段程序去实现延时,这个依然需要占用你(中央处理器)一定的时间。
    有没有不需要中央处理器来直接实现延时(定时)的办法?那就是让钟加一个闹钟功能嘛,你只需要象我们在生活中使用闹钟一样设定需要延迟的时间段,并在这个闹钟下面写一张条子,条子上面写好这个闹钟开闹后你要做的事,设好后你该干嘛就去干嘛,等闹钟响了,你先把手头上正在做的事记一下做到哪了,然后你就跑去干这个条子上的事就行了。这个方法在编程中,我们就看到有了个中断程序,这个中断程序中放的就是条子上写的事。
    这里需要说明的是,单片机中的定时器,犹如你生活中的闹钟一样,是另外一个东西,而不是中央处理器的一部分,它是做在单片机中的一个功能硬件。而且,所有的程序执行,都是你(中央处理器)的事,闹钟的设定与解除,也是你的事而不是闹钟的事,包括中断程序中的程序,也是由中央处理器来执行的。这一点,对于我们理解程序结构很重要。
    我们可以再深入思考一下:中断程序中的程序,能不能由闹钟来执行?那样不是可以更加节省中央处理器的时间?这个应该是可以的吧?你给闹钟再配一个人嘛,也就是你给闹钟也加一个中央处理器就行了,让他去干条子上的事。只不过,我们现在用的单片机,都没这个功能,你想要这么一个单片机,那你得自己动手设计并制造了。如果你不想或不能设计,那你得再买一片单片机了,划不划算是另外一回事,你的思路应该这样开阔。
PS:细节上的差别我就不说了。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表