单片机原理与接口技术(第8章)_第1页
单片机原理与接口技术(第8章)_第2页
单片机原理与接口技术(第8章)_第3页
单片机原理与接口技术(第8章)_第4页
单片机原理与接口技术(第8章)_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第8章 定时器/计数器及实验 第第8章章 定时器定时器/计计数器及实验数器及实验第8章 定时器/计数器及实验 8.1 定时器/计数器的硬件结构及工作原理 图8-1为定时器/计数器的硬件结构框图。图中可见,T0和T1的核心均为一个加1计数器。加1计数器的脉冲来源有两个:一个是外部脉冲源,另一个是单片机系统的时钟源。计数器对输入脉冲进行加1计数,每输入一个脉冲,计数值加1。第8章 定时器/计数器及实验 图8-1 定时器/计数器硬件结构框图 第8章 定时器/计数器及实验 计数到计数值为全1 当计数到计数值为全1时,再有一个脉冲信号输入将使得计数器溢出。这时,加1计数器从最高位溢出一个脉冲使TCON(

2、定时器控制寄存器)的溢出标志位TF0或TF1置1,同时将计数值清零。如果定时器/计数器工作于定时状态,则表示定时时间到;第8章 定时器/计数器及实验 工作于计数状态 如果工作于计数状态,则表示计数值回零。因此,加1计数器的基本功能是对输入脉冲进行计数,至于其工作于定时状态还是计数状态,则取决于外接脉冲源。当脉冲源为单片机系统时钟源时,计数脉冲为一等间隔脉冲序列,脉冲数乘以间隔时间就是定时时间,此时加1计数器工作于定时状态。当脉冲源为间隔不等的外部脉冲信号时,加1计数器就相当于外部事件计数器,工作于计数状态。第8章 定时器/计数器及实验 用作定时器 用作定时器时,在每个机器周期加1计数器都加1,

3、因此也可以看作对机器周期的累计。因为1个机器周期包括12个振荡周期,因此加1计数器的计数频率是振荡频率的1/12。如果单片机采用12MHz的晶体振荡器,则加1计数器的计数频率为1MHz,即每微秒加1计数器加1。这样就可以按定时时间的要求计算出加1计数器的预置计数值。第8章 定时器/计数器及实验 用作计数器 用作计数器时,加1计数器在其对应的外部输入端T0(P3.4)或T1(P3.5)检测到一个负跳变时加1。其最快的计数频率是振荡频率的1/24。 第8章 定时器/计数器及实验 2个8位特殊功能寄存器 定时器/计数器T0由2个8位特殊功能寄存器TH0和TL0构成,TH0用于存放高8位的二进制计数值

4、,TL0用于存放低8位的二进制计数值。定时器/计数器T1由2个8位特殊功能寄存器TH1和TL1构成,TH1用于存放高8位的二进制计数值,TL1用于存放低8位的二进制计数值。工作方式寄存器TMOD用于设置定时器/计数器的工作方式。控制寄存器TCON用于启动和停止定时器/计数器的计数,并控制定时器/计数器的工作状态。 第8章 定时器/计数器及实验 8.2 定时器的工作方式寄存器和控制寄存器 8.2.1 定时器/计数器工作方式寄存器TMOD 如图8.2所示,TMOD的高4位控制T1的工作方式,低4位控制T0的工作方式。第8章 定时器/计数器及实验 工作方式选择位M1、M0:工作方式选择位。定时器/计

5、数器有4种工作方式,由M1和M0来进行选择,如表8-1所示。表8-1 定时器/计数器工作方式选择 M1 M0工作方式功 能 说 明0 0方式013位定时器/计数器 0 1方式116位定时器/计数器 1 0方式2可自动重新载入计数初值的8位定时器/计数器 1 1方式3T0用作2个8位定时器/计数器,关闭T1 第8章 定时器/计数器及实验 定时器/计数器选择位 C/ T:定时器/计数器选择位。C/ T1工作为计数器功能,C/ T0工作为定时器功能。 GATE:选通控制位。GATE0,由软件控制TR0或TR1启动定时器;GATE1,由外部中断引脚INT0(P3.2)和 INT1(P3.3)输入电平分

