单片机原理及设计应用第6章课件.ppt

上传人(卖家):晟晟文业 文档编号:4145734 上传时间:2022-11-14 格式:PPT 页数:35 大小:355.42KB
下载 相关 举报
单片机原理及设计应用第6章课件.ppt_第1页
第1页 / 共35页
单片机原理及设计应用第6章课件.ppt_第2页
第2页 / 共35页
单片机原理及设计应用第6章课件.ppt_第3页
第3页 / 共35页
单片机原理及设计应用第6章课件.ppt_第4页
第4页 / 共35页
单片机原理及设计应用第6章课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、定时器/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等功能。此外,定时/计数器还可作为串行通信中波特率发生器。因此,对定时器/计数器的掌握和应用也是单片机应用技术的关键问题。在AT89C51单片机内部有2个定时器计数器,分别称为定时器计数器0、定时器计数器1。每个定时器计数器都具有计数和定时两种功能,并具有34种工作方式。51单片机定时器/计数器的逻辑结构如图6-1,可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成,访问地址依次为8AH-8

2、DH。这些寄存器用于存放定时或计数初值,均可单独访问。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式,TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。CPUTCON(88H)TH1TL1TH0TL0INT1(P3.3)INT0(P3.2)中断T1(P3.5)定时器 1定时器 0溢出启动(8DH)(8BH)(8CH)(8AH)启动内部总线溢出

3、工作方式工作方式70T0(P3.4)70TMOD(89H)7070图6-1 定时器/计数器逻辑结构图 以定时器/计数器0为例,其内部结构如图6-2所示。可以看出定时/计数器内的核心器件是加1计数器,加1计数器由两个特殊功能寄存器TH0与TL0组成。当定时计数器工作于定时方式,加1脉冲由系统时钟fosc经12分频后产生。当定时计数器工作于计数方式,加1脉冲由T0引脚直接提供。定时器工作于定时还是计数方式,取决于选择开关,当=0时工作于定时方式,=1时工作于计数方式。加1脉冲要经过启动开关才能到达加1计数器,启动开关由与门的输出端控制,其输入端分别接启动控制位TR0与或门输出端。或门的输入端分别接

4、GATE位与外部中断引脚。启动开关的控制方式将在下文中介绍。当加1 计数器溢出时,由硬件自动将中断标志TF0置1,以此向CPU发中断请求。图6-2 定时器/计数器0内部结构图外部信号是加到T0或T1端引脚(P3口第二功能P3.4 P3.5引脚),用T0(P34)、T1(P35)两个引脚输入定时计数器0与定时计数器1计数脉冲信号,计数方式下是对外来负脉冲进行计数,且到达T0(T1)端时不一定有规律。计数器在每个机器周的S5P2期间采样外部输入信号,若一个周期的采样值为1,下一个周期的采样值为0,则计数器加1,说明识别一个从10的跳变需要两个机器周期,所以对外部输入信号最高的计数速率是晶振频率的1

5、/24(12机器周期=振荡周期;1/振荡周期=振荡频率)。同时外部输入信号的高电平与低电平保持时间均需大于一个机器周期。定时的实质也是计数,不过定时时间不是对外来脉冲进行计数,而是对CPU的内部时钟脉冲的12分频(机器周期)进行计数,即每过一个机器周期就加一次1。例如:设计数器是8位的TL0,计数初值为100,CPU时钟频率为12MHz,则机器周期为1s,当产生计数溢出时,表示定时了(256-100)1s=156s,从而就起到了定时器的作用。一旦定时器/计数器被设置成某种工作方式,它就会按设定的工作方式独立运行,不再占用CPU的操作时间,直到加1计数器计满溢出,才向CPU发送中断请求。定时器/

6、计数器的核心是一个加1计数器,16位定时器/计数器分别由2个8位的专用寄存器组成:T0由TL0和TH0组成,T1由TL1和TH1组成,这些寄存器存放定时或计数初值,每个定时器都可以由软件设置成定时工作方式或计数工作方式,工作方式的设定由工作方式寄存器TMOD设置,由控制寄存器TCON控制。寄存器TMOD的字节地址为89H,其不可以进行位寻址,各位定义如表6-1。1、GATE-选通控制位(门控位)GATE=0,只要用软件对TR0(或TR1)置1就启动定时器;GATE=l,只有外部中断INT1(或INT0)引脚为高电平,且用软件对TR0(或TR1)置1才启动定时器。2、C/-工作方式选择位 C/=

