ATS单片机的定时器和计数器.ppt_第1页
ATS单片机的定时器和计数器.ppt_第2页
ATS单片机的定时器和计数器.ppt_第3页
ATS单片机的定时器和计数器.ppt_第4页
ATS单片机的定时器和计数器.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第6章 AT89S51单片机的 定时器/计数器,单片机原理及应用,主讲人:贺伟,业精于勤荒于嬉,行成于思毁于随,内容概要 工业检测与控制,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数,产生精确的定时时间等。AT89S51片内有两个可编程的定时器/计数器T1、T0,可满足需要。 本章介绍定时器/计数器的结构与功能,2种工作模式和4种工作方式,以及相关的2个特殊功能寄存器TMOD和TCON各位的定义及其编程,最后介绍定时器/计数器的编程及应用实例。,实现定时一般有三种方法: 1、利用软件实现(延时程序); 优点:简单,控制方便;缺点:CPU效率低。 2、硬件实现,专门设计一个单稳态定时器: 优点:CPU效率高;缺点:修改参数麻烦。 3、利用计数器实现,单片机一般利用第三种方法实现,AT89S51内部设有两个16位的定时器/计数器,可用软件控制。 定时器:对机器周期计数, 每过一个机器周期,计数器内容加1 ; 计数器:对外来脉冲进行计数,T0、T1引脚上从高电平到低电平跳变时,计数器内容加1。,6.1 定时器/计数器的结构 定时器/计数器结构如图6-1所示,定时器/计数器T0由特殊功能寄存器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、TL1构成。,图6-1 AT89S51单片机的定时器/计数器结构框图,具有定时器和计数器2种工作模式,4种工作方式(方式0、方式1、方式2和方式3)。属于增计数器。 TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式。 TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。 T0、T1不论是工作在定时器模式还是计数器模式,都是对脉冲信号进行计数,只是计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数(见图6-1)。 定时器工作模式是对单片机的时钟振荡器信号经片内,12分频后的内部脉冲信号计数。由于时钟频率是定值,所以可根据计数值可计算出定时时间。 计数器的起始计数都是从计数器初值开始的。单片机复位时计数器的初值为0,也可用指令给计数器装入一个新的初值。AT89S51的定时器/计数器属于增1计数器。,二、定时器/计数器的工作原理,16位的定时器/计数器实质上是一个加1计数器,可实现定时和计数两种功能,其功能由软件控制和切换。定时器属硬件定时和计数,是单片机中效率高而且工作灵活的部件。 在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时器/计数器。将控制字写入定时器/计数器的过程叫定时器/计数器的初始化。 在初始化程序中,要将工作方式控制字写入定时器方式寄存器(TMOD),工作状态控制字(或相关位)写入定时器控制寄存器(TCON),赋定时/计数初值给TH0(TH1)和TL0(TL1)。,1、定时器/计数器的定时功能: 计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出。 定时器的定时时间与系统的时钟频率有关。因一个机器周期等于12个时钟周期,所以计数频率应为系统时钟频率的十二分之一。如果晶振频率为12MHz,则机器周期为1s。通过改变定时器的定时初值,并适当选择定时器的长度(8位、13位或16位),可以调整定时时间。 2、定时器/计数器的计数功能: 通过外部计数输入引脚T0(P3.4)和T1(P3.5)对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平,若一个机器周期S5P2期间采样值为1,下一个机器周期S5P2期间采样值为0,则计数器加1,再下一个机器周期S3P1期间,新的计数值装入计数器。,因检测一个由1至0的跳变需要两个机器周期,故外部信号的最高计数频率为时钟频率的二十四分之一。如果晶振频率为12MHz,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。,如图6-10所示,图中Tcy为机器周期。,各位的功能说明: TF1(TCON.7, 8FH位)-T1溢出标志位。 TF0(TCON.5, 8DH位)-T0溢出标志位。 TR1(TCON.6, 8EH位)-T1运行控制位。 0:关闭T1;1:启动T1运行。 TR0(TCON.4, 8CH位)-T0运行控制位。 0:关闭T0;1:启动T0运行。,1.定时器控制寄存器 定时器控制寄存器TCON的作用是控制定时器的启动与停止,并保存T0、T1的溢出和中断标志。TCON的格式: 可按位寻址,6.1.1 工作方式寄存器和控制寄存器,AT89S51单片机的定时器为可编程定时器,在定时器工作之前必须先进行初始化,即将控制命令写入定时器控制寄存器。,定时器方式寄存器TMOD的作用是设置T0、T1的工作方式。 TMOD的格式:,2.定时器工作方式寄存器TMOD,各位的功能说明: (1) GATE:门控位。 GATE=0:软件启动定时器,即用指令使TCON中的TR1(TR0) 置1即可启动定时器1(定时器0)。 GATE=1:软件和硬件共同启动定时器,即用指令使TCON中的TR1(TR0)置1时,只有外部中断INT0(INT1)引脚输入高电平时才能启动定时器1(定时器0)。 (2)C/T:功能选择位。 C/T=0时,以定时器方式工作。 C/T=1时,以计数器方式工作。,定时器工作方式选择位定义,(3) M1、M0:方式选择位。定时/计数器有四种工作方式,由M1M0进行设置。,二、 定时器工作方式:,由方式选择位M1、M0设定。,1、方式0(M1M0=00): 13位定时/计数器。THx8位和TLx低5位组成加1计数器。,计数外部脉冲个数:18192(213) 定时时间(若T=1s):1s8.19ms,fosc,T=12/fosc,16位定时/计数器。 THx8位和TLx8位组成16位加1计数器。,计数外部脉冲个数:165536(216) 定时时间(若T=1s):1s(65536T=65.54ms),2、方式1(M1M0=01):,T=12/fosc,3、方式2(M1M0=10):,自动恢复初值8位定时/计数器。TLx为8位加1计数器, THx为8位初值暂存器。,用于需要重复定时和计数的场合。 最大计数值:256 (28) 最大定时时间(若T=1s): 256s,T=12/fosc,计数满后自动装入计数初值。 省去用户软件中重装初值的程序,精确的定时。,4、方式3(M1M0=11):,T0分成2个8位定时器:TL0定时/计数器和TH0定时器; TL0占用T0控制位:C/T,TR0,GATE; TH0占用T1控制位:TR1、TF1; T1不能使用方式3工作,常作串口的波特率发生器使用。,T1工作在方式1,T1工作在方式2,T1工作在方式0,T0处于方式3时, T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。,4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。 方式2省去程序中重装初值的指令,并可产生相当精确的定时时间。 当T1作串行口波特率发生器时,T0才设置为方式3。,6.4 定时器/计数器的编程和应用 AT89S51的定时计数器是可编程的,因此,在进行定时或计数之前也要用对其进行初始化。初始化一般应包括以下几个步骤: 1、对TMOD寄存器赋值,以确定定时器的工作方式。 2置定时计数器初值,直接将初值写入寄存器的TH0,TL0或TH1,TL1。 3根据需要,对寄存器IE置初值,开放定时器中断。 4对TCON寄存器中的TR1或TR0置位,启动定时计数器。启动以后,计数器即按规定的工作方式和初值进行计数或开始定时。,定时/计数器初值的计算,2计数器初值的计算 在计数器模式下,此时计数器就计数引脚上到来的脉冲个数,每检测到一个脉冲下降沿,就加1一次。其计数脉冲个数S为: S=M-X 式中,M为计数器模值,该值和计数器工作方式有关,在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。 X是计数器的计数初值。,1定时器初值的计算 在定时器模式下,计数器由单片机主脉冲经12分频后计数,即就是对机器周期进行计数。则定时器定时时间t的公式: t=(M-X) T 定时初值:X=M-t/ T 式中,M为模值,和定时器的工作方式有关,在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28 。 T是机器周期;X是定时器的定时初值。,例2:,例:T0运行于定时器状态,时钟振荡周期为12MHZ,要求定时100s。求不同工作方式时的定时初值X并计算在不同工 作方式下最大的定时时间tmax。 解:fosc=12MHz T=1s 由公式 X=M-t/T 得 : 方式0(13位方式): X=213-100s/1s=1F9C 当T0的初值=0时为最大定时时间: tmax=( 213 -0)*1 s=8.192ms 方式1(16位方式): X=216-100s/1s=FF9CH tmax=( 216 -0)*1 s=65.536ms 方式2、3(8位方式):X=28-100s/1s=9CH tmax=( 213 -0)*1 s=256 s,注意:工作方式0的初值装入方法: 1F9CH=0001 1111 1001 1100 B 可见,TH0=FCH,TL0=1CH,TL0的低5位,TH0的8位,MOV TH0,#0FCH MOV TL0,#1CH,T=12/fosc,定时器初始化编程: 使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式。 初始化编程格式:,MOV TMOD,# 方式字 ;选择方式 MOV THx,#XH ;装入Tx时间常数 MOV TLx,#XL (SETB EA ) ;开Tx中断 (SETB ETx ) SETB TRx ;启动Tx定时器 需考虑:1. 按实际需要选择定时/计数功能; 2. 按时间或计数长度选择工作方式; 3. 计算时间常数:,计算时间常数X(计算初值): 计数功能:X= 2n -计数值 (n:8/13/16) 定时功能:X= 2n - t/T (t:定时时间; T:机器周期),方法1:用延时程序实现1mS的延时。 UP:SETB P1.0 LCALL D2MS CLR P1.0 LCALL D2MS SJMP UP 方法2:用T0定时1mS,查询TF0 确定工作方式 方式0 计算初值 E018H 编程 MOV TMOD,#00H SETB TR0 LOOP: MOV TH0,#0E0H MOV TL0,#18H JNB TF0,$ CPL P1.0 CLR TF0 SJMP LOOP,例1 使P1.0输出一个周期为2mS的方波。,方法3:用T0定时1mS,中断。 ORG 0000H LJMP MAIN ORG 000BH LJMP AT0 MAIN: MOV TMOD,#00H MOV TH0,#0E0H MOV TL0,#18H SETB EA SETB ET0 SETB TR0 SJMP $ AT0: MOV TMOD,#00H MOV TH0,#0E0H CPL P1.0 RETI,fosc=12MHz,(1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms;方式1最长可定时131.072ms; 方式2最长可定时512s。 欲定时1秒,这个值已经超过了定时器的最大定时时间。为此,我们只有采用定时器定时和软件计数相结合的方法才能解决问题。 选方式1,每隔100ms中断一次,中断10次为1s。 (2)计算计数初值 因为:(216-X)210-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H (3)10次计数的实现 采用循环程序法。 (4)程序设计 参考程序 :,例2 假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。,ORG 0000H RESET:LJMP MAIN ;上电,转主程序入口MAIN ORG 000BH ;T0的中断入口 LJMP IT0P ;转T0中断处理程序IT0P ORG 1000H MAIN:MOV SP,#60H ;设堆栈指针 MOV B,#0AH ;设循环次数10次 MOV TMOD,#01H ;设T0工作在方式1 MOV TL0,#0B0H ;给T0设初值 MOV TH0,#3CH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 SETB EA ;CPU开放中断 HERE:SJMP HERE ;等待中断 ITOP:MOV TL0,#0B0H ;T0中断子程序,重装初值 MOV TH0,#3CH ; DJNZ B,LOOP CLR TR0 ;1s定时时间到,停止T0工作 LOOP:RETI,6.4.4 门控制位GATE的应用测量脉冲宽度 GATE1可使定时器/计数器T1的启动计数受INT1*的控制,可测量引脚INT1*(P3.3)上正脉冲的宽度(机器周期数)。,参考程序: ORG 0000H RESET: AJMP MAIN ;复位入口转主程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#90H ;T1为方式1定时控制字 MOV TL1,#00H MOV TH1,#00H LOOP0: JB P3.3,LOOP0 ;INT1*高,则循环 SETB TR1 ;如INT1*为低,启动T1 LOOP1: JNB P3.3,LOOP1 ;INT1*低,则循环 LOOP2: JB P3.3,LOOP2 ;INT1*高,则循环 CLR TR1 ;停止T1计数 MOV A,TL1 ;T1计数值送A 将A中的T1计数值 送显示缓冲区 转换成显示的代码 LOOP3: LCALL DIR ;调

温馨提示

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

评论

0/150

提交评论