第6章MCS51单片机定时器、计数器.ppt

上传人:仙人指路1688 文档编号:2871651 上传时间:2023-02-28 格式:PPT 页数:45 大小:1.76MB
返回 下载 相关 举报
第6章MCS51单片机定时器、计数器.ppt_第1页
第1页 / 共45页
第6章MCS51单片机定时器、计数器.ppt_第2页
第2页 / 共45页
第6章MCS51单片机定时器、计数器.ppt_第3页
第3页 / 共45页
第6章MCS51单片机定时器、计数器.ppt_第4页
第4页 / 共45页
第6章MCS51单片机定时器、计数器.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第6章MCS51单片机定时器、计数器.ppt》由会员分享,可在线阅读,更多相关《第6章MCS51单片机定时器、计数器.ppt(45页珍藏版)》请在三一办公上搜索。

1、第六章 MCS-51单片机定时器/计数器,【学习目的和要求】MCS-51单片机内部有两个定时器/计数器,它们可以用于对某一事件的计数结果进行控制,或按一定时间间隔进行控制。了解和掌握定时器/计数器的结构原理和各种工作方式。了解定时器/计数器的基本编程应用,6.1 定时器/计数器结构及工作原理6.2 定时器/计数器的控制及工作方式6.3 定时器/计数器的编程和应用,第六章 MCS-51单片机定时器/计数器,6.1.1 定时器/计数器的结构,T0、T1又可分为两个独立的8位计数器,即TH0、TL0和TH1、TL1,用于存储定时器/计数器的初值,TMOD为方式控制寄存器,用来设置定时器/计数器的工作

2、方式,TCON为控制寄存器,用来控制定时器/计数器的启动与停止,MCS-51系列单片机的51子系列由两个16位定时器T0、T1和两个寄存器TCON、TMOD组成。,第六章 MCS-51单片机定时器/计数器,6.1.2 定时器/计数器的工作原理,原理:都是进行计数操作,每来一个脉冲定时器/计数器就加1,加满溢出后,再从新开始计数,不同之处是输入的计数信号来源不同。,T0的结构示意图,定时功能:是通过对单片机内部时钟脉冲的计数来实现的。计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。计数功能:是通过对外部输入脉冲进行计数来实现的。计数脉冲来自相应的外部

3、输入引脚,T0为P3.4,T1为P3.5。,6.1.2 定时器/计数器的工作原理,原理:都是进行计数操作,每来一个脉冲定时器/计数器就加1,加满溢出后,再从新开始计数,不同之处是输入的计数信号来源不同。,工作方式控制寄存器TMOD,T1控制,T0控制,GATE门控位,M1 M0工作方式选择,6.2 定时器/计数器控制及工作方式,定时器控制寄存器TCON,中断请求标志,触发方式选择,启动定时/计数器,0 低电平1 下降沿,0 停止1 启动,6.2 定时器/计数器控制及工作方式,字节地址为88H,它可进行位寻址,位地址为8FH88H。,第六章 MCS-51单片机定时器/计数器,6.2.3 定时器/

4、计数器的工作方式,通过对TMOD寄存器中M0、M1位进行设置,可选择4种工作方式。,一、方式0,方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。,计数器,定时器,计数脉冲输入,二、方式1 方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。,计数个数与计数初值的关系为:,三、方式2 方式2为自动重装初值的8位计数方式。计数个数与计数初值的关系为:工作方式2特别适合于用作较精确的脉冲信号发生器。,四、方式3 方式3只适用于定时/计数器T0,定

5、时器T1处于方式3时相当于TR1=0,停止计数。工作方式3将T0分成为两个独立的8位计数器TL0和TH0。,第六章 MCS-51单片机定时器/计数器,两个定时器/计数器的设置和使用是不同的。,(1)工作方式3下的定时器/计数器0,第六章 MCS-51单片机定时器/计数器,图6-9 T0工作在方式3时T1为方式0,图6-10 T0工作在方式3时T1为方式1,图6-11 T0工作在方式3时T1为方式2,(2)工作方式3下的定时器/计数器1,第六章 MCS-51单片机定时器/计数器,6.2.4 定时器/计数器的初始化,1.定时器/计数器的初始化设置,定时器/计数器是一种可编程部件,在使用定时器/计数