7、0,设置定时器/计数器为定时工作方式;C/=1,设置定时器/计数器为计数工作方式。3、M1M0-工作方式控制位 定时器/计数器由M1和M0的不同的组合选择不同的工作方式,如下:M1M0=00 方式0 13位计数器 M1M0=01 方式1 16位计数器 M1M0=10 方式2 可再装入8位计数器 M1M0=11 方式3 T0:可分成两个8位计数器;T1:停止计数TCON用于控制定时器的启动、停止、溢出和中断,可位寻址,其各位定义如表6-2。1、TF1和TF0-计数溢出标志位 T1/T0溢出时由硬件置1,并申请中断,CPU相应中断后,又由硬件清0。TF1和TF0也可以由软件清0。(可通过软件查询T

8、Fx已否为0来判断溢出,x=0或1)2、TR1和TR0-运行控制位 由软件置1或清0,用来启动或停止定时器。TR0(TR1)=0,则定时器/计数器0(定时器/计数器1)停止定时器/计数器工作;TR0(TR1)=1,则启动定时器/计数器0(定时器/计数器1)工作。3、IE1/IE0-外部中断1/外部中断0请求标志,中断章节已介绍,此处不再说明。4、IT1/IT0-外部中断1/外部中断0触发方式选择位,中断章节已介绍,此处不再说明。如果定时器/计数器在工作时,用中断方式来判断其是否溢出,则就需要设定中断允许寄存器IE,表6-3为中断允许控制寄存器各位定义。1、EA-中断允许总控制位 EA=1,CP

9、U开放中断;EA=0,CPU禁止中断请求。2、ET0和ET1-定时/计数中断允许控制位 ET0(ET1)=0,禁止定时器/计数器0(定时器/计数器1)溢出中断;ET0(ET1)=1,允许定时器/计数器0(定时器/计数器1)溢出中断。对定时器/计数器的工作方式寄存器TMOD中的M1 M0位进行设置,可以使得定时器/计数器工作在4种工作方式下,下面对这4种方式做一下介绍。6.3.16.3.1定时器定时器/计数器的计数器的工作方式工作方式0 0 (1)计数结构 在工作方式0下,定时器/计数器采用13位计数结构。(2)工作方式0的特点 两个定时器/计数器T0、T1均可在方式0下工作;13位计数结构,其

10、计数器由THx全部8位和TLx的低5位构成(高3位不用),x=0或1;当产生计数溢出时,由硬件自动给计数溢出标志位TF0(TF1)置1,由软件给THx、TLx重新置计数初值,x=0或1。(3)计数/定时范围在工作方式0下,当采用计数工作方式时,由于是13位的计数结构,所以计数范围是:18192。当采用定时工作方式时,其定时时间=(213-计数初值)机器周期,例如:设单片机的晶振频率f=12MHz,则机器周期为1s,从而定时范围为1s8192s。应说明的是,工作方式0采用13位计数器是为了与早期的产品兼容,计数初值的高8位和低5位的确定比较麻烦,所以在实际应用中常用16位的工作方式1取代。(1)

11、计数结构 工作方式1是16位计数结构的工作方式。(2)工作方式1的特点 两个定时器/计数器均可在工作方式1下工作;16位计数结构,其计数器由THx的全部8位和TLx的全部8位构成,x=0或1;当产生计数溢出时,由硬件自动给计数溢出标志位TF0(TF1)置1,由软件给THx、TLx重新置计数初值,x=0或1。(3)计数/定时范围 在工作方式1下,当采用计数工作方式时,由于是16位的计数结构,所以计数范围是:165536。当采用定时工作方式时,其定时时间=(216-计数初值)机器周期,例如:设单片机的晶振频率f=12MHz,则机器周期为1s,从而定时范围:1s65536s。工作方式2是一种自动再装

12、入预置数的工作方式,前两种工作方式当工作溢出后,THx和TLx内容就变为0,若想使用则需要重新对THx和TLx设定初值。而在工作方式2下,THx和TLx的初值一旦设定,如不需改变的话则不用再对THx和TLx重新设定,x=0或1。(1)计数结构 工作方式2是8位计数结构的工作方式,计数器由THx全部8位和TLx全部8位构成,其中THx存放预置数,而TxL参与定时/计数工作,x=0或1。(2)工作方式2的特点 两个定时器/计数器均可在工作方式2下工作;8位计数结构,其计数器TLx的8位构成,x=0或1;当产生计数溢出时,由硬件自动给计数溢出标志位TF0(TF1)置1,无需对THx、TLx重新置计数

13、初值,x=0或1。(3)计数/定时范围 在工作方式2下,当采用计数工作方式时,由于是8位的计数结构,所以计数范围是:1256。当采用定时工作方式时,其定时时间=(28-计数初值)机器周期,例如:设单片机的晶振频率f=12MHz,则机器周期为1s,从而定时范围:1s256s。工作方式3是一个8位定时计数器,是针对于定时器/计数器0(T0)而言的。这种工作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,T0的各控制位和引脚信号全归它使用;而TH0则只能作为定时器来用,它占用了T1的中断标志和运行控制位TF1和TR1。也就是说,在定时器/

