单片机定时器计数器

上传人:第*** 文档编号:61114656 上传时间:2018-11-24 格式:PPT 页数:63 大小:8.04MB
返回 下载 相关 举报
单片机定时器计数器_第1页
第1页 / 共63页
单片机定时器计数器_第2页
第2页 / 共63页
单片机定时器计数器_第3页
第3页 / 共63页
单片机定时器计数器_第4页
第4页 / 共63页
单片机定时器计数器_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《单片机定时器计数器》由会员分享,可在线阅读,更多相关《单片机定时器计数器(63页珍藏版)》请在金锄头文库上搜索。

1、1,第6章 单片机的定时器/计数器,6.1 定时/计数器的结构与工作原理 6.2 定时器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用,2,6.1 定时/计数器的结构与工作原理 6.1.1 定时/计数器的基本原理 6.1.2 定时/计数器的结构 6.2 定时器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用,第6章单片机的定时器/计数器,3,纯软件定时/计数方法: 定时空循环预定周次,等待预定时间 计数读取I/O口电平,统计变化次数,基本思路:由CPU统计状态变化次数,待预定结果出现后结束统计。,delay(unsigned int time

2、) unsigned int j = 0; for(;time0;time-) for(j=0;j125;j+); ,存在问题:占用过多CPU机时,6.1.1 定时/计数器的基本原理,6.1 定时/计数器的结构与工作原理,4,单片机软硬件联合定时/计数方法:,定时器的本质是计数器(对时钟脉冲计数),计数器则是对外来脉冲计数.,6.1.1 定时/计数器的基本原理,6.1 定时/计数器的结构与工作原理,5,计数器溢出空间 = 计数器最大空间 - 计数初值,定时时间t = (计数器最大空间 - 计数初值)机器周期 =(2n-a)12/fosc (s),基本工作原理:,t与n、a、fosc三个因素有关

3、,(12分频 = 1个机器周期1个计数脉冲),逻辑开关: = 0定时器方式, = 1计数器方式,查询 /中断,6.1.1 定时/计数器的基本原理,6.1 定时/计数器的结构与工作原理,6,定数计数值 N = (计数器最大空间 - 计数初值) = (2 n a ),N与n、a两个因素有关,查询 /中断,6.1.1 定时/计数器的基本原理,6.1 定时/计数器的结构与工作原理,7,6.1 定时/计数器的结构与工作原理 6.1.1 定时/计数器的基本原理 6.1.2 定时/计数器的结构 6.2 定时器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用,第6章单片机的定时器/计数

4、器,8,51单片机定时/计数器的结构,2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)加1计数器 2个8位控制寄存器TCON和TMOD管理计数器的运行,2个外部引脚T0(P3.4)和T1(P3.5)接入外部脉冲,6.1.2 定时/计数器的结构,6.1 定时/计数器的结构与工作原理,9,6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用,第6章单片机的定时器/计数器,10,定时/计数器的控制关系(以T1为例),门控位 GATE=0允许TR1启动计数器 GATE=1允许INT1启动计数器,启动控制位

5、 TR1=1启动计数器 TR1=0停止计数器,外部中断1 参与定时器的启停管理,中断请求标志位 TF1=1请求中断 TR1=0没有中断,T1,fosc,TCON,TMOD,查询 /中断,6.2 定时/计数器的控制,11,注意! 系统上电默认值为TCON = 0,则默认状态应为:,TR0和TR1均为关闭状态、电平触发方式、没有0 # 3#中断请求,6.2 定时/计数器的控制,12,GATE,C/T,M1,M0,GATE,C/T,M1,M0,D7,D5,D4,D3,D2,D1,D0,TMOD,D6,(89H),T1,T0,T1方式选择位 00-方式0 01-方式1 10-方式2,6.2 定时/计数

6、器的控制,13,T0有4种工作方式,T1有3种工作方式,每种工作方式都有定时和计数2种方式,故共有14种组合关系。,6.2 定时/计数器的控制,14,注意:TMOD只能以字节方式进行初始化,例如,设置T0为定时方式1,允许TR0启动; T1为计数方式0,允许INT1启动。,则 TMOD = 1100 0001B =0xc1,又如,系统上电默认值为TMOD = 0,则默认状态应为:,T0和TI均为定时方式0,允许TR0、TR1启动。,6.2 定时/计数器的控制,15,6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应

7、用,第6章单片机的定时器/计数器,16,T0,注意: T1只有3种工作方式(T0的方式3中占用了T1的部分资源)。,T1,学习顺序:方式1方式2 方式0 方式3,6.3 定时/计数器的工作方式,17,(1) 方式1,定时时间:t = (216- a)12/fosc (s),使用16位定时/计数器(n=16,THx+TLx),(M0 M1为01组合时),定时范围为165,536 s(65ms)。,最大定时时间(a=0,fosc =12MHz):t = 216(s) = 65536 (s),计数初值:a = 216- tfosc/12,6.3.1 方式1,6.3 定时/计数器的工作方式,18,最大

8、计数值:N = 65536 (脉冲),定数计数值: N = (216 a ),由于检测一个负跳变需要2个机器周期,即24个振荡周期,最高计数频率= 。,计数方式,当fosc=12MHz时,外部脉冲的最大允许频率为0.5MHz 。,fosc,查询 /中断,6.3.1 方式1,6.3 定时/计数器的工作方式,19,实例1 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。,6.3.1 方式1,6.3 定时/计数器的工作方式,虚拟示波器,20,分析:周期为2ms的方波由2个半周期为1ms的正负脉冲组成,方波输出原理:定时1ms后将端口输出电平取反。,TH1 =