6、器时,需要先对其进行初始化,初始化步骤如下。1.确定工作模式和工作方式,将方式控制字写入TMOD寄存 器中。2.预置定时或计数初值,将计算出的定时或计数初始值装 入TL0、TH0或TL1、TH1中。不同工作方式,其定时或计 数长度不一样,在定时或计数时不能超过其最大值。3.开放定时器/计数器的中断,即如果采用中断方式,要对 IE中的相关位进行设置。4.启动定时器/计数器工作,使TCON中的TR0或TR1位置1。,第六章 MCS-51单片机定时器/计数器,2定时器/计数器初值的计算,定时器/计数器在不同工作方式时,定时初值或计数初值的计算方法不同,最大定时时间和最大计数值也不同,在定时或计数时不

7、能超过其最大值。,第六章 MCS-51单片机定时器/计数器,6.3 定时器/计数器的编程和应用,6.3.1方式0应用,【例6-1】使用定时器/计数器0的方式0,晶振频率为=6MHz,以中 断方式工作,在P1.0引脚输出一个周期为1ms的方波,试编写程序。,解:根据题意,只要使P1.0脚每隔500us 取反一次即可得到周期1ms的方波,因而T0的定时时间T=500us。,(1)设定TMOD(即控制字)。TMOD的低4位控制定时器/计数器0,设T0为定时模式,即=0;工作在方式0,即 M1M0=00;设定为软件启动定时器,即GATE=0。TMOD高4位与T0无关,一般都取0,所以TMOD的控制字为

8、00H。,(2)计算定时初值。晶振频率 为6MHz,机器周期 定时初值=8192-250=7942=0001111100000110B=1F06H因TL0的高3位未用,对计算出的初值要进行修正,即在低5位前插入3个0,修正后的定时初值X=1111100000000110B=F806H。,第六章 MCS-51单片机定时器/计数器,(3)源程序清单ORG0000HAJMPMAIN;转主程序ORG000BH;T0中断矢量地址AJMPISER;转中断服务程序ORG100HMAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#00H;写控制字 MOVTL0,#06H;置T0 初值MOVTH0,#0

9、F8HSETBET0;允许T0中断SETB EA;CPU开中断SETBTR0;启动T0SJMP$;等待中断ISER:MOVTL0,#06H;T0中断服务子程序,重置T0 初值MOVTH0,#0F8H;CPLP1.0;P1.0取反RETIEND,第六章 MCS-51单片机定时器/计数器,【例6-2】使用定时器/计数器1的方式0,晶振频率为6MHz,以查询 方式工作,在P1.0引脚输出一个周期为2ms的方波,试编写程序。,解:根据题意,只要使P1.0脚每隔1ms取反一次即可得到周期2ms的方波,因而T1的定时时间T=1ms。,(1)设定TMOD(即控制字)。TMOD的高4位控制定时器/计数器1,设

10、T1为定时模式,即=0;工作在方式0,即 M1M0=00;设定为软件启动定时器,即GATE=0。TMOD低4位与T1无关,一般都取0,所以TMOD的控制字为00H。,(2)计算定时初值。晶振频率 为6MHz,机器周期 定时初值=8192-500=7692=1111000001100B=1E0CH因TL0的高3位未用,对计算出的初值要进行修正,即在低5位前插入3个0,修正后的定时初值X=1111000000001100B=F00CH。,第六章 MCS-51单片机定时器/计数器,(3)源程序清单ORG100HMOVTMOD,#00H;写控制字,T1工作方式0MOVTL1,#0CH;置T1 初值MO

