时钟计时器的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
鉴于此,可把定时器的定时时间定为100毫秒,这样计
数溢出10次即得到时钟计时的最小单位秒。而10次计 数可用软件方法实现。
假定使用定时器/计数器T0,以工作方式1进行100毫秒的定时,如单片机为 6MHZ晶振,为得到100毫秒定时,假定计数初值为X,则:
(216-X) ×2=100000 计算得x=15536, 十六进制表示为3C_B0H。
MAIN
定义堆栈区 显示缓冲区单元清0 定时器0工作方式1ቤተ መጻሕፍቲ ባይዱ
设置定时器计数 初值
定时开始
开中断 设置100ms计数初值
调用显示子程序
(2)定时中断服务程序
中断服务程序的主要功能是进行计时操作。程 序开始判断计数溢出是否满了10次,不满10次表 明还没达到最小计时单位秒,中断返回;如满10次, 程序继续向下执行,进行计时操作。
1、基本工作原理
利用单片机内部的定时器/计数器产生定时中断,通过对定时中断的计 数以实现对时间的计量。
所谓时钟计时,就是以秒、分、时为单位进行的计时。它是定时与中断 应用的典型代表。
2、实现时钟计时的基本方法
以MCS-51单片机来实现时钟计时有如下几个要 求:
(1)计数初值计算
时钟计时的最小单位是秒,但使用单片机的定时器/ 计数器进行定时,即使按方式1工作,其最大定时时间也 只能达131毫秒。
;确立堆栈区 ;显示缓冲区首地址 ;显示位数 ;显示缓冲单元清0
ML0:
MOV TMOD ,# 01H MOV TL0,# 0DCH MOV TH0,# 0CH SETB EA SETB ET0 SETB TR0 MOV 30H,#10H LCALL DISPLAY SJMP ML0
;设置定时器0为方式1 ;装计数器初值
;总中断开放 ;允许T0中断 ;开启T0定时器 ;计数溢出次数 ;调用显示子程序
(2)定时中断服务程序
PIT0:PUSH PSW
;中断服务程序,现场保护
PUSH ACC
;
SETB PSW.3
;RS1 RS0=01,选1组通用 寄存器
MOV TL0,#0B8H ;计数器重新加载
MOV TH0,#17H
(2)采用中断方式进行溢出次数的累计。计满10次即得到秒计时。 (3)从秒到分和从分到时的计时是通过累加与数值比较实现的。 (4)时钟显示及显示缓冲区
3、程序流程及流程清单
(1)主程序(MAIN)
主程序的主要功能是进行 定时器/计数器的初始化编 程,然后通过反复调用显示子 程序的方法,等待100ms定 时中断的到来。其流程如图 所示
ORG LJMP ORG LJMP
0000H START 000BH INTTO
START:
ORG
MOV MOV
0030H
SP,#60H R0,#79H
ML1:
MOV MOV INC DJNZ
R7,#06H @R0,#00H R0 R7,ML1
;程序执行开始地址 ;跳到标号START执行 ;定时器0中断程序入口 ;跳到标号INTTO执行
(4)编程注意事项
编程中应特别注意资源的分配: 要为每一个参数、中间结果、各种指针、计数器分配工作单元。
本设计中将会用到的资源为: 显示缓冲单元(6个);显示指针 时钟计数单元:100ms计数器(1),秒计数器(2),分计数器(2), 时计数器(2) 。 刷新指针
4、部分源程序例举
(1)主程序(MAIN)
……
……
RET0: POP ACC
;现场恢复
POP PSW

RETI
;中断返回
定时中断开始
保护现场 重装定时常数
调整 100ms 计数值
N
到 1 秒?
Y
秒 计 数 值 + 1;
100ms 计数单元恢复初值
N
到 60 秒?
Y
分计数值+1 秒计数单元清零
到 60 分?
N
Y
时计数值+1 分计数单元清零
N
到 24 小时?
Y
时计数单元清零
刷新显示缓冲区 现场恢复 定时中断返回
(3)显示子程序(略)
相关文档
最新文档