9、0xfc TL1 = 0x18,1ms定时的计数初值应为: a = 216 t* fos / 12 = 216 1000* 12/ 12 = 64536 = 0xfc18,注意:需要不断重装计数初值。,查询 / 中断,6.3.1 方式1,6.3 定时/计数器的工作方式,21,(1)查询方式 #include sbit P2_0 = P20; main () TMOD = 0x10; /设置T1定时方式1(0001 0000B) TR1=1; /启动T0 for(;) TH1 = 0xfc; /装载计数初值 TL1 = 0x18; do while(!TF1); /等待TF1溢出 P2_0 =!

10、P2_0; /定时时间到P2.0反相 TF1 = 0; /TF1标志清0 ,T0,6.3.1 方式1,6.3 定时/计数器的工作方式,0 0 0 1 0 0 0 0,22,实例1仿真运行效果,6.3.1 方式1,6.3 定时/计数器的工作方式,23,(2)中断方式 #include sbit P2_0=P20; timer0 () interrupt 3 /T1中断函数 P2_0 = !P2_0; /P2.0取反 TH1 = 0xfc; /装载计数初值 TL1 = 0x18; main () TMOD = 0x10; /T1定时方式1 TH1 = 0xfc; /装载计数初值 TL1 = 0x1

11、8; EA=1; /开总中断 ET1=1; /开T1中断 TR1=1; /启动T1 while(1); ,注意:中断响应后系统可自动将TFx标志位清0,6.3.1 方式1,6.3 定时/计数器的工作方式,24,小结:使用定时/计数器的步骤,强调:TMOD的设置只能以字节形式给出,T0,(1)设置TMOD确定定时/计数器的工作状态,使用T0还是T1? 采用定时模式还是计数模式? 采用工作方式0、方式1、方式2、方式3?,6.3.1 方式1,6.3 定时/计数器的工作方式,25,(2)计算计数初值产生期望的定时/定数间隔,定时计数初值 a = 216- tfosc/12 (t 65536 s, f

12、osc=12MHz时),THx = a / 256 TLx = a / % 256,装载计数初值:,定数计数初值 a = 216- N (N65536, 脉冲频率0.5MHz,fosc=12MHz时),6.3.1 方式1,6.3 定时/计数器的工作方式,26,(3)确定采用何种方式处理溢出结果,若是查询方式采用条件判断语句,若是中断方式中断初始化设置和中断服务程序:,do while (!TFx) ; / x=0或1 ,ETx =1; /开定时x中断,x=0或1 EA = 1; /开总中断 tx_srv () interrupt n /n=1或3 ,6.3.1 方式1,6.3 定时/计数器的工

13、作方式,27,4)启动定时器: TR0 = 1 或 TR1= 1,5)进行定时或计数结束后的其它工作,6)为下次定时/计数做准备(清TFx标志+重装载计数初值) 若是中断方式,则无需软件清TFx标志位; 若是查询方式,需要软件清除TFx标志位。,6.3.1 方式1,6.3 定时/计数器的工作方式,28,采用8位计数器,TLx 可自动重装载计数初值(TLx溢出后, THxTLx); 没有装载计数初值的延误,方式2定时精度相对较高; 延时时间 t = (28-a)12/fosc (微秒) 12MHz时的最大定时量为256s;,(2) 方式2,6.3.2 方式2,6.3 定时/计数器的工作方式,29

14、,(1)查询方式 #include sbit P2_0 = P20; main() TMOD = 0x02; TH0= TL0 = 0x06; TR0=1; for(;) do while(!TF0); P2_0 =!P2_0; TF0 = 0; ,(2)中断方式 #include sbit P2_0=P20; timer0 () interrupt 1 P2_0 = !P2_0; main() TMOD = 0x02; TH0 = TL0 = 0x06; EA= ET0 = 1; TR0=1; while(1); ,实例2 采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc

15、=12MHz)。,分析:计数初值TL0= (256-250)*12/12)%256 = 0x06,TMOD = 0x02,6.3.2 方式2,6.3 定时/计数器的工作方式,30,实例2仿真运行效果,6.3.2 方式2,6.3 定时/计数器的工作方式,31,实例3 改进 “计数显示器” 的按键查询检测法,改用T0计数方式2 + 中断法实现原有功能。,【解】电路改造:按键由P3.7改为P3.4(T0)接入。,6.3.2 方式2,6.3 定时/计数器的工作方式,32,分析:T0计数方式2的初始化;定数计数N=1时的初值计算;T0中断初始化。 T0计数方式2:TMOD = 0000 0110B = 0x06 计数初值: a = 2 8 1 = 255 = 0xff T0中断初始化:ET0 = EA = 1,6.3.2 方式2,6.3 定时/计数器的工作方式,33,实例3参考程序,6.3.2 方式2,6.3 定时/计数器的工作方式,34,实例3运行效果,6.3.2 方式2,6.3 定时/计数器的工作方式,35,(3)工作方式0 使用13位的定时/计数器(THx7-0+TLx4-0),定时时间 t = (213 - a)12/fosc (s),计数初值 a =

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

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

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