11、VTH1,#0F0HLOOP:SETBTR1;启动T1LOOP1:JNBTF1,LOOP1;查询TF1,有无溢出CLR TF1;有溢出清TF1MOVTL1,#0CH;重置T1 初值MOVTH1,#0F0HCPLP1.0;P1.0取反SJMPLOOP,第六章 MCS-51单片机定时器/计数器,6.3.2 方式1应用,方式1与方式0基本相同,其差别只是计数长度不同。,【例6-3】在单片机P1口连接8个发光二极管,如图6-12所示。使用T1工作方式1,晶振频率=6MHz,以查询方式工作,定时时间为80ms,试编写程序,使图中P1.0接的发光二极管先亮,延时80ms后,P1.1亮,依次向左移动,当最左

12、端P1.7亮后又回到最右端重新开始向左移动,不断循环。,第六章 MCS-51单片机定时器/计数器,(1)设定TMOD(即控制字)。TMOD的高4位控制定时器/计数器1,设T1为定时模式,取=0;工作方式1,取 M1M0=01;设定为软件启动定时器,取GATE=0。TMOD低4位与T1无关,一般都取0,所以TMOD的控制字为10H。,解:根据题意,T1的定时时间T=80ms。,(2)计算定时初值。晶振频率 为6MHz,机器周期 定时初值=65536-40000=25536=0110001111000000B=63C0H,第六章 MCS-51单片机定时器/计数器,(3)程序设计 1、流程图,第六章

13、 MCS-51单片机定时器/计数器,2、源程序 ORG 100HSTART:MOV R0,#08H;设左移8次 MOV A,#11111110B;开始点亮灯P1.0LOOP:MOV P1,A;送P1口输出 ACALL DELAY;调用延时子程序 RLA;累加器循环左移1位 DJNZR0,LOOP;判断移动次数 JMPSTART;返回,循环执行DELAY:MOVTMOD,#00010000B;设定T1工作在方式1 SETB TR1;启动T1开始计时 MOVTL1,#0C0H;装入低位 MOVTH1,#63H;装入高位 JNBTF1,$;T1没有溢出 CLRTF1;产生溢出,清除标志位 RET;子

14、程序返回 END,第六章 MCS-51单片机定时器/计数器,【例6-4】设晶振频率为=6MHz,要求利用定时器T1,每隔5s将P1.0取反一次。,解:因要求的定时时间5s已超出了定时器的定时能力,所以无法用定时器直接实现5s的定时。可将定时器的定时时间设为100ms(16位定时器的最长定时时间为131.072ms),在中断服务程序中对定时器溢出中断进行计数,当计数达50次时,将P1.0取反,否则直接返回主程序。,(1)确定工作方式控制字设T1为16位定时器,即=0;工作方式1,即 M1M0=01;设定为软件启动定时器,即GATE=0。所以TMOD的控制字为10H。,(2)计算定时器T1初值X。

15、,第六章 MCS-51单片机定时器/计数器,(3)源程序:ORG0000HLJMPMAIN;转主程序ORG001BH;T1中断服务程序入口地址LJMPT0ISRORG0100HMAIN:MOVSP,#60H;设置堆栈指针MOVTMOD,#10H;T1为定时模式,工作方式1MOVTL0,#0B0H;装入初值MOVTH0,#3CHMOVA,#50;累加器置初值50 SETBEA;CPU开中断SETBET1;允许T1中断SETBTR1;启动T1计数SJMP$;等待T0ISR:MOVTL0,#0B0H;重新装入初值MOVTH0,#3CHDEC A;累加器内容减1JNZEXTCPLP1.0MOVA,#5

