单片机的定时与计数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

③步骤三: 是否开启定时器/计数器中断
我们可以根据实际需要,决定是否允许定时器/计数器的中 断请求产生和CPU是否允许接受定时器/计数器的中断请求。由 于在本例中使用的是溢出查询处理方式,未采用溢出中断处理 方式,因此对中断允许寄存器IE的相关标志位未做设置。
在下一章学习中,我们将学习到定时器/计数器溢出的中断处理方式。
④步骤四: 启动定时器/计数器工作
直接由软件置位启动定时 器/计数器工作。
想一想,做一做
(1)如何将计数初值由十进制数转化成十六进制 数,并正确赋值给TH0和TL0?
(2)我们如何做到让硬件定时时间变长?
5.3 对LED灯闪烁速度的控制
思考:在例5-1中,LED灯闪的太快了,如何放慢速度呢?下面我们进行试验。 【例5-2】LED灯0.5秒闪烁速度控制。
4、定时/计数的四种工作方式
工作方式0 工作方式1 工作方式2 工作方式3 由方式寄存器TMOD 中的M1M0 决定,参见表5-1所示
工作方式0 当GATE = 0 时,TR0直接控 制T0的启动和 关闭。TR0 = 1, 接通控制开关, T0从初值开始 计数直至溢出。 当GATE = 1 时,与门的输出 由 的输入 INT 0TR0位的 电平和 状态来确定。若 TR0 = 1,外部 信号电平通过引 脚控制T0是否 工作,当为高电 平时,允许计数, 否则停止计数。
表5-2 定时 /计数器工作方式设置表
M1 0 M0 0 工作方式 方式0 说明 13位定时/计数器
0
1 1
1
0 1
方式1
方式2 方式3
16位定时计数器
自动重装8位定时/计数器 T0分成两个8位定时/计数器,T1停止计数
最后需要注意:TMOD寄存器是不能位寻址的,只能用字节
指令设置定时器工作模式和工作方式,高4位定义T1, 低4位定义T0。复位时,TMOD所有位均置0。
目标:
பைடு நூலகம்
学习与定时器工作相关的两个寄存器寄存器TMOD和TCON。
5.3.1 工作方式寄存器TMOD (重要)
表5-1 TMOD (89H) 位地址(无) D7 GATE D6 C/ T 方式寄存器TMOD D5 M1 D4 M0 D3 GATE D2 C/ T D1 M1 D0 M0
定时器1
定时器0
求信号的影响。
设置为计数器工作模式。表5-1
C / T :功能选择位。 C / T=0时,设置为定时器工作模式;C / T=1时,
M1和M0:工作方式控制位。T0或T1的工作方式选择取决于M1M0设置, 其中工作方式0、1、2对T0和T1完全相同,而工作方式3仅为T0所具有, 可构成如下表所示的四种工作方式。
置任意溢出的计数值呢?
这里就需要预置计数次数:如果要计数100,预先在计数器中
放上65436,这样再来100次脉冲信号,就到了65536最大 计数量,意味着可以溢出处理了。65436就称计数的预置 值。
6、定时时间的预置 (重点) 只要计数装置计数间隔时间固定,定时时间是可以转化成计数量来处理的, 这里就需要知道每计数一次要花费的时间,这个与单片机晶振频率相关。
4、溢出
计数器是有容量限制的,当到了最大容量时就会清零。 如何捕捉这种情况呢?我们叫做溢出。一般来说,对溢出是做相关
处理工作的,比如:课间休息十分钟,……,时间到了(溢出),则上课铃响 了(相关处理),就意味着要上课了。
5、计数次数的预置(重点) 80C51单片机最大计数容量是65536,因此只要计满这个数值就会 产生溢出,但在实际工作中,经常会有少于65536这个数值的要求。如:生产 流水线,要求每计数8个,就要进行溢出处理。类似这种情况很多,如何设
为避免这种错误,我们应该在溢出发生后,马上将定时 计数预置初值再次送到定时计数器中,可以保证定时器计 数器准确工作。
想一想,做一做
(1)生产流水线对药片进行计量,每到60粒即为一 瓶,要进行封装操作,计数器应预置多大的计数预 值?
(2)假设单片机的晶振频率是12MHZ,需要定时 10ms,定时器应预置定时初值为多少?
5.3.2 控制寄存器TCON
表5-3控制寄存TCON
TCON
位名称 位地址
D7
TF1 8FH
D6
TR1 8EH
D5
TF0 8DH
D4
TR0 8CH
D3
D2
D1
D0
TF1:T1溢出标志位。当T1计数满产生溢出时,由硬件自动置 TF1=1。在中断允许时,向CPU发出T1的中断请求,进入中断服 务程序后,由硬件自动清0。在中断屏蔽时,TF1可作溢出查询测 试用,此时必须由软件清0。
称之为T0和T1,最大的计数量为65536(2的16次方)。
3、定时
单片机内部有定时与计数装置,如图5-1所示,我们称为定时器与计数器。
定时器则是由单片机内部振荡信 号经过12分频后产生一个时间间 隔稳定的计数信号。
计数器记录的是单片机外部 发生的事件,由单片机的外 部电路提供计数信号 图 5-1 定时器/计数器的定时或计数来源 假设单片机内部振荡频率是12MHZ,一个内部计数信号的时间间隔将是1μS。
产品计数
其次,我们还要知道计数溢出是 如何得到处理的,如【例5-4】所 示。
溢出处理
5.4.1 流水线产品计数 【例5-3】按键次数通过LED灯显示(二进制数)
1、任务分析:
该指令将定时/计数器1设定 为计数模式的工作方式1, 定时/计数器0不工作。
2、工作过程及电路原理图:
图 5-3 外部按键计数电路原理图
由上表可知,TMOD的低4位为T0的方式字段,高4 位为T1的方式字段,它 们的含义完全相同。各标志介绍如下: GATE:门控位。当GATE=0时,控制寄存器TCON中的TR0或TR1置1即可 启动定时器,称之为软启动;当GATE=1时,控制寄存器TCON中的TR0或 TR1须先置1,由 INT0 (P3.2)或 INT1 (P3.3)引脚为高电平时启动定 时器,称之为硬启动。作用:用于控制定时/计数器是否受外部中断请
初始化
溢出否? N
Y
循环次数10 Y 灯亮
N
重置 时间初值
重置 循环初值10
初始化
溢出否?
Y
循环次数10
重置 时间初值
N
灯亮
重置 循环初值10
程序分析: 在上例中,LED灯闪得太快了,如何放慢它的速度呢?下面我们来进行实验。
放慢速度的方法:
在定时溢出时,并不马上改变P1口状态( LED灯 亮灭状态),而是利用指令“DJNZ R7,JP1” 做循 环次数为10的循环判断,没到循环次数,则继续定 时,等待溢出;到了循环10次,将LED灯亮灭状态改 变,再次设置循环次数,继续定时,等待溢出。
定时器/计数器的应用
5.1定时器与计数器的基本概念
1、计数
计数是指对事物数量的统计,通常以“1”为单位进行累加。生活
中常见的有家用水电表、汽车里程表等;同时,计数也应用于工业生产中, 如某生产流水线对产品进行计数打包,每计到8个,就产生电信号,驱动机 械装置进行包装。
2、计数器的容量 家用水电表走到一定的数量就到顶,再计数就要从零开始。任何计数装 置都是有一定的容量限制的。80C51单片机中有两个16位计数器,分别
定时器T0 (8AH) TL0 7 0
工 作 方 式
TMOD (89H)
图 5-2 8051定时器/计数器逻辑结构图
1.基本结构
定时器0,定时器1是16位加法计数器
都可以设置为定时器或计数器用。它们分别由两个8位专用寄存器
组成。定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。
TL0、TL1、TH0、TH1的访问地址依次为8AH8DH,每个寄存器均可单独 访问,进行定时/计数初值的设定。
TMOD、TCON是与定时器工作密切相关的两个控制寄存器。
TMOD寄存器用 于决定定时器/计 数器是计数用, 还是定时用;
TCON寄存器决定定时 器/计数器具什么时侯 启动,以及什么时侯停 止工作。
2.工作原理
定时器开始工作后,它是不会占用CPU的操作时间。也就
是说,定时器和CPU之间是互不干扰,并行工作的;
5.2.1 定时器/计数器的基本结构及工作原理
_____ _____ INT1 INT0 (P3.3) (P3.2) T1 (P3.5) T0 (P3.4)
定时器T1 (8DH) TH1 7 溢 出 CPU 启 动 内部总线 溢出 中断 TCON (88H) 工作方式 启 动 0 7 (8BH) TL1 0 7 (8CH) TH0 0
当程序运行时,只要按下按钮,按钮所连的红灯就会亮 一下,表示计数器进行了一次计数,同时计数值会通过上面 的八个黄灯以二进制形式输出。
3、计数工作必须满足以下要求:(重点) (1)外部计数脉冲从引脚T0(P3.4)和T1(P3.5)输入; (2)外部脉冲最高频率不能超过振荡频率的1/24; (3)保证输入信号高/低电平保持在一个机器周期以上时间,才能被系统 检测到; (4)只有输入引脚电平发生1到0的负跳变后,新的计数值才装入计数器 中。
5.2 定时器实现LED灯闪烁
【例5-1】用定时器的查询方式实现LED灯的闪烁(间隔时间为60ms)
程序分析:
JBC指令格式:JBC bit,标号
这是一条判断转移并清0指令,JBC后面的第1个参数是位变量,第2个参数是一个标 号。如果bit位的值等于1,则转到标号所指的位置去执行指令,同时该bit位清0。在这 里,是判断定时溢出标志TF0是否溢出,并做出相应事件处理。
只有在定时器溢出时,才可能中断CPU当前的操作,要求 CPU进行相应的溢出处理工作 ,如【例4-1】中,当溢出发生时, 系统将跳转到“13 NEXT: ”处,做定时器重新赋初值、P1口数据取反等 工作。
比较一下定时器延时程序和软件延时程序区别? 软件延时程序中, CPU在延时上花费了 大量的精力,只顾着 计算延时、让彩灯闪 烁了,就限制单片机 其它功能的发挥。 定时器定时程序中, CPU只需要设好定时初 值,延时计算给定时器 去做了,CPU可以多做 一些其它工作了。
XRL指令格式:XRL direct,#data
这是一条逻辑异或指令,XRL后面的第1个参数是直接地址,第2个参数是一个立即 数。将直接地址中的数据和立即数按位异或,结果再存放入直接地址中。在程序中, 它起的作用是将P1口数据取反后,去点亮LED灯。
目标:开始学习定时器/计数器的知识,了解什么是硬件延时了。
假设晶振频率是12MHZ,一个机器周期(计时脉冲)是1μS,最大 定时时间为65.536ms(计满65536个脉冲)。如果要定时50ms,预先 在计数器中放入定时初值65536-50000=15536即可。
另外,需要说明
单片机的定时计数装置一般是需要不断重复定时计数操作,即这次完 成50ms的定时任务,紧接着可能进行第二次50ms的定时操作。而定时计 数器一旦产生溢出,其值就会清零,定时时间就会不准确。
TR1:T1运行控制位。当GATE=0时,TR1置1,即可启动T1;当 GATE=1,TR1置1,不能启动T1,必须等 INT 1 为高电平才能启动T1。
TF0和TR0将作用于T0,其功能及操作情况同TF1和TR1。
5.4 流水线产品计数和溢出处理
前面介绍了定时/计数器的定时方式,下面通过两个案例看看定时/ 计数器的计数方式是如何进行的。 首先,让我们来看看计数信号在 计数器内部是如何表示的,如 【例5-3】所示;
5 单片机定时与计数
电子信息工程系 董峰
任务与知识点(参考教材§5.3,P135)

任务
定时器实现LED闪烁 改变LED灯闪烁速度 流水线产品计数
交通信号灯的定时控制

知识点
定时器/计数器的基本结构及工作原理 定时器/计数器的初始化 定时器/计数器的相关计数器及各种工作方式
5.2.2
定时器/计数器的初始化(重点)
在启动定时器/计数器工作之前,CPU必须将一些命令(称为控制字)写 入定时/计数器的相关寄存器中,这个过程称为定时/计数器的初始化。
初始化一般有四个步骤 ① 步骤一: 确定工作方式 通过对工作方式寄存器TMOD进行参数 设置,表明定时器/计数器0工作在定时 模式的工作方式1中。 在工作方式1时,其最大计数 值等于65536 ② 步骤二 :预置定时或计数的初值 设12M晶振,则机器周 期T=1s。因要求每 60ms溢出一次,计数值 =60ms/1s =60000。 65536-60000=5536=15A0H, 将15H、0A0H分别预置给TH0、 TL0,即完成初值设置。
相关文档
最新文档