最新单片机培训5-定时器计数器与中断系统

上传人:tian****1990 文档编号:74889050 上传时间:2019-01-29 格式:PPT 页数:94 大小:1,007.31KB
返回 下载 相关 举报
最新单片机培训5-定时器计数器与中断系统_第1页
第1页 / 共94页
最新单片机培训5-定时器计数器与中断系统_第2页
第2页 / 共94页
最新单片机培训5-定时器计数器与中断系统_第3页
第3页 / 共94页
最新单片机培训5-定时器计数器与中断系统_第4页
第4页 / 共94页
最新单片机培训5-定时器计数器与中断系统_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《最新单片机培训5-定时器计数器与中断系统》由会员分享,可在线阅读,更多相关《最新单片机培训5-定时器计数器与中断系统(94页珍藏版)》请在金锄头文库上搜索。

1、1,定时器/计数器与中断系统,周剑峰,2,MCS-51单片机的定时器/计数器,3,一、MCS-51单片机定时器计数器组成: 定时器/计数器0(T0):16位的加计数器 定时器/计数器1(T1):16位的加计数器 二、定时器/计数器的功能 对外部输入信号的计数功能。定时器/计数器0(T0)的外来脉冲输入端为P3.4;定时器/计数器1(T1)的外来脉冲输入端为P3.5。 定时功能。定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单片机的片内振荡器输出经12分频后产生的信号,即为对机器周期计数。,MCS-51单片机的定时器/计数器,4,MCS-51单片机定时器/计数器逻辑结构图,T1由T

2、H1、TL1构成,字节地址为8DH、8BH,T0由TH0、TL0构成,字节地址为8CH、8AH,TCON则用于控制定时计数器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。,特殊功能寄存器TMOD控制定时计数器的工作方式,5,定时器/计数器的控制主要是通过以下几个寄存器实现的: TCON-定时器/计数器控制寄存器 TMOD-定时器/计数器工作方式控制寄存器 IE -中断允许控制寄存器,定时器/计数器的控制,6,TMOD 89H,GATE 门控位。 GATE = 0 启动不受 /INT0或 /INT1的控制,TCON的TR0或TR1置1,启动定时器工作; GATE = 1 ,

3、/INT0 或 /INT1 为高电平, 且TCON的TR0或TR1置1,启动定时器工作。,C/T 外部计数器 / 定时器方式选择位 C/T = 0 定时方式; C /T = 1 计数方式。,M1M0 工作方式选择位(编程可决定四种工作模式)。,7,方式寄存器TMOD,M1和M0 方式选择位,8,= 0 定时; = 1 对外计数。 定时:fosc / 12 = 1 /(12/fosc) = 1 / T,计数:脉冲不等间隔。,波形等间隔,次数已定,时间确定 即对机器周期进行计数。,左图定时时间为 N*T,每个下降沿计数一次 确认一次负跳变需两个机器周期, 所以,计数频率最高为fosc / 24。,

4、9,TCON 88H,TF0、TF1 分别是定时、计数器T0、T1的溢出标志位。,10,(1)定时/计数器的工作方式,M1M0 工作模式选择位(编程可决定四种工作模式) 0 0 13位定时/计数器 模式0 0 1 16位定时/计数器 模式1 0 8 位定时/计数器(自动重装初值) 模式2 1 1 T0 8位定时/计数 模式3 1 1 T1 停止工作 模式3,11,1)工作方式0,T0的等效逻辑结构,12,在计数工作方式0下,计数器的计数值范围是: 18192(2的13方) 当为定时工作方式时,定时时间的计算公式为: ( 8192 -计数初值)晶振周期12 或 ( 8192 -计数初值)机器周期

5、 其时间单位与晶振周期或机器周期相同。 16位寄存器只用13位,TL0/TL1的高3位未用。 如果单片机的晶振选为6.000MHz,则最小定时时间为: 8192(81921)1/610-612=210-6(s)=2(us) 最长定时时间为: (81920)1/610-612=1638410-6(s)=16384(us)。,13,2)工作方式1,T0的等效逻辑结构,14,在工作方式1下,计数器的计数值范围是: 165536(2的16方) 当为定时工作方式1时,定时时间的计算公式为: (65536计数初值) 晶振周期12 或 (65536计数初值) 机器周期 其时间单位与晶振周期或机器周期相同。

6、如果单片机的晶振选为6.000MHz,则最小定时时间为: 65536(655361)1/610-612=210-6(s)=2(us) 最长定时时间为: (655360)1/610-612=13107210-6(s)=131072(us)。,15,3)工作方式2,T0的等效逻辑结构,16,方式2与方式0、1的区别: 工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。 工作方式2就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,16位计

7、数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。 方式2在串口通讯时,常用作波特率发生器。,17,4)工作方式3,18,如果定时/计数器0工作于工作方式3,那么定时/计数器1的工作方式就因为自己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或方式2下,T1等效电路参见下图:,19,2.怎样编制计数程序?,首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,定时计数器的初始化包括