16、0;累加器重置初值EXT:RETIEND,第六章 MCS-51单片机定时器/计数器,6.3.3 方式2应用,【例6-5】使用T1的方式2,晶振频率为=12MHz,以中断方式工 作,在P1.0引脚输出一个周期为100 的方波,试编写程序。,解:根据题意,只要使P1.0脚每隔50us 取反一次即可得到周期100 us的方波,因而T0的定时时间T=50us。,(1)设定TMOD(即控制字)。TMOD的高4位控制定时器/计数器1,设T1为定时模式,即C/T=0;工作方式2,即 M1M0=10;设定为软件启动定时器,即GATE=0。TMOD低4位与T1无关,一般都取0,所以TMOD的控制字为20H。,(

17、2)计算定时初值。晶振频率 为12MHz,机器周期 定时初值=256-50=206=11001110B=0CEH,第六章 MCS-51单片机定时器/计数器,(3)源程序ORG0000H AJMPMAIN;转主程序ORG001BH;T1中断矢量地址AJMPISER;转中断服务程序ORG100HMAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#20H;写控制字MOVTL1,#0CEH;置T1 初值MOVTH1,#0CEHSETBET0;允许T0中断SETB EA;CPU开中断SETBTR1;启动T1SJMP$;等待中断ISER:CPLP1.0;P1.0取反RETIEND,第六章 MCS-

18、51单片机定时器/计数器,【例6-6】使用定时器/计数器1的方式2,晶振频率为=12MHz,以查询方式工作,在P1.0引脚输出一个周期为100 us的方波,试编写程序。,解:根据题意,只要使P1.0脚每隔50 us取反一次即可得到周期100us 的方波,因而T1的定时时间T=50 us。,(1)设定TMOD(即控制字)为20H。,(2)计算定时初值。晶振频率 为12MHz,机器周期 定时初值=256-50=206=11001110B=0CEH,(3)源程序ORG100HMOVTMOD,#20H;写控制字,T1工作方式1MOVTL1,#0CEH;置T1 初值MOVTH1,#0CEHMOVIE,#

19、00H;禁止中断 SETBTR1;启动T1LOOP:JBCTF1,LOOP1;查询TF1,有溢出转 LOOP1,并清TF1。SJMPLOOPLOOP1:CPLP1.0;P1.0取反SJMP LOOP,第六章 MCS-51单片机定时器/计数器,6.3.4 方式3应用,方式3只适于T0,且T0处于方式3时,T1只能工作在方式0、方式1和方式2。T0工作在方式3时,被分为TL0和TH0两个独立的8位定时器/计数器。其中,TL0既可作定时器,也可作计数器。TH0只能作8位的定时器。,【例6-7】使用定时器/计数器0的方式3,晶振频率为=6MHz,以中断方式工作,在P1.0引脚输出一个周期为400us

20、的方波,试编写程序。,第六章 MCS-51单片机定时器/计数器,解:根据题意,只要使P1.0脚每隔200us 取反一次即可得到周期400us 的方波,因而T0的定时时间T=200us。(1)设定TMOD(即控制字)。TMOD的低4位控制定时器/计数器0,设T0为定时模式,即C/T=0;工作方式3,即 M1M0=11;设定为软件启动定时器,即GATE=0。TMOD高4位与T0无关,一般都取0,所以TMOD的控制字为03H。(2)计算定时初值。晶振频率 为6MHz,机器周期 定时初值=256-100=156=10011100B=9CH,第六章 MCS-51单片机定时器/计数器,3)源程序1使用TL

21、0 ORG0000H AJMPMAIN;转主程序ORG000BH;T0中断矢量地址AJMPISER;转中断服务程序ORG100HMAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#03H;写控制字MOVTL0,#9CH;置TL0 初值SETBET0;允许T0中断SETB EA;CPU开中断SETBTR0;启动TL0SJMP$;等待中断ISER:MOVTL0,#9CH;T0中断服务子程序,重置 T0 初值CPLP1.0;P1.0取反RETIEND,第六章 MCS-51单片机定时器/计数器,2使用TH0 ORG0000H AJMPMAIN;转主程序ORG001BH;T1中断矢量地址AJMP

