当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:本文通过介绍只有双时钟的单片机系统,在多个事件需要分别定时或延时的时候,解决一个时钟完成多个计时延时的有效方法,通过这种方法可以达到对多个被控事件统一自动

摘要:本文通过介绍只有双时钟的单片机系统,在多个事件需要分别定时或延时的时候,解决一个时钟完成多个计时延时的有效方法,通过这种方法可以达到对多个被控事件统一自动控制目的。 关键词:单片机、定时器、机器周期、分频 一、引言 单片机作为嵌入式系统的微控制器,已经不是新鲜的事情,作为单片机的定时/计数器的使用可以说没有什么难度,但对于需要多个独立计时的事件,单片机的两个时钟显得有点不能满足要求,其实不然,合理的运用内存和标志位可以实现一个定时器充当多个计时时钟的效果,本文以51系列单片机为例,实现一个时钟控制8 个独立马达的运行过程中,时间分别统计方法。 二、单片机计数/定时器的基本原理简介 本文以51系列单片机为例介绍定时器的用法,定时/计数器的原理可以分为定时和计数两部分,定时器的原理是通过设定8位或16位的定时器单元,通过给定定时器单元的初值,然后启动定时器,于是定时器开始从初值开始累计,每增加一个数需要特定的时间,这个特定的时间是累加指令的机器周期,是由MCU的晶振的频率决定。对于51系列的单片机机器周期是时钟周期的1/12,也就是晶振频率的12分频。单片机的定时器原理上相当于一个16位的内存单元,通过 TMOD可以设定定时/计数器的工作方式。计数值从初值计到全“1”,如果是16位方式则计数单元变成FF,此时并不产生中断,当下一个计数指令加1,导致存储单元溢出,在中断控制寄存器允许的情况下产生中断,通过中断服务程序执行特定的任务。计数器的原理不同之处在于,不是单纯的加指令,而是对外部的脉冲计数,常用来测量脉冲的宽度。 三、时钟对多事件分别计数的具体途径 对于实时性要求不是很高的时间可以通过如下方式实现。在完成基本的定时器工作方式设定以后,也就是设定定时器的计数方式,比如16位或8位,以及计数的初始值,以及启动中断的方式,建议使“SETB TR0”的方式。并且允许中断。在中断服务程序中,开辟存储单元,以8个事件为例,每个事件不一定同时发生,每个事件发生以后以相同的时间延迟,再进行下一步的任务,为了完成定时延时,事件发生的时刻记作A1,A2,A3。。。。。。A10,中段服务程序中首先检查有无这些既定的事件发生,没有则不做任何处理,恢复计数初值后退出中断,相反,假如检测到AX(X=1、2、3。。。。。。)事件发生则给预先选定的对应的内存单元增加1,也就是执行累加运算,比如, A1"50H; 表示A1对应的存储单元是50h A2"51H; 表示A2对应的存储单元是51h A3"52H; 。 。。 。。 。 A7 57H; 表示A7对应的存储单元是57h 假如A3事件发生,则对52H内存表示的地址单元增加1,使用的指令是“INC 52H”,可以预先计算事件延时时间与计数单元数值的关系,当对应的数值到了预先设定的值时,执行下一任务。比如开关操作等等,并且恢复初始值以便继续循环控制。这样可以分别对A1到A7,8个任务分别计时,时间可以相同也可以不同,具体的情况可以根据中断程序中寄存器累计的实际值与根据需要所设定的预定值比较而实现。 四、典型应用 也许大家都看到过繁华街道上的拼图式广告牌吧,有十几个或者几十个三棱柱,通过旋转,构成不同的画面,在每幅画面都停留一段时间,这正好是上面介绍的情况,当一个棱柱的某个画面转到特定的角度,比如正对马路的方向,该画面必须停留,等所有与此画面相连接而能拼成完整画面的其他柱面到来,也就是从柱面开始启动到下一次停下来需要所有画面经过相同的时间,然而所有的主面不可能同时启动,可能为了形成某种观赏效果,有意依次启动,或由中间开始启动,逐渐向两边延伸,等等,所有这些事件的转动控制实质就是定时控制,先启动,先停止。最终保证所有的画面构成一幅完整的画面,而且必须是一个平面,我通过这种方法成功地完成了8组和15组转动马达的起停控制,实践证明这种方法简单可行。部分原程序如下所示。基本流程和部分程序代码如下。