14、计数器工作在工作方式3的情况下,需要对TCON进行设置和判断溢出时,T0被分成两个来使用,规定TL0还使用原来控制T0的寄存器标记,而TH0则使用原来控制T1的寄存器标记,此时T1停止工作。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记,TL0还是用原来的T0的标记,而TH0则借用T1的标记。T1无标记、控制。一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。因为51单片机的定时器/计数器是可编程的。因此,在利用定时器/计数器进行定时计数之前,先要通过软件对它进行初始化,初始化一般应进行如下工作

15、:设置工作方式,即设置TMOD中的GATE、C/、M1M0各位;计算加1计数器的初值,并将初值送入THx、TLx中,x=0或1;计数方式:计数值=2nCOUNT,计数初值:COUNT=2n计数值。定时方式:定时时间=(2nTIME)机器周期,计数初值TIME=2n定时时间/机器周期。其中n=13、16、8、8分别对应方式0、1、2、3。启动计数器工作,即将TRx置1,x=0或1;若使用中断方式进行判断溢出问题,则还需使T0、T1开中断。6.4.16.4.1利用定时器利用定时器/计数器计数器产生方波产生方波例6-1 设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500s的等宽方波连续

16、脉冲,并由P1.0输出,以查询方式完成。解:1计算计数初值要产生500s的等宽方波脉冲,只需在P1.0端以250s为周期交替输出高低电平即可实现,为此定时时间应为250s,工作在定时方式下。使用6MHz晶振,则一个机器周期为2s。方式0为13位计数结构。设待求的初值为X,则:(213 X)210-6=25010-6 求解得:X=8067,二进制数表示为1111110000011B=1F83H,十六进制表示高8位为0FCH,低5位为03H。因为采用定时器/计数器1,所以其中高8位放入TH1,即TH1=0FCH;低5位放入TL1,即TL1=03H。2.TMOD寄存器初始化 为把定时器/计数器1设定

17、为方式0,则M1M0=00;为实现定时功能,应使C/=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为00H。3由定时器控制寄存器TCON中的TR1位控制定时的启动和停止 TR1=1启动,TR1=0停止。4程序设计 ORG 0000H AJMP MAIN MAIN:MOV TMOD,#00H ;设置T1为工作方式0 MOV TH1,#0FCH ;设置初值 MOV TL1,#03H MOV IE,#00H ;禁止中断 LOOP:SETB TR1 ;启动定时 JBC TF1,LOOPl ;查询计数溢出 AJMP LOOPLOO

18、P1:MOV TH1,#0FCH ;重新设置初值 MOV TL1,#03H CLR TF1 ;计数溢出标志位清“0”CPL P1.0 ;输出取反 AJMP LOOP ;重复循环 END例6-2单片机晶振频率为6MHz,使用定时器0以工作方式1产生周期为500s的等宽方波连续脉冲,并由P1.0输出,以中断方式完成。解:1计算计数初值 要产生500s的等宽方波脉冲,只需在P1.0端以250s为周期交替输出高低电平即可实现,为此定时时间应为250s,工作在定时方式下。使用6MHz晶振,则一个机器周期为2s。方式0为16位计数结构。设待求的初值为X,则:(216 X)210-6=25010-6 求解得

19、:X=65411,二进制数表示为1111111110000011B=FF83H,十六进制表示高8位为0FFH,低8位为83H。因为采用定时器/计数器0,所以其中高8位放入TH0,即TH0=0FFH;低8位放入TL0,即TL0=83H。2.TMOD寄存器初始化为把定时器/计数器0设定为方式1,则M1M0=01;为实现定时功能,应使C/=0;为实现定时器/计数器0的运行控制,则GATE=0。定时器/计数器1不用,有关位设定为0。因此TMOD寄存器应初始化为01H。3程序设计主程序:ORG 0000H AJMP MAIN ORG 000BH AJMP INTMAIN:MOV TMOD,#01H ;设

20、置T0为工作方式0 MOV TH0,#0FFH ;设置计数初值 MOV TL0,#83H SETB EA ;开总中断允许位 SETB ET0 ;开定时器0中断允许位LOOP:SETB TR0 ;定时器0开始工作HERE:SJMP$;等待中断中断服务程序:INT:CLR TF1 MOV TH0,#0FFH ;设置计数初值 MOV TL0,#83H CPL P1.0 ;输出取反 RETI ;中断返回 END例6-3电路如图6-3,晶振为12MHZ将P1口上的信号灯循环显示,时间间隔为1 s。解:系统采用12 MHz晶振,采用定时器1,方式1定时50ms,用R3做50 ms计数单元。1计算计数初值

