定时计数器的初始化编程及应用

上传人:mg****85 文档编号:34208012 上传时间:2018-02-21 格式:DOC 页数:13 大小:1.07MB
返回 下载 相关 举报
定时计数器的初始化编程及应用_第1页
第1页 / 共13页
定时计数器的初始化编程及应用_第2页
第2页 / 共13页
定时计数器的初始化编程及应用_第3页
第3页 / 共13页
定时计数器的初始化编程及应用_第4页
第4页 / 共13页
定时计数器的初始化编程及应用_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《定时计数器的初始化编程及应用》由会员分享,可在线阅读,更多相关《定时计数器的初始化编程及应用(13页珍藏版)》请在金锄头文库上搜索。

1、定时/计数器的初始化编程及应用一 定时/计数器的编程MCS-51 单片机定时/计数器初始化过程如下:1根据要求选择方式,确定方式控制字,写入 方式控制寄存器 TMOD。 (工作方式: 方式 0 方式 1 方式 2 方式 3)2根据要求计算定时/计数器的计数值,再由计数值求得初值,写入初值寄存器。3根据需要 开放定时/计数器中断(后面须编写中断服务程序) 。4设置 定时/计数器控制寄存器 TCON 的值,启动定时/计数器开始工作。5等待定时/计数时间到,到则执行中断服务程序;如用查询处理则编写查询程序判断溢出标志,溢出标志等于 1,则进行相应处理。二定时/计数器的应用通常利用定时/计数器来产生周

2、期性的波形。利用定时/计数器产生周期性波形的基本思想是:利用定时/计数器产生周期性的定时,定时时间到则对输出端进行相应的处理。如产生周期性的方波只须定时时间到对输出端取反一次即可。 ( 举例 1)如果定时时间大于 65536s,这时用一个定时/ 计数器直接处理不能实现,这时可用两个定时/计数器共同处理或一个定时/ 计数器配合软件计数方式处理。(1 )用寄存器 R2 作计数器软件计数,中断处理方式。 ( 举例 2.1)(2 )用定时/计数器 T1 计数实现,定时/计数器 T1 工作于计数方式时,计数脉冲通过T1(P3.5 )输入,设定时/计数器 T0 定时时间到对 T1(P3.5 )取反一次,则

3、 T1(P3.5)每20ms 产生一个计数脉冲,那么定时 500ms 只须计数 25 次,设定时/计数器 T1 工作于方式2,初值 X=256-25=231= 11100111B=E7H,TH1=TL1=E7H。因为定时/计数器 T0 工作于方式1,定时,则这时方式控制字为 01100001B(61H) 。定时/计数器 T0 和 T1 都采用中断方式工作。 ( 举例 2.2)定时:设置为定时工作方式时,定时器计数的脉冲是由 8051 片内振荡器输出经 12 分频后产生的。每个机器周期使定时器(T0 或 T1)的数值加 1 直至计计数满产生溢出。如:当 8051 采用 12MHz 晶体时,每个机

4、器周期为 1s,计数额率为 1MHz。 计数:设置为计数工作方式时,通过引脚 T0(P34)和 T1(P35)对外部脉冲信号计数。当输入脉冲信号产生由 1 至 0 的下降沿时,定时器的值加 1,在每个机器周期的 S5P2 期间采样 T0 和 T1 的输入电平。若前一个机器周期采样值为 1,下一个机器周期采样值为 0,则计数器加 1。此后的机器周期 S3P1 期间,新的数值装入计数器。检测一个 1 至 0 的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。MCS-51 单片机的特殊功能寄存器 从图中我们可以看出,在 51 单片机内部有一个 CPU 用来运算、控制,有四个并行 I/O