22、ISER;转中断服务程序ORG100HMAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#03H;写控制字MOVTH0,#9CH;置TH0 初值SETBET1;允许T1中断SETB EA;CPU开中断SETBTR1;启动TH0SJMP$;等待中断ISER:MOVTH0,#9CH;T0中断服务子程序,重置 TH0 初值CPLP1.0;P1.0取反RETIEND,第六章 MCS-51单片机定时器/计数器,本章小结 MCS-51单片机有两个定时器/计数器,定时器采用的是对内部脉冲进行计数,计数器采用的是对外部脉冲进行计数。定时器的计数脉冲来自振荡信号的12分频,即每过一个机器周期计数器加1,

23、直至计数器溢出。计数器的外部脉冲是从T0或T1引脚输入的,外部脉冲的下降沿触发计数器计数,直至计数器溢出。通过对定时器/计数器初值的设置,可以确定计数器的溢出时间,从而实现不同的定时时间。定时器/计数器可实现定时控制、时间延时、脉冲计数、频率测量、脉宽测量、信号发生等功能,在串行通信中,还可作为波特率发生器。MCS-51单片机的定时器/计数器有两种工作模式和4种工作方式,工作方式不同其最大计数值也不同。,四、应用举例,可编程器件在使用前需要进行初始化:确定TMOD控制字:编程时将控制字送TMOD;计算计数器的计数初值:编程时将计数初值送THi、TLi;开中断(如果使用中断方式):编程实置位EA

24、、ETi TRi位置位控制定时器的启动和停止,例题1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500s的方波脉冲,并由P1.0 输出。试以中断方式实现。,TMOD确定,T1控制,T0控制,控制字10H,要产生500s 的方波脉冲,只需在P1.0端以250s为间隔,交替输出高低电平即可实现。为此,定时间应为250s。使用6z晶振,则一个机器周期为2s,设待求计数初值为,则:,计算计数器的计数初值;,(216X)210-6=25010-6 即216X=125 X216-125=10000H-7DH 0FF83H所以,初值为:TH1=0FFH,TL1=83H,采用中断方式:编程时

25、打开全局和局部中断。,由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。TR11,启动;TR10,停止。,程序设计,ORG 0000H LJMP MAIN;主程序入口 ORG 001BH LJMP INTT1;T1中断入口,INTT1:MOV TH1,#0FFH;重新设置初值 MOV TL1,#83H CPL P1.0;输出取反 RETI,ORG 1000HMAIN:MOV TMOD,#10H;T1为方式1 MOV TH1,#0FFH MOV TL1,#83H;初值 SETB EA;允许中断 SETB ET1 SETB TR1;启动定时 SJMP$;等待中断,主程序:,中断处理程序

26、:,例题2:设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定时时间。,解:1.由fOSC=6MHz可知,MC=2us;2.由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。所以此时有:方式0:(2130)2us=214us=16384us=16.384ms,方式1:(2160)2us=217us=131.072ms,方式2、3(280)2us=29us=0.512ms,注意:以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。,五、定时计数器用作外部中断扩展 在计数方式下,如果把计数器预置为全1,则只

27、要在计数输入端(T0或T1输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时计数器实现外部中断扩展的思想。具体方法是:置定时计数器为工作方式,即自动加载式位计数,以便在一次中断响应后,自动为下一次中断作准备;TH和TL均置为FFH;扩展的外部中断请求信号接计数脉冲输入端(T0或T1);把扩展的外中断服务程序存放在所占用的定时计数器中断入口地址处(000BH或001BH)。,例:以T0 实现一个外部中断扩展。则初始化程序为:MOV TMOD,#06H;00000110 MOV TH0,#0FFH MOV TL0,#0FFH SETB EA;开全局中断 SETB ET0;开T0中断 SETB TR0;准备计数将中断子程序放在T0中断入口处(000BH)。,T0计数器方式,T0方式2,

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号