21、要产生1s的时间间隔,12MHZ晶振,则一个机器周期为1s,采用方式1时,最大的延时时间只有65536s,只有利用循环使单位时间重复一定次数后来产生1s的延时,单位时间设定为50ms,工作在定时方式下。方式1为16位计数结构。设待求的初值为X,则:(216 X)110-6=5010-3 求解得:X=15536,二进制数表示为11110010110000B=3CB0H,十六进制表示高8位为3CH,低8位为0B0H。因为采用定时器/计数器1,所以其中高8位放入TH1,即TH1=3CH;低8位放入TL1,即TL1=0B0H。2.TMOD寄存器初始化为把定时器/计数器1设定为方式1,则M1M0=01;

22、为实现定时功能,应使C/=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为10H。其源程序可设计如下:ORG 0000H CONT:MOV R2,#08H MOV A,#0FEH NEXT:MOV P1,A ACALL DELAY RL A DJNZ R2,NEXT MOV R2,#08H NEXT1:MOV P1,A RR A ACALL DELAY DJNZ R2,NEXT1 SJMP CONTDELAY:MOV R3,#14H ;置50 ms计数循环初值 MOV TMOD,#10H ;设定时器1为方式1 MOV TH

23、1,#3CH ;置定时器初值 MOVTL1,#0B0H SETBTR1 ;启动定时器1 LP1:JBC TF1,LP2 ;查询计数溢出 SJMPLP1 ;未到50 ms继续计数 LP2:MOVTH1,#3CH ;重新置定时器初值 MOVTL1,#0B0H DJNZ R3,LP1 ;未到1 s继续循环 RET ;返回主程序 END 例6-4定时器1,方式2实现1 s的延时子程序。解:因方式2是8位计数器,其最大定时时间为:2561 s=256 s,为实现1 s延时,可选择定时时间为250 s,再循环4000次。定时时间选定后,可确定计数值为250,则定时器1的初值为:X=M计数值=256250=

24、6=6H。采用定时器1,工作方式2工作,因此TMOD=20H。方法1:可采用查询方式1 s延时子程序如下:DELAY:MOV R5,#28H ;置25 ms计数循环初值 MOV R6,#64H ;置250 s计数循环初值 MOV TMOD,#20H ;置定时器1为方式2 MOV TH1,#06H ;置定时器初值 MOV TL1,#06H SETBTR1 ;启动定时器 LP1:JBCTF1,LP2 ;查询计数溢出 SJMPLP1 ;无溢出则继续计数 LP2:DJNZR6,LP1 ;未到25 ms继续循环 MOVR6,#64H DJNZ R5,LP1 ;未到1 s继续循环 RET 方法2:采用中断

25、方式延时1s子程序 ORG 0000H AJMP MAIN ORG 001BH AJMP T1S ORG 0030H MAIN:DELAY:CLR 21H ;设定延时标志位,为0定时时间未到,为1时间到 MOV R5,#28H ;置25 ms计数循环初值 MOV R6,#64H ;置250 s计数循环初值 MOV TMOD,#20H ;置定时器1为方式2 MOV TH1,#06H ;置定时器初值 MOV TL1,#06H SETB TR1 ;启动定时器 LP1:JNB 21H,$;判断延时是否到 RET T1S:CLR TF1 DJNZ R6,LP1 ;未到25 ms继续循环 MOVR6,#6

26、4H DJNZ R5,LP1 ;未到1 s继续循环 SETB 21H RETI 例6-5在某工厂的一条自动饮料生产线上,需要每生产12瓶饮料,就自动执行装箱的操作程序。试用MCS-51型单片机的计数器实现该控制要求。设计思想:在生产线上安装传感装置,每检测到1瓶饮料就向单片机发送1个脉冲信号,当检测到第12瓶后,就执行装箱程序,然后再重新继续检测。因此计数值为12。解:用T0的工作方式2来完成。记录脉冲数量的公式为:S=28-T0的初值 所以T0的初值为:T0的初值=28-12=244=111110100B=0F4H查询方式程序:MOV TMOD,#06H ;将T0设置为:由TR0启动、计数方式、工作方式2 MOV TL0,#0F4H ;将初值为1111 0100B送入低8位计数器TL0,(加12后,可产生溢出)MOV TH0,#0F4H ;初值备用 MOV IE,#00H ;关闭中断允许寄存器 SETB TR0 ;启动T0计数器LOOP:JBC TF0,LOOP1 ;若TF0为1,检测数量达到12瓶,程序转到LOOP1 处,若TF0为0,未计够数,程序往下执行 AJMP LOOP ;转到LOOP处继续检测LOOP1:(驱动电机转动等程序);执行包装动作 END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(单片机原理及设计应用第6章课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|