5、口,分别是 P0、P1、P2、P3,有 ROM,用来存放程序,有 RAM,用来存放中间结果,此外还有定时/计数器,串行 I/O 口,中断系统,以及一个内部的时钟电路。在一个 51 单片机的内部包含了这么多的东西。对图进行进一步的分析,我们已知,对并行 I/O 口的读写只要将数据送入到相应 I/O口的锁存器就可以了,那么对于定时/计数器,串行 I/O 口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。事实上,我们已接触过 P1 这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的 SFR。 1、ACC-是累加器,通常用 A 表示。

6、这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在 ACC 中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志 Z,若 A0 则 Z1;若 A0 则 z0。该标志常用作程序分枝转移的判断条件。 2、B-一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。3、PSW-程序状态字。这是一个很重要的东西,里面放了 CPU 工作时的很多状态,借此,我们可以了解 CPU的当前状态,并作出相应的处理。它的各位功能请看下表:CY:

7、进位标志。8051 中的运算器是一种 8 位的运算器,我们知道,8 位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过 255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY1;无进、借位,CY0 例:78H+97H(01111000+10010111)AC:辅助进、借位(高半字节与低半字节间的进、借位)。 例:57H+3AH(01010111+00111010) 下面我们逐一介绍各位的用途F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0:工作寄存器组选择位。这个我们已知了。0V:溢出标志位。运算结

8、果按补码运算理解。有溢出,OV=1;无溢出,OV0。什么是溢出我们后面的章节会讲到。P:奇偶校验位:它用来表示 ALU 运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则 P=1,否则为 0。 运算结果有奇数个 1,P1;运算结果有偶数个 1,P0。例:某运算结果是 78H(01111000),显然 1 的个数为偶数,所以 P=0。4、P0、P1、P2、P3-这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。5、IE-中断充许寄存器按位寻址,地址:A8H中断禁止(即不产生中断)EA (IE.7):EA=0 时,所有中断禁止(即不产生中断)EA=1 时,各中断的

9、产生由个别的允许位决定- (IE.6 ):保留ET2(IE.5):定时 2 溢出中断充许(8052 用)ES (IE.4):串行口中断充许(ES=1 充许,ES=0 禁止)ET1(IE.3):定时 1 中断充许EX1(IE.2):外中断 INT1 中断充许ET0(IE.1):定时器 0 中断充许EX0(IE.0):外部中断 INT0 的中断允许7、IP-中断优先级控制寄存器按位寻址,地址位 B8HIP D7 D6 D5 D4 D3 D2 D1 D0 (B8H) PT2 PS PT1 PX1 PT0 PX0 PT2:定时器/计数器 T2 的中断优先级控制位,只用于 52 子系列。PS:串行口的中

10、断优先级控制位。PT1:定时器/计数器 T1 的中断优先级控制位。 PX1:外部中断 INT1 的中断优先级控制位。 PT0:定时器/计数器 T0 的中断优先级控制位。PX0:外部中断 INT0 的中断优先级控制位。 如果某位被置“1”,则对应的中断源被设为高优先级;如果某位被清“0”,则对应的中断源被设为低优先级。对于同级中断源,系统有默认的优先权顺序, 【例 5-10】利用定时/计数器中断抗干扰防死机。利用定时/计数器防止死机的思想是:先估算出系统主程序执行一次循环所需要的时间 t1,然后设置定时/计数器的定时时间为 t2,其中 t2 略大于 t1。在主程序的循环部分包括对定时/计数器初始

11、化,这样,如果系统正常运行,则由于定时时间比 t2 比 t1 大,所以定时还未到时,主程序已完成一次循环,定时器被重新初始化,定时时间始终不会到,定时/计数器不会溢出中断;只有当系统受干扰死机,主程序不能被重新执行,定时/计数器不会被重新初始化,则经过时间 t2 后,定时时间到,溢出中断,中断后由硬件实现转到中断服务程序。如果用户在中断服务程序中安排回到主程序中的命令,那么系统可以重新运行主程序,这就达到了防止死机的目的。 中断服务程序函数名()interrupt n using m函数内部实现 . 6、指针寄存器(1)程序计数器 PC指明即将执行的下一条指令的地址,16 位,寻址 64KB