以下是定时中断服务程序的全部代码,可以完成对8个事件的时间统计,并在时间满足条件时,调用子程序OUT01,是对外部开关的控制指令。通过这段程序,成功实现了一个定时器对多个事件的自动运行控制(以下程序仅供参考)。 TIME0: CLR TR0 PUSH PSW PUSH ACC MOV TL0,#22H;定时100ms重新启动定时器0 MOV TH0,#1CH LINSHI: MOV A,2AH CJNE A,#0FFH,DEA SETB TR0 POP ACC POP PSW RETI DEA: MOV A,2AH CJNE A,#00H,DE1 MOV A,2CH CJNE A,#00H,DE1 ;SETB TR0 POP ACC POP PSW RETI DE1: JNB 2AH.0,DEAL1 DE2: JNB 2AH.1,DEAL2 DE3: JNB 2AH.2,DEAL3 DE4: JNB 2AH.3,DEAL4I DE5: JNB 2AH.4,DEAL5I DE6: JNB 2AH.5,DEAL6I DE7: JNB 2AH.6,DEAL7I DE8: JNB 2AH.7,DEAL8I LJMP FINISH DEAL4I: LJMP DEAL4 DEAL5I: LJMP DEAL5 DEAL6I: LJMP DEAL6 DEAL7I: LJMP DEAL7 DEAL8I: LJMP DEAL8 DEAL1: JNB 2CH.0,DE2 INC 50H MOV A,50H CJNE A,#20,DE2 CLR 2CH.0 LCALL OUT01 mov 50h,#00h LJMP DE2 DEAL2: JNB 2CH.1,DE3 INC 51H MOV A,51H CJNE A,#20,DE3 CLR 2CH.1 LCALL OUT01 MOV 51H,#00H LJMP DE3 DEAL3: JNB 2CH.2,DE4 INC 52H MOV A,52H CJNE A,#20,DE4 CLR 2CH.2 LCALL OUT01 MOV 52H,#00H LJMP DE4 DEAL4: JNB 2CH.3,DE5I INC 53H MOV A,53H CJNE A,#20,DE5I CLR 2CH.3 LCALL OUT01 MOV 53H,#00H DE5I: LJMP DE5 DEAL5: JNB 2CH.4,DE6I INC 54H MOV A,54H CJNE A,#20,DE6I CLR 2CH.4 MOV 54H,#00H LCALL OUT01 DE6I: LJMP DE6 DEAL6: JNB 2CH.5,DE7I INC 55H MOV A,55H CJNE A,#20,DE7I CLR 2CH.5 LCALL OUT01 MOV 55H,#00H DE7I: LJMP DE7 DEAL7: JNB 2CH.6,DE8I INC 56H MOV A,56H CJNE A,#20,DE8I CLR 2CH.6 LCALL OUT01 MOV 56H,#00H DE8I: LJMP DE8 DEAL8: JNB 2CH.7,FINISH INC 57H MOV A,57H CJNE A,#20,FINISH CLR 2CH.7 LCALL OUT01 MOV 57H,#00H FINISH: MOV A,2CH CJNE A,#00H,TUI SETB TR0;SETB TR0 POP ACC POP PSW RETI TUI: SETB TR0;开定时器 POP ACC POP PSW RETI OUT01: MOV A,2CH MOV P2,A CLR G0 LCALL DELAY CLR CLOCK LCALL DELAY SETB CLOCK NOP CLR CLOCK SETB G0 LCALL DELAY RET

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