单时钟完成多点分别计时的实现和应用

姓名:屈彦维

学号:16020610026

引自:http://lw.3edu.net/qrs/lw_46638.html

嵌牛导读:本文通过介绍只有双时钟的单片机系统,在多个事件需要分别定时或延时的时候,解决一个时钟完成多个计时延时的有效方法,通过这种方法可以达到对多个被控事件统一自动控制目的。

嵌牛鼻子:单片机、定时器、机器周期、分频

嵌牛提问:如何使用单时钟完成多点分别计时

嵌牛正文:

一、引言

单片机作为嵌入式系统的微控制器,已经不是新鲜的事情,作为单片机的定时/计数器的使用可以说没有什么难度,但对于需要多个独立计时的事件,单片机的两个时钟显得有点不能满足要求,其实不然,合理的运用内存和标志位可以实现一个定时器充当多个计时时钟的效果,本文以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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容