单片机AT89S52定时器计数器.ppt
《单片机AT89S52定时器计数器.ppt》由会员分享,可在线阅读,更多相关《单片机AT89S52定时器计数器.ppt(76页珍藏版)》请在三一办公上搜索。
1、1,第8章 定时器/计数器,第一节 概述第二节 模式0、模式1及其应用第三节 模式2及其应用第四节 模式3及其应用第五节 定时器/计数器2,2,第一节 概述,回忆8051结构特点:由单一内部总线连接各功能模块,通过特殊功能寄存器(SFR)集中控制。嵌入式结构,不同型号引脚定义和SFR定义有所不同,因此,从两个方面来认识和掌握某一个功能模块。相关引脚功能相关SFR功能,4,两个16位定时计数器,最大计数范围:0000-FFFFH。相关的SFR:TMOD、TCON、TH0、TL0、TH1、TL1。相关引脚:T0、T1、INT0、INT1。4种工作方式。,8051定时器/计数器概况,5,T0、T1相
2、关引脚,T0、T1:计数脉冲输入,定时方式时不用,作I/OINT0、INT1:与定时器运行控制有关,也可以无关,可编程设定,6,T0、T1相关SFR,7,定时器/计数器原理,8,定时功能:对固定频率的机器周期计数,每个机器周期定时器加1,计数速率=Fosc/12计数功能:对外部引脚(T0和T1)上的负跳变计数,每产生 一个负跳变,计数器加1,要求高低电平均要大 于1Tm,计数速率Fosc/24,9,以N位计数器构为核心,要解决以下问题:(1)、何时控制启动、停止计数?(2)、如何控制定时还是计数?(3)、如何控制定时/计数的长短?(4)、如何用查询或中断管理溢出事件?,10,GATE 选通门:
3、GATE=0时,只要TRx=1,计数器就开始工作;GATE=1时,只有INTx脚和TRx同时为“1”时,计数器才开始工作.主要用于测量INTx脚上高电平脉冲的宽度.C/T 计数/定时方式选择位:C/T=1时,计数方式.即计数器的计数脉冲来自T0或T1引脚的外部事件.C/T=0时:定时方式,计数脉冲来自内部振荡频率fosc的12分频.,模式寄存器TMOD(SFR的地址:89H,不可按位寻址),11,M1、M0 模式选择:分别对应四种模式.M1 M0=00,方式0:13位定时计数器M1 M0=01,方式1:16位定时计数器M1 M0=10,方式2:自动重装入的8位定时计数器M1 M0=11,方式3
4、:T0成为两个独立的8位计数器,12,T=(M-TC)t 其中,T:定时时间,M:计数器的模,TC:计数初值,t:计数器计数脉冲的周期(对于定时方式t=fosc/12)。,定时/计数器4种模式比较,13,TF1,TF0 定时器T1,T0的溢出标志:计数器溢出时硬件自动置位,即TFx=1,进入中断后再由硬件自动清除;TR1,TR0 计数器T1,T0的控制位:由软件置位(计数器开始工作)或清零(计数器停止工作).IE1,IE0 外部中断INT1,INT0的请求标志:当单片机检测到INTx引脚上有低电平或下降沿时,IEx=1,申请中断.IT1,IT0 外中断触发类型控制:ITx=1时,外中断信号的下
5、降沿触发IEx标志,ITx=0时,外中断信号的低电平触发IEx标志.,控制寄存器TCON(SFR地址:88H),(LSB),(MSB),14,第一节 概述第二节 模式0、模式1及其应用第三节 模式2及其应用第四节 模式3及其应用第五节 定时器/计数器2,15,Timer/Counter 0/1 Mode 0:13-Bit Counter(Timer 1 shown),16,Timer/Counter 0/1 Mode 1:16-Bit Counter(Timer 0 shown),17,1、设置GATE=0,则GATE=1,因此Y=TR0,这样:TR0=1;启动定时器T0运行 TR0=0;停止
6、定时器T0运行我们把这种控制定时器运行的方法叫软触发,最常用。2、设置GATE=1,则GATE=0,因此Y=TR0*INT0电平,进一步令TR0=1,则Y=INT0电平,这样:INT0为高电平,启动定时器T0运行 INT0为低电平,停止定时器T0运行我们把这种控制定时器运行的方法叫硬触发,较少用,可以用来测量正脉冲的宽度。,定时器/计数器运行控制方法,18,根据要求给方式寄存器TMOD送一个方式控制字,以设定定时器的工作方式;(要考虑定时/计数范围,重装方式)根据需要给C/T送初值以确定需要的定时时间或计数次数;(可选,缺省为0000)根据需要给中断允许寄存器IE送中断控制字,以开放相应的中断
7、和设定中断优先级;(可选)给TCON送命令字以启动或禁止C/T的运行。,定时器/计数器的初始化方法,19,计数器初值:设计数模值为M,计数初值设定为TC,计数器计满为零所需的计数值为C,则:TC=M-C(M=213,216,28)定时器初值:T=(M-TC)Tm,T为需要定时时间 初值TC=M-T/Tm当定时或计数范围大于某一模式下的计数范围时,要用软件对溢出计数,以增加定时或计数的范围。,初值的计算,20,例:Fosc=12MHz,试计算定时时间2ms所需的定时器的初值.,方式2、方式3 TMAX=0.256ms,所以必须将工作方式设在方式0或方式1方式0:TC=213-2ms/1us=61
8、92=1830H TL0=10H,TH0=0C1H注意1830H到TH0、TL0的重新表达,主要是由于TL0已经不是每256进1,而是每32进1方式1:TC=216-2ms/1us=63536=0F830H TL0=30H,TH0=0F8H,21,采用查询方式:程序一直检测TF0(或TF1),若TF01(或TF1=1),说明定时时间到或计满数,从而开始相应处理,如:while(TF0=0);/while(!TF0);TF0=0;/清除标志位/开始处理溢出事件 采用中断方式:程序初始化时,设置定时器溢出中断允许后,内部硬件自动检测到TF01(或TF1=1)时,自动响应中断,进入中断服务程序。,C
9、PU控制C/T的方式,22,例1:在P1.7引脚上输出50Hz的方波,已知Fosc=12MHz。,23,解决定时器/计数器应用问题的一般流程,确定定时/计数对象 C/T初始化 工作模式 计算初值 中断或查询 启动C/T运行 编程实现,24,1、确定定时对象:20ms 或 10ms?应当为10ms,便于产生方波:每隔10ms引脚电平取反。2、Fosc=12MHz,1Tm=1us,产生10ms定时,应选择模式0、1、2、3?应选择模式1,16位定时器,最大范围65.536ms。,分析:50Hz的方波,周期为1/50=20ms,25,3、计算初值 TC=65536-10ms/1us=55536=0D
10、8F0H,分析:50Hz的方波,周期为1/50=20ms,26,编程实现(查询方式),#include/要用到SFRsbit SQW=P17;/*定义输出方波引脚*/main()TMOD=0 x01;/*T0 模式1,定时,GATE=0*/TR0=1;/*启动 T0 运行*/while(1)/*无限循环作为main的结束*/TH0=0 xD8;TL0=0 xF0;/*每次要重新赋10ms 定时的初值*/while(!TF0);TF0=0;/*查询等10ms时间到,并清除标志*/SQW=!SQW;/*引脚每隔10ms电平取反,产生50Hz方波*/,27,编程实现(中断方式),#include/*
11、要用到SFR*/sbit SQW=P17;/*定义输出方波引脚*/main()/*主程序*/TMOD=0 x01;/*T0 模式1,定时,GATE=0*/TH0=0 xD8;/*赋初值*/TL0=0 xF0;ET0=1;EA=1;/*允许T0中断*/TR0=1;/*启动 T0 运行*/while(1);/*无限循环作为main的结束*/,28,编程实现(中断方式),void out_sqw(void)interrupt 1/*中断服务程序*/*TF0 标志被自动清除*/SQW=!SQW;/*引脚每隔10ms电平取反,产生50Hz方波*/TH0=0 xD8;TL0=0 xF0;/*重赋初值*/,
12、29,例2:在P1.0引脚上输出周期1秒,占空比为20%的方波,已知Fosc=12MHz。,30,1、确定定时对象:1s、200ms 或 800ms?应当小于定时器的最大定时时间,对于模式1,最长为65.536ms,为了便于计算,取50ms作为定时对象,再用一个字节对溢出计数。50ms*4=200 ms50ms*16=800 ms,分析:占空比20%的方波,周期为1s,31,2、Fosc=12MHz,1Tm=1us,产生50ms定时,应选择模式0、1、2、3?应选择模式1,16位定时器,最大范围65.536ms。在所有工作模式中,模式1的定时/计数范围是最大的。,分析:占空比20%的方波,周期
13、为1s,32,3、计算初值 TC=65536-50ms/1us=15536=3CB0H,分析:占空比20%的方波,周期为1s,33,编程实现(查询方式),#include/要用到SFRsbit SQW=P10;/*定义输出方波引脚*/bit will_be_high=0;/*定义一个标志位,0:将要输出低电平,1:将要输出高电平*/unsigned char overflow_counter=16;/*由800ms低电平开始,减到0,时间到,改200ms定时,overflow_counter=4*/main()TMOD=0 x10;/*T1 模式1,定时,GATE=0*/TH1=0 x3C;T
14、L1=0 xB0;/*赋50ms定时初值*/TR1=1;/*启动 T1 运行*/,34,编程实现(查询方式),for(;)/*无限循环作为main的结束*/*如果要输出高电平,则输出高电平,4*50ms,下一次将为低电平;否则输出低电平,16*50ms,下一次将为高电平*/if(will_be _high)overflow_counter=4;SQW=1;will_be _high=0;else overflow_counter=16;SQW=0;will_be _high=1;do while(!TF1);TF1=0;/*查询等50ms时间到,并清除标志*/TH1=0 x3C;TL1=0 x
15、B0;/*每次要重新赋50ms 定时的初值*/while(-overflow_counter);/end of for(;)/end of main,35,编程实现(中断方式),#include/要用到SFRsbit SQW=P10;/*定义输出方波引脚*/bit is_high=0;/当前状态unsigned char overflow_counter=16;/*由800ms低电平开始,减到0,时间到,改200ms定时,overflow_counter=4*/main()TMOD=0 x10;/*T1 模式1,定时,GATE=0*/TH1=0 x3C;TL1=0 xB0;/*赋50ms定时初
16、值*/ET1=1;EA=1;/*允许T1中断*/TR1=1;/*启动 T1 运行*/SQW=0;/*输出低电平*/while(1);/*无限循环作为main的结束*/,36,编程实现(中断方式),void out_sqw(void)interrupt 3/*中断服务程序*/*TF1 标志被自动清除*/TH1=0 x3C;TL1=0 xB0;/*重赋50ms定时初值*/if(-overflow_counter!=0)return;/*定时未到返回*/if(is_high)overflow_counter=16;SQW=0;is_high=0;else overflow_counter=4;SQW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 AT89S52 定时器 计数器
链接地址:https://www.31ppt.com/p-5937813.html