12、范围,复位时 PC = 0000H(2)堆栈指针 SP指明栈顶元素的地址,8 位,可软件设置初值,复位时 SP = 07H(3)数据指针 DPTRR0、R1、DPTR;指明访问的数据存储器的单元地址,16 位,寻址范围 64KB。 DPTR = DPH + DPL。可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。 分成 DPL(低 8 位)和 DPH(高 8 位)两个寄存器。用来存放 16 位地址值,以便用间接寻址或变址寻址的方式对片外数据 RAM 或程序存储器作64K 字节范围内的数据操作。7、定时/计数器(1) 定时器方式寄存器:TMO

13、D(2) 定时器控制寄存器:TCON(3) 计数寄存器:TH0、TL0;TH1、TL1。可用于设定计数初值。8、8052/8032 增设专用寄存器(1) 定时器 2 控制寄存器 T2CON;控制、设置工作方式。(2) 计数寄存器:TH2、TL2(3) 定时器 2 捕获/重装载寄存器:RCAP2H、RCAP2L存放自动重装载到 TH2、TL2 的数据。9、定时/计数器的方式寄存器 TMOD其中:M1、M0 为工作方式选择位 ,用于对 T0 的四种工作方式,T1 的三种工作方式进行选择,选择情况如下 C/T:定时或计数方式选择位,当 C/T=1 时工作于计数方式;当 C/T=0 时工作于定时方式。

14、 GATE:门控位,用于控制定时/ 计数器的启动是否受外部中断请求信号的影响。 定时/ 计数器的工作方式一方式 0方式 1 是 13 位的定时/计数方式,因而最大计数值(满值)为 2 的 13 次幂,等于 8192。如计数值为 N,则置入的初值 X 为:X=8192-N如定时/计数器 T0 的计数值为 1000,则初值为 7192,转换成二进制数为1110000011000B,则 TH0=11100000B,TL0=00011000B。二方式 1方式 1 的结构与方式 0 结构相同,只是把 13 位变成 16 位, 16 位的加法计数器被全部用上。由于是 16 位的定时/计数方式,因而最大计数

15、值(满值)为 2 的 16 次幂,等于 65536。如计数值为 N,则置入的初值 X 为:X=65536-N如定时/计数器 T0 的计数值为 1000,则初值为 65536-1000=64536,转换成二进制数为1111110000011000B,则 TH0=11111100B,TL0=00011000B。三方式 2方式 2 下,16 位的计数器只用了 8 位来计数,用的是 TL0(或 TL1)的 8 位来进行计数,而 TH0(或 TH1)用于保存初值。当 TL0(或 TL1)计满时则溢出,一方面使TF0(或 TF1)置位,另一方面溢出信号又会触发图 5.5 上的三态门,使三态门导通,TH0(

16、或 TH1)的值就自动装入 TL0(或 TL1) 。 由于是 8 位的定时/计数方式,因而最大计数值(满值)为 2 的 8 次幂,等于 256。如计数值为 N,则置入的初值 X 为:X=256-N如定时/计数器 T0 的计数值为 100,则初值为 256-100=156,转换成二进制数为10011100B,则 TH0= TL0=10011100B。注意:由于方式 2 计满后,溢出信号会触发三态门自动地把 TH0(或 TH1)的值装入TL0(或 TL1)中,因而如果要重新实现 N 个单位的计数,不用重新置入初值。 四方式 3方式 3 只有定时/计数器 T0 才有,当 M1M0 两位为 11 时,定时/计数器 T0 工作于方式 3,方式 3 的结构如下图.方式 3 下,定时/计数器 T0 被分为两个部分 TL0 和 TH0,其中,TL0 可作为定时/计数器使用,占用 T0 的全部控

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号