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

下载本文档

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

文档简介

1、第第6 6章章 AT89S51AT89S51单片机的单片机的 定时器定时器/ /计数器计数器单片机原理及应用 主讲人:贺伟业精于勤荒于嬉,行成于思毁于随第1页/共32页内容概要工业检测与控制,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数,产生精确的定时时间等。AT89S51片内有两个可编程的定时器/计数器T1、T0,可满足需要。本章介绍定时器/计数器的结构与功能,2种工作模式和4种工作方式,以及相关的2个特殊功能寄存器TMOD和TCON各位的定义及其编程,最后介绍定时器/计数器的编程及应用实例。第2页/共32页实现定时一般有三种方法: 1、利用软件实现(延时程序); 优点:简单,控

2、制方便;缺点:CPU效率低。 2、硬件实现,专门设计一个单稳态定时器: 优点:CPU效率高;缺点:修改参数麻烦。 3、利用计数器实现单片机一般利用第三种方法实现计数器溢出输入脉冲1us8位256us预置数第3页/共32页AT89S51内部设有两个16位的定时器/计数器,可用软件控制。定时器:对机器周期计数, 每过一个机器周期,计数器内容加1 ;计数器:对外来脉冲进行计数,T0、T1引脚上从高电平到低电平跳变时,计数器内容加1。外来脉冲T0机器周期片内计数器单片机第4页/共32页6.1 定时器定时器/计数器的结构计数器的结构定时器/计数器结构结构如图图6-1所示,定时器/计数器T0由特殊功能寄存

3、器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、TL1构成。 图6-1 AT89S51单片机的定时器/计数器结构框图第5页/共32页具有定时器和计数器2种工作模式种工作模式,4种工作方式种工作方式(方式0、方式1、方式2和方式3)。属于增计数器增计数器。TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式。TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。T0、T1不论是工作在定时器模式还是计数器模式,都是对脉冲信号进行计数,只是计数信号的来源不同。计数器模式计数器模式是对加在T0()和T1()两个引脚上的外部脉冲进行计数(见图6-1)。定时器工作

4、模式定时器工作模式是对单片机的时钟振荡器信号经片内第6页/共32页12分频后的内部脉冲信号计数。由于时钟频率是定值,所以可根据计数值根据计数值可计算计算出定时时间出定时时间。计数器的起始计数都是从计数器初值开始从计数器初值开始的的。单片机复位时计数器的初值为0,也可用指令给计数器装入一个新的初值。AT89S51的定时器/计数器属于增1计数器。第7页/共32页二、定时器二、定时器/ /计数器的工作原计数器的工作原理理 16 16位的定时器位的定时器/ /计数器实质上是一个加计数器实质上是一个加1 1计计数器,可实现数器,可实现定时定时和和计数计数两种功能,其功能由两种功能,其功能由软件控制和切换

5、。定时器属硬件定时和计数,软件控制和切换。定时器属硬件定时和计数,是单片机中效率高而且工作灵活的部件。是单片机中效率高而且工作灵活的部件。 在定时器在定时器/ /计数器开始工作之前,计数器开始工作之前,CPUCPU必须必须将一些命令将一些命令( (称为控制字称为控制字) )写入定时器写入定时器/ /计数器。计数器。将控制字写入定时器将控制字写入定时器/ /计数器的过程叫计数器的过程叫定时器定时器/ /计数器的初始化计数器的初始化。 在初始化程序中,要将在初始化程序中,要将工作方式控制字工作方式控制字写写入定时器方式寄存器入定时器方式寄存器(TMOD)(TMOD),工作状态控制字工作状态控制字(

6、 (或相关位或相关位) )写入定时器控制寄存器写入定时器控制寄存器(TCON)(TCON),赋,赋定时定时/ /计数初值计数初值给给TH0(TH1)TH0(TH1)和和TL0(TL1)TL0(TL1)。 第8页/共32页 1 1、定时器、定时器/ /计数器的定时功能计数器的定时功能: : 计数器的加计数器的加1 1信号由振荡器的信号由振荡器的1212分频信号产分频信号产生,即生,即每过一个机器周期,计数器加每过一个机器周期,计数器加1 1,直至计满,直至计满溢出。溢出。 定时器的定时时间与系统的时钟频率有关。定时器的定时时间与系统的时钟频率有关。因一个机器周期等于因一个机器周期等于1212个时