8、以下内容。,(1)确定工作方式对TMOD赋值; 如:任务中的MOV TMOD,#06H指令,设定T0为计数器工作方式。 (2)预置定时计数器中计数的初值直接写入TH和TL; 如:任务中的MOV TH0,#00H 两条指令,设定计数初值。 MOV TL0,#00H,20,(3)根据需要开放定时器/计数器的中断对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。 工作方式0: 13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。 工作方式1: 16位定时/计数方式,因此,最

9、多可以计到2的16次方,也就是65536次。 工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次。,21,预置值计算: 用最大计数量减去需要的计数次数即可。 通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。 首先我们看一下下面的程序段。 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4CH SETB TR0 以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。,22,MCS-51单片机的定时器/计数器应用举例: 利用定时器/计数器实现固定时间的定时 利用定时器/计数器实现对外来信号脉冲

10、的计数 利用定时器/计数器实现对外来信号脉冲信号脉宽的测量,MCS-51单片机的定时器/计数器,23,实例一:定时器/计数器实现固定时间的定时 题目:利用T0,使用工作方式0,在单片机的P1.0输出一个周期为2ms,占空比为1:1的方波信号。 解:周期为2ms,占空比为1:1的方波信号,只需要利用T0产生定时,每隔1ms将P1.0取反即可。 编程步骤: 计算TMOD的值 由于GATE=0;M1M0=00;C/T=0; 所以 (TMOD)00H 计算初值(单片机振荡频率为12MHZ) 所需要的机器周期数: n=(1000us/1us)=1000 计数器的初始值: 8192-1000=7192 =

11、 1 1100 0001 1000B=1C18H 所以:(TH0)=E0H,(TL0)=18H,24,主程序:,中断程序:,流程图,25,3:程序清单 ORG 0000H LJMP MAIN ORG 000BH ;T0中断入口地址 LJMP SER ;中断服务程序 MAIN:MOV SP,#50H ;开辟堆栈 MOV TMOD,#00H ;工作方式设置 MOV TH0,#E0H ;初始值设置 MOV TL0,#18H SETB EA ;开中断 SETB ET0 ;开T0中断 SETB TR0 ;运行T0 HERE:SJMP $ ;等待中断 SER:CPL P1.0 ;定时到,输出取反 MOV

12、TH0,#E0H ;重新加载初战值 MOV TL0,#18H RETI ;中断返回 END,中断程序的主程序和中断服务程序的布局,定时器初始化,开定时器中断,主程序,中断服务程序,26,实例二:利用方式1定时 题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占空比为1:1的方波信号。 解:周期为2分钟,占空比为1:1的方波信号,只需要利用T1产生定时,每隔1分将P1.0取反即可。 由于定时器定时时间有限,设定T1的定时为50ms,软件计数1200次,可以实现1分钟定时。 编程步骤: 1、计算TMOD的值 由于:GATE=0;M1、M0=0、1;C/T=0; 所以:(

13、TMOD)10 、计算初值(单片机的振荡频率为12MHZ) 所需要的机器周期数: n=(50000us/1us)=50000 计数器的初始值:65536-50000=15536 所以:(TH0)=3CH;(TL0)=0B0H,27,主程序:,中断程序:,流程图,28,程序清单 ORG 0000H LJMP MAIN ORG 001BH ; T1中断入口地址 LJMP SER ; 中断服务程序 MAIN:MOV SP,#50H ; 开辟堆栈 MOV TMOD,#10H ; 工作方式设置 MOV TH1,#3CH ; 初始值设置 MOV TL1,#0B0H SETB EA ; 开中断 SETB E

14、T1 ; 开T1中断 SETB TR1 ; 运行T1 MOV 20H,#20 MOV 21H,#60 HERE:SJMP $ ; 等待中断,中断程序的主程序和中断服务程序的布局,定时器初始化,开定时器中断,主程序,计数单元赋初值,29,SER: MOV TH1,#3CH ;初始值重新设置 MOV TL1,#0B0H DJNZ 20H,NO MOV 20H,#20 DJNZ 21H,NO MOV 21H,#60 CPL P1.0 ;定时到,输出取反 NO:RETI ;中断返回 END,中断服务程序,判断中断的次数,思考:能否利用定时器来实现一个电子钟?,注意:此程序的#20和#60这两个立即数后

15、面没有加H表示是十进制数。,30,要求: 每秒的次数用发光管显示出来 每秒钟按键的按下次数不超过255次,测量每1秒钟之内的按键按下次数,31,实现的方法:利用T0计数器对从T0输入的脉冲进行计数,利用T1工作于定时。每定时达到1秒钟,取出计数器的值进行显示。由于每秒钟按键的按下次数不超过255次,所以只需要显示TL0的内容即可。 步骤: 由于定时器的最大定时时间不能够达到1秒钟,我们设定T1定时100mS,每10次取一次计数值。 设定TMOD,TH1,TL1的内容,(fosc)=6MHz 所以:(TMOD)=51H (TH1)=3CH (TL1)=0B0H,工作原理,32,ORG 0000H LJMP MAIN ORG 001BH LJMP SER MAIN: MOV R1,#10 MOV TMOD,#51H MOV TH1,#3CH MOV TL1,#0B0H MOV TL0,#00H

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号