6、别控制T0和T1的运行。 第8章 定时器/计数器及实验 8.2.2 定时器控制寄存器TCON 图8.3 定时器/计数器控制字段位地址8FH8EH8DH8CH8BH 8AH89H88HTCONTF1TR1TF0TR0IE1IT1IE0IT0第8章 定时器/计数器及实验 定时器T1溢出中断标志 TF1:定时器T1溢出中断标志。当定时器T1溢出时由内部硬件置位,申请中断。当转向中断服务程序时,由内部硬件将TF1标志清零。第8章 定时器/计数器及实验 定时器T1运行控制位 TR1:定时器T1运行控制位,由软件置位/清零来控制定时器T1的计数启动/停止。当选通控制位GATE为0而TR1为1时,T1启动计

7、数;当TR1为0时,T1停止计数。当选通控制位为1时,仅当TR1为1且P3.3引脚输入为高电平时才启动T1计数,TR1为0或P3.3引脚输入为低电平都使T1停止计数。 第8章 定时器/计数器及实验 溢出中断标志和运行控制位 TF0:定时器T0溢出中断标志,其含义与TF1类似。 TR0:定时器T0运行控制位,其含义与TR1类似。 TCON的低4位与外部中断有关,其意义在前一章已介绍过。第8章 定时器/计数器及实验 8.3 定时器/计数器的工作方式 2个16位定时器/计数器具有定时和计数两种功能,每种功能都包括了四种工作方式。用户通过指令把方式字写入定时器/计数器工作方式寄存器TMOD来选择T0或

8、T1的功能和工作方式;第8章 定时器/计数器及实验 启动计数或停止计数 通过写入计数初值来控制计数长度(定时时间);通过对定时器/计数器控制寄存器TCON的相应位进行置位或清零来实现定时器的启动计数或停止计数。 第8章 定时器/计数器及实验 8.3.1 工作方式0 当M1M0为00时,定时器/计数器被选为工作方式0,其等效框图如图8-4所示。第8章 定时器/计数器及实验 图8-4 定时器T0工作方式0结构图 第8章 定时器/计数器及实验 一个13位的定时器/计数器 T0(或T1)在工作在方式0时,是一个13位的定时器/计数器。在这种方式下,16位寄存器(TH0和TL0)只用13位。其中TL0的

9、高3位未使用,其余位占了13位的低5位,TH0占了高8位。计数时,TL0的低5位溢出向TH0进位,TH0溢出时向溢出中断标志TF0进位(由硬件置位),并申请中断。 第8章 定时器/计数器及实验 对机器周期进行计数 当C/ T0时,图中的开关连接晶体振荡器的12分频输出,T0对机器周期进行计数,这就是定时工作方式。 当C/ T1时,图中的开关连接引脚P3.4(T0),外部计数脉冲由引脚T0输入。当外接信号发生从1到0的跳变时,计数器进行加1计数,T0成为外部事件计数器,这就是计数工作方式。 第8章 定时器/计数器及实验 GATE0时 当GATE0时,关闭逻辑“或”门,使P3.2引脚输入信号无效。

10、这时,逻辑“与”门被打开,由TR0控制T0的启动计数和停止计数。若TR01,接通控制开关,启动T0开始加1计数,直至溢出。溢出时,计数寄存器值为0,TF01,并申请中断,T0从0开始计数。因此,若T0工作于定时状态,在溢出后应给计数器(TH0和TL0)重新赋计数初值。若TR00,T0停止计数。 第8章 定时器/计数器及实验 GATE1 当GATE1,且TR01时,逻辑“或”门和逻辑“与”门都被打开,外接信号通过P3.2引脚直接启动或停止定时器计数。输入高电平时,启动计数;输入低电平时,停止计数。通常用这种方式来测量外接信号的脉冲宽度。 第8章 定时器/计数器及实验 定时时间的计算公式 为计数工

11、作方式时,计数值的范围为18192(213)。 为定时工作方式时,定时时间的计算公式为: T(213计数初值)晶体振荡器周期12 (式 8-1) 第8章 定时器/计数器及实验 8.3.2 工作方式1 当M1M0为01时,定时器/计数器被选为工作方式1,其等效框图如图8-5所示。第8章 定时器/计数器及实验 图8-5 定时器T0工作方式1结构图第8章 定时器/计数器及实验 工作在方式1时 T0(或T1)在工作在方式1时,是一个16位的定时器/计数器。由图8-5可见,其逻辑电路和工作情况与工作方式0完全相同,所不同的只是组成计数器的位数。第8章 定时器/计数器及实验 计数值范围 为计数工作方式时,

12、计数值的范围为165536 (216)。 为定时工作方式时,定时时间的计算公式为: T(216计数初值)晶体振荡器周期12 (式 8-2) 第8章 定时器/计数器及实验 8.3.3 工作方式2 当M1M0为10时,定时器/计数器被选为工作方式2,其等效框图如图8-6所示。控制振荡器12TL0(8位)TF0中断T0 端C/ T = 0C/ T = 1+INT0 端GATETR0TH0(8位)重新装入第8章 定时器/计数器及实验 图8-6 定时器T0工作方式2结构图第8章 定时器/计数器及实验 工作方式0和工作方式1的最大特点 工作方式0和工作方式1的最大特点是计数溢出后,计数寄存器的值全为0。因

13、此循环定时或计数应用时就存在重新设置计数初值的问题,这不但影响定时精度,而且给程序编写带来不便。第8章 定时器/计数器及实验 自动重新加载功能 工作方式2就是针对此问题而设置的,它具有自动重新加载功能,计数溢出后计数初值可由硬件自动重新装载。在这种工作方式下,16位计数器被分为两部分,即以TL0作计数器,以TH0作预置数寄存器,初始化时把计数初值分别装入TL0和TH0中。当计数溢出后,由预置数寄存器以硬件方式自动加载。第8章 定时器/计数器及实验 置位TF0 初始化时,8位计数初值被同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时将保存在TH0中的计数初值自动装载到TL0中,之后

14、TL0重新计数,循环不止。这样的话,不但省去了用户程序中的重新装载计数初值的指令,还有利于提高定时精度。但这种方式下计数值有限,最大只能到256。这种工作方式较适用于连续定时或计数的应用场合。第8章 定时器/计数器及实验 定时时间的计算公式 为计数工作方式时,计数值的范围为1256(28)。 为定时工作方式时,定时时间的计算公式为: T(28计数初值)晶体振荡器周期12 (式 8-3) 第8章 定时器/计数器及实验 8.3.4 工作方式3 当M1M0为11时,定时器/计数器被选为工作方式3,其等效框图如图8-7所示。第8章 定时器/计数器及实验 图8-7 定时器T0工作方式3结构图第8章 定时

15、器/计数器及实验 前三种工作方式下,T0和T1的使用是完全相同的。但是在工作方式3下,T0和T1的工作是不同的。 在工作方式3下,因T1的控制位和引脚信号已被TH0借用,所以T1是不能使用的。前三种工作方式下第8章 定时器/计数器及实验 在工作方式3下 在工作方式3下,T0被拆成2个独立的8位计数器TL0和TH0。TL0既可以作计数器使用,又可以作定时器使用,T0的各控制位和引脚信号全归它使用。其功能和操作与工作方式0和工作方式1完全相同,电路结构也极其相似,如图8-7所示。但是TH0只能作为定时器使用,控制位和引脚信号均借用T1的。第8章 定时器/计数器及实验 8.4 定时器/计数器的初始化

16、 由于定时/计数器是可编程的,因此在定时或计数之前要用程序初始化,初始化一般有以下几个步骤:(1)确定工作方式对工作方式寄存器TMOD赋值。第8章 定时器/计数器及实验 预置定时或计数初值(2)预置定时或计数初值,直接将计数初值写入TL0、TH0或TL1、TH1中。(3)根据需要对中断允许寄存器IE赋值,以开放或禁止定时/计数器中断。(4)启动定时/计数器,使TCON中的TR1或TR0置“1”,计数器即按规定的工作方式和计数初值进行计数或定时。 第8章 定时器/计数器及实验 8.5 定时器实验 使用定时器T1以工作方式1进行50ms精确定时。P1口的P1.0 P1.7分别接八个发光二极管L0

17、L7。编写程序模拟一个时序控制装置:开机后第一秒钟L0、L2亮,第二秒钟L1、L3亮,第三秒钟L4、L6亮,第四秒钟L5、L7亮,第五秒钟L0、L2、L4、L6亮,第六秒钟L1、L3、L5、L7亮,第七秒钟全亮,第八秒钟全灭,之后又从头开始,一直循环下去。 第8章 定时器/计数器及实验 8.5.1 硬件电路图8-8 定时器实验硬件电路 第8章 定时器/计数器及实验 8.5.2 软件 在用户文件夹中建立一个timer.uv2工程项目,再输入以下源程序timer.c ,最后将源程序添加到工程项目中。如图8-9所示。图8-9 KEIL C51工程窗口 第8章 定时器/计数器及实验 以下为time.c

18、 源文件:/-定时器实验-/-头文件引用-#include#include/-宏声明-#define uchar unsigned charuchar idata LED8= 0 xfa,0 xf5,0 xaf,0 x5f,0 xaa,0 x55,0 x00,0 xff;/显示常数表uchar times=20;/延时一秒的常数uchar status=0;第8章 定时器/计数器及实验 /-定时器-void int1( ) interrupt 3TR1=0;/关中断TL1=0 x00;/延时50ms常数TH1=0 x4b;TR1=1;/开中断times=(times-1);if(times=0

19、)times=20;/延时一秒的常数P1=LEDstatus;/送P1口显示status=(status+1)&0 x07);第8章 定时器/计数器及实验 /-主程序-void main() TMOD=0 x10;/置T1为方式1TL1=0 x00;/延时50ms的时间常数TH1=0 x4b;TR1=1;ET1=1;EA=1;/开中断while(1);第8章 定时器/计数器及实验 8.5.3 实验运行结果 由图8-10至图8-13可见,程序已实现了精确定时控制的要求。图8-10 程序运行结果(0.9525秒时)第8章 定时器/计数器及实验 图8-11 程序运行结果(1.0秒时)第8章 定时器/

20、计数器及实验 图8-12 程序运行结果(1.95秒时)第8章 定时器/计数器及实验 图8-13 程序运行结果(2.0秒时)第8章 定时器/计数器及实验 8.6 计数器实验 使用T1作为定时器,T0作为计数器,均按方式1工作,测试P3.4(T0)引脚上每50ms来了多少脉冲,将其数值按二进制数在LED灯上显示出来,每隔3秒测试显示一次。 第8章 定时器/计数器及实验 8.6.1 硬件电路 如图8-14所示。图8-14 计数器实验硬件电路 第8章 定时器/计数器及实验 8.6.2 软件 在用户文件夹中建立一个counter.uv2工程项目,再输入以下源程序counter.c ,最后将源程序添加到工程项目中。如图8-15所示。 图8-15 KEIL C51工程窗口 第8章 定时器/计数器及实验 以下为counter.c 源文件:/-定时器实验-/-头文件引用-#include/-宏声明-#defineuchar unsigned ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论