7、钟周期,所以个时钟周期,所以计数频率计数频率应为系统时钟频率的十二分之一。应为系统时钟频率的十二分之一。如果晶振频率为如果晶振频率为12MHz12MHz,则机器周期为,则机器周期为1 1 s s。通过改变定时器的定时。通过改变定时器的定时初值,并适当选择定时器的长度初值,并适当选择定时器的长度(8(8位、位、1313位或位或1616位位) ),可以调整定时时间。,可以调整定时时间。 2 2、定时器、定时器/ /计数器的计数功能计数器的计数功能: : 通过外部计数输入引脚通过外部计数输入引脚T0(P3.4)T0(P3.4)和和T1(P3.5)T1(P3.5)对外部信号计数,外部脉冲的下降沿将触发

8、计数。对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的计数器在每个机器周期的S5P2S5P2期间采样引脚输入电期间采样引脚输入电平,若一个机器周期平,若一个机器周期S5P2S5P2期间采样值为期间采样值为1 1,下一个,下一个机器周期机器周期S5P2S5P2期间采样值为期间采样值为0 0,则计数器加,则计数器加1 1,再下,再下一个机器周期一个机器周期S3P1S3P1期间,新的计数值装入计数器。期间,新的计数值装入计数器。第9页/共32页 因检测一个由因检测一个由1 1至至0 0的跳变需要两个机器周期,的跳变需要两个机器周期,故故外部信号的最高计数频率为时钟频率的二十四外部信

9、号的最高计数频率为时钟频率的二十四分之一。分之一。如果晶振频率为如果晶振频率为12MHz12MHz,则最高计数频,则最高计数频率为率为。虽然对外部输入信号的占空比无特殊要求,。虽然对外部输入信号的占空比无特殊要求,但为了确保给定电平在变化前至少被采样一次,但为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。一个机器周期以上。 如图6-10所示,图中Tcy为机器周期。第10页/共32页 各位的功能说明:TF1(TCON.7, 8FH位)-T1溢出标志位。TF0(TCON.5, 8DH位)-T0溢出标志位。

10、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 6.1.1 工作方式寄存器和控制寄存工作方式寄存器和控制寄存器器 AT89S51单片机的定时器为可编程定时器,在定时器工作之前必须先进行初始化,即将控制命令写入定时器控制寄存器。第11页/共32页 定时器方式寄存器定时器方式寄存器TMODTMOD的作用是设置的作用是设置T0T

11、0、T1T1的工作方式。的工作方式。 TMODTMOD的格式:的格式: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时,以计数器方式工作。第12页/共32页M1 M0工作方式工作方式功能描述功能描述0 0方式方式013位计数器位

12、计数器0 1方式方式116位计数器位计数器1 0方式方式2自动重装初值自动重装初值8位计数器位计数器1 1方式方式3定时器定时器0:分为两个独立的:分为两个独立的8位计数器位计数器定时器定时器1:无中断的计数器:无中断的计数器定时器工作方式选择位定义(3) M1、M0:方式选择位。定时/计数器有四种工作方式,由M1M0进行设置。第13页/共32页二、 定时器工作方式:由方式选择位M1M1、M0M0设定。计数外部脉冲个数:18192(213)定时时间(若T=1s):1sfoscT=12/fosc第14页/共32页1616位定时/ /计数器。 THx8THx8位和TLx8TLx8位组成1616位加

13、1 1计数器。计数外部脉冲个数:165536(216)定时时间(若T=1s):1s(65536T=65.54ms)T=12/fosc第15页/共32页 自动恢复初值8 8位定时/ /计数器。TLxTLx为8 8位加1 1计数器, THxTHx为8 8位初值暂存器。用于需要重复定时和计数的场合。最大计数值:256 (28)最大定时时间(若T=1s): 256sT=12/fosc计数满后自动装入计数初值。省去用户软件中重装初值的程序,精确的定时。第16页/共32页 T0T0分成2 2个8 8位定时器:TL0TL0定时/ /计数器和TH0TH0定时器; TL0TL0占用T0T0控制位:C/TC/T,

14、TR0TR0,GATEGATE; TH0TH0占用T1T1控制位:TR1TR1、TF1TF1; T1T1不能使用方式3 3工作,常作串口的波特率发生器使用。fosc振荡器第17页/共32页T1工作在方式1T1工作在方式2T1工作在方式0T0处于方式3时, T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。第18页/共32页 4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。 方式2省去程序中重装初值的指令,并可产生相当精确的定时时间。 当T1作串行口波特率发生器时,T0才设置为

15、方式3。 第19页/共32页6.4 定时器/计数器的编程和应用 AT89S51的定时计数器是可编程的,因此,在进行定时或计数之前也要用对其进行初始化。初始化一般应包括以下几个步骤:1、对TMOD寄存器赋值,以确定定时器的工作方式。2置定时计数器初值,直接将初值写入寄存器的TH0,TL0或TH1,TL1。3根据需要,对寄存器IE置初值,开放定时器中断。4对TCON寄存器中的TR1或TR0置位,启动定时计数器。启动以后,计数器即按规定的工作方式和初值进行计数或开始定时。第20页/共32页定时定时/ /计数器初值的计计数器初值的计算算 2 2计数器初值的计算计数器初值的计算 在计数器模式下,此时在计

16、数器模式下,此时计数器就计数引脚上到来计数器就计数引脚上到来的脉冲个数,每检测到一的脉冲个数,每检测到一个脉冲下降沿,就加个脉冲下降沿,就加1 1一次。一次。其计数脉冲个数其计数脉冲个数S S为:为:S=M-XS=M-X 式中,式中,M M为计数器模值,该为计数器模值,该值和计数器工作方式有关,值和计数器工作方式有关,在方式在方式0 0时时M M为为2 21313;在方式;在方式1 1时时M M为为2 21616;在方式;在方式2 2和方式和方式3 3时时M M为为2 28 8。 X X是计数器的计是计数器的计数初值。数初值。 1定时器初值的计算 在定时器模式下,计数器由单片机主脉冲经12分频

17、后计数,即就是对机器周期进行计数。则定时器定时时间t的公式: t=(M-X) T定时初值:X=M-t/ T式中,M为模值,和定时器的工作方式有关,在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28 。 T是机器周期;X是定时器的定时初值。 第21页/共32页例2:例:T0运行于定时器状态,时钟振荡周期为12MHZ,要求定时100s。求不同工作方式时的定时初值X并计算在不同工 作方式下最大的定时时间tmax。解:fosc=12MHz T=1s 由公式 X=M-t/T 得 : 方式0(13位方式): X=213-100s/1s=1F9C当T0的初值=0时为最大定时时间: tma

18、x=( 213 -0)*1 s方式1(16位方式): X=216-100s/1s=FF9CH tmax=( 216 -0)*1 s 方式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=1CHTL0的低5位TH0的8位MOVTH0,#0FCHMOVTL0,#1CHT=12/fosc第22页/共32页定时器初始化编程: 使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式。 初始化编程格式:MOV TMOD,# 方式字方

19、式字 ;选择方式;选择方式MOV THx,#XH ;装入;装入Tx时间常数时间常数MOV TLx,#XL(SETB EA) ;开;开Tx中断中断(SETB ETx ) SETB TRx ;启动;启动Tx定时器定时器需考虑:需考虑:1. 按实际需要选择定时按实际需要选择定时/ /计数功能;计数功能; 2. 按时间或计数长度选择工作方式;按时间或计数长度选择工作方式;计算时间常数X(X(计算初值) ):计数功能:X= 2X= 2n n - -计数值 (n n:8/13/168/13/16) 定时功能:X= 2X= 2n n - t/T- t/T (t t:定时时间; T T:机器周期)第23页/共

20、32页方法1:用延时程序实现1mS的延时。 UP: LCALL D2MS LCALL D2MS SJMP UP方法2:用T0定时1mS,查询TF0 确定工作方式 方式0 计算初值 E018H 编程 MOV TMOD,#00H SETB TR0LOOP: MOV TH0,#0E0H MOV TL0,#18H JNB TF0,$ CLR TF0 SJMP LOOP例1 使输出一个周期为2mS的方波。方法3:用T0定时1mS,中断。 ORG 0000H LJMP MAIN ORG 000BH LJMP AT0 MAIN: MOV TMOD,#00H MOV TH0,#0E0H MOV TL0,#18

21、H SETB EA SETB ET0 SETB TR0 SJMP $ AT0: MOV TMOD,#00H MOV TH0,#0E0H RETIfosc=12MHz第24页/共32页(1 1)T0T0工作方式的确定工作方式的确定 定时时间较长,采用哪一种工作方式?定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出:由各种工作方式的特性,可计算出: 方式方式0 0最长可定时最长可定时msms; ;方式方式1 1最长可定时最长可定时msms; ; 方式方式2 2最长可定时最长可定时512512 s s。 欲定时欲定时1 1秒,这个值已经超过了定时器的最大定时时间。为此,我秒,这个值

22、已经超过了定时器的最大定时时间。为此,我们只有采用们只有采用定时器定时和软件计数相结合的方法定时器定时和软件计数相结合的方法才能解决问题。才能解决问题。 选方式选方式1 1,每隔,每隔100100msms中断一次,中断中断一次,中断1010次为次为1 1s s。 (2 2)计算计数初值)计算计数初值 因为:因为:(2(21616- -X)X)2 21010-6 -6 = 10= 10-1-1 所以:所以:X=15536=3CB0HX=15536=3CB0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)1010次计数的实现次计数的实现 采用循环程序法。采用

23、循环程序法。(4 4)程序设计)程序设计 参考程序参考程序 : : 例2 假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。第25页/共32页 ORG 0000HORG 0000HRESETRESET:LJMP MAIN LJMP MAIN ;上电,转主程序入口;上电,转主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中断入口的中断入口 LJMP IT0PLJMP IT0P ;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN:MOV SP,#60HMOV SP,#60H ;设堆栈指针;设堆栈指

24、针 MOV B,#0AH MOV B,#0AH ;设循环次数;设循环次数1010次次 MOV TMOD,#01H MOV TMOD,#01H ;设;设T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;给;给T0T0设初值设初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;启动;启动T0T0 SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开放中断开放中断 HERE HERE:SJMP HERE SJMP HERE ;等待中断;等待中断 ITOP

25、ITOP:MOV TL0,#0B0H MOV TL0,#0B0H ;T0T0中断子程序,重装初值中断子程序,重装初值 MOV TH0,#3CH MOV TH0,#3CH ; DJNZ B DJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定时时间到,停止定时时间到,停止T0T0工作工作 LOOP LOOP:RETI RETI 第26页/共32页6.4.4 6.4.4 门控制位门控制位GATEGATE的应用的应用测量脉冲宽度测量脉冲宽度GATE1GATE1可使定时器可使定时器/ /计数器计数器T1T1的的启动计数启动计数受受INT1INT1* *的的控制,控制,可测量引脚

26、可测量引脚INT1INT1* *()上正脉冲的宽度)上正脉冲的宽度(机(机器周期数)。器周期数)。第27页/共32页参考程序:参考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;复位入口转主程序;复位入口转主程序 ORG 0100HORG 0100H MAIN: MOV SP,#60H MAIN: MOV SP,#60H MOV TMOD,#90H MOV TMOD,#90H ;T1T1为方式为方式1 1定时控制字定时控制字 MOV TL1,#00HMOV TL1,#00H MOV TH1,#00H MOV TH1,#00HLO

27、OP0: JB P3.3,LOOP0 LOOP0: JB P3.3,LOOP0 ;INT1INT1* *高高, ,则循环则循环 SETB TR1SETB TR1 ;如;如INT1INT1* *为低,启动为低,启动T1T1LOOP1: JNB P3.3,LOOP1 LOOP1: JNB P3.3,LOOP1 ;INT1INT1* *低,则循环低,则循环LOOP2: JB P3.3,LOOP2 LOOP2: JB P3.3,LOOP2 ;INT1INT1* *高高, ,则循环则循环 CLR TR1 CLR TR1 ;停止;停止T1T1计数计数 MOV A,TL1MOV A,TL1 ;T1T1计数值送计数值送A A 将将A A中的中的T1T1计数值计数值 送显示缓冲区送显示缓冲区 转换成显示的代码转换成显示的代码 LOOP3: LCALL DIR LOOP3: LCALL DIR ;调用显示子程序;调用显示子程序DIR,DIR,显示显示T1T1计数值计数值 AJMP LOOP3 AJMP LOOP3 ; 执行程序,使执行程序,使INT1INT1* *引脚上出现的引脚上出现的正脉冲宽度以机器周期数的形式显示在显示正脉冲宽度以机器周期数的

温馨提示

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

评论

0/150

提交评论