




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第6章 单片机的定时器/计数器6.1 定时/计数器的结构与工作原理6.2 定时器的控制6.3 定时/计数器的工作方式6.4 定时/计数器的编程和应用6.1 定时定时/计数器的结构与工作原理计数器的结构与工作原理 6.1.1 定时定时/计数器的基本原理计数器的基本原理 6.1.2 定时定时/计数器的结构计数器的结构6.2 定时器的控制6.3 定时/计数器的工作方式6.4 定时/计数器的编程和应用第6章单片机的定时器/计数器纯软件纯软件定时/计数方法:定时空循环预定周次,等待预定时间计数读取I/O口电平,统计变化次数基本思路基本思路:由CPU统计状态变化次数,待预定结果出现后结束统计。delay
2、(unsigned int time ) unsigned int j = 0; for(;time0;time-) for(j=0;j125;j+);存在问题存在问题:占用过多CPU机时第6章单片机的定时器/计数器单片机软硬件联合软硬件联合定时/计数方法:外来信号脉冲加1计数器TFx1溢出查询或中断计数器计数器外来信号脉冲加1计数器 TFx1溢出查询或中断系统时钟脉冲K定时定时/计数器计数器定时器的本质是计数器定时器的本质是计数器(对时钟脉冲计数对时钟脉冲计数),计数器则是对外来脉冲计数,计数器则是对外来脉冲计数.第6章单片机的定时器/计数器(已知剩余空间) 查询或中断系统时钟脉冲加1计数器
3、 TFx1溢出定时器定时器(中断请求标志)计数器溢出空间 = 计数器最大空间 - 计数初值定时时间t = (计数器最大空间 - 计数初值)机器周期 =(2n-a)12/fosc (s)基本工作原理:t与与n、a、fosc三个因素有关三个因素有关(12分频 = 1个机器周期1个计数脉冲) 第6章单片机的定时器/计数器逻辑开关: = 0定时器方式, = 1计数器方式 TCTC TFx(X = 0、1)Tx端 fosc2n计数初值溢出空间a查询查询 /中断中断第6章单片机的定时器/计数器定数计数值 N = (计数器最大空间 - 计数初值) = (2 n a ) N与与n、a两个因素有关两个因素有关
4、TFx(X = 0、1)Tx端 fosc查询查询 /中断中断6.1 定时定时/计数器的结构与工作原理计数器的结构与工作原理 6.1.1 定时定时/计数器的基本原理计数器的基本原理 6.1.2 定时定时/计数器的结构计数器的结构6.2 定时器的控制6.3 定时/计数器的工作方式6.4 定时/计数器的编程和应用第6章单片机的定时器/计数器51单片机定时/计数器的结构第6章单片机的定时器/计数器2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)加1计数器2个8位控制寄存器TCON和TMOD管理计数器的运行2个外部引脚T0(P3.4)和T1(P3.5)接入外部脉冲6.1 定时/计数器的
5、结构与工作原理6.2 定时器定时器/计数器的控制计数器的控制6.3 定时/计数器的工作方式6.4 定时/计数器的编程和应用第6章单片机的定时器/计数器定时/计数器的控制关系(以T1为例)门控位门控位GATE=0允许TR1启动计数器GATE=1允许INT1启动计数器启动控制位启动控制位TR1=1启动计数器TR1=0停止计数器外部中断外部中断1参与定时器的启停管理中断请求标志位中断请求标志位TF1=1请求中断TR1=0没有中断 T1第6章单片机的定时器/计数器TCTC模式选择位模式选择位 =0定时 =1计数 foscTCONTMOD查询 /中断TF1TR1TF0TR0IE1IT1IE0IT08FH
6、8DH8CH8BH8AH89H88HTCON8EH(88H)定时器控制位外部中断控制位注意注意,系统上电默认值为TCON = 0,则默认状态应为:TR0和TR1均为关闭状态、电平触发方式、没有0 # 3#中断请求第6章单片机的定时器/计数器 T1 T0 TF0 TR0 T0脚INT0 fosc fosc查询/中断查询/中断GATEC/TM1M0GATEC/TM1M0D7D5D4D3D2D1D0TMODD6(89H) T1 T0/C T /C T T1方式选择位方式选择位00-方式001-方式110-方式2T1工作状态T0方式选择位方式选择位00-方式001-方式110-方式211-方式3T0工
7、作状态第6章单片机的定时器/计数器 T1 T0 TF0 TR0 T0脚INT0 fosc fosc查询/中断查询/中断第6章单片机的定时器/计数器T0T1定时方式0计数方式0定时方式0计数方式0定时方式1计数方式1定时方式1计数方式1定时方式2计数方式2定时方式2计数方式2定时方式3计数方式3T0有4种工作方式,T1有3种工作方式,每种工作方式都有定时和计数2种方式,故共有14种组合关系。GATEC/TM1M0GATEC/TM1M0D7D5D4D3D2D1D0TMODD6(89H) T1 T0/C T /C T 注意注意:TMOD只能以字节方式进行初始化例如例如,设置T0为定时方式1,允许TR
8、0启动; T1为计数方式0,允许INT1启动。则 TMOD = 1100 0001B =0 xc1又如又如,系统上电默认值为TMOD = 0,则默认状态应为:T0和TI均为定时方式0,允许TR0、TR1启动。第6章单片机的定时器/计数器6.1 定时/计数器的结构与工作原理6.2 定时器/计数器的控制6.3 定时定时/计数器的工作方式计数器的工作方式6.4 定时/计数器的编程和应用第6章单片机的定时器/计数器第6章单片机的定时器/计数器M1M0工作方式功能说明00110101012313位定时/计数器16位定时/计数器8位自动重装定时/计数器3种定时/计数器关系T0注意注意:T1只有3种工作方式
9、(T0的方式3中占用了T1的部分资源)。M1M0工作方式功能说明00101001213位定时/计数器16位定时/计数器8位自动重装定时/计数器T1学习顺序:方式1方式2 方式0 方式3 (1) 方式1定时时间:t = (216- a)12/fosc (s)使用16位定时/计数器(n=16,THx+TLx)(M0 M1为01组合时)第6章单片机的定时器/计数器定时范围为165,536 s(65ms)。 最大定时时间(a=0,fosc =12MHz):t = 216(s) = 65536 (s)计数初值:a = 216- tfosc/12定时方式定时方式 fosc查询 /中断最大计数值:N = 6
10、5536 (脉冲)第6章单片机的定时器/计数器定数计数值: N = (216 a ) 由于检测一个负跳变需要2个机器周期,即24个振荡周期,最高计数频率= 。oscf241计数方式计数方式当fosc=12MHz时,外部脉冲的最大允许频率为0.5MHz 。 fosc查询 /中断实例实例1 1 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。虚拟示波器第6章单片机的定时器/计数器XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD5
11、34P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U?80C51ABCDR1100D1LED-YELLOW分析分析:周期为2ms的方波由2个半周期为1ms的正负脉冲组成方波输出原理:定时1ms后将端口输出电平取反。
12、2ms1msTH1 = 0 xfc TL1 = 0 x181ms定时的计数初值应为:a = 216 t* fos / 12 = 216 1000* 12/ 12 = 64536 = 0 xfc18 注意注意:需要不断重装计数初值。第6章单片机的定时器/计数器查询 /中断(1)查询方式查询方式#include sbit P2_0 = P20;main () TMODTMOD = = 0 x100 x10; /设置T1定时方式1(0000001 1 000 0000B0B) TR1=1; /启动T0 for(;) THTH1 1 = = 0 0 xfcxfc; /装载计数初值 TLTL1 1 =
13、= 0 0 x18x18; dodo while(!TF while(!TF1 1) ); /等待TF1溢出 P2_0 =!P2_0; /定时时间到P2.0反相 TFTF1 1 = = 0 0; /TF1标志清0 T0第6章单片机的定时器/计数器实例1仿真运行效果第6章单片机的定时器/计数器(2)中断方式中断方式#include sbit P2_0=P20;timer0 () interrupt 3 timer0 () interrupt 3 /T1中断函数 P2_0 = !P2_0; /P2.0取反 TH1 = 0 xfc;TH1 = 0 xfc; /装载计数初值 TL1 = 0 x18;T
14、L1 = 0 x18;main () TMOD = 0 x10TMOD = 0 x10; /T1定时方式1TH1 = 0 xfc;TH1 = 0 xfc;/装载计数初值 TL1 = 0 x18;TL1 = 0 x18; EA=1; EA=1; /开总中断 ET1=1; ET1=1; /开T1中断 TR1=1; TR1=1; /启动T1while(1);注意注意:中断响应后系统可自动将TFx标志位清0第6章单片机的定时器/计数器小结:使用定时/计数器的步骤强调强调:TMOD的设置只能以字节形式给出T0 (1)设置TMOD确定定时/计数器的工作状态使用T0还是T1?采用定时模式还是计数模式?采用工
15、作方式0、方式1、方式2、方式3?第6章单片机的定时器/计数器 (2)计算计数初值产生期望的定时/定数间隔定时计数初值 a = 216- tfosc/12 (t 65536 s, fosc=12MHz时)THx = a / 256 TLx = a % 256 装载计数初值:第6章单片机的定时器/计数器定数计数初值 a = 216- N (N65536, 脉冲频率0.5MHz,fosc=12MHz时)3)确定采用何种方式处理溢出结果若是查询方式采用条件判断语句若是中断方式中断初始化设置和中断服务程序:do while (!TFx) ; / x=0或1 第6章单片机的定时器/计数器ETx =1;
16、/开定时x中断,x=0或1EA = 1; /开总中断tx_srv () interrupt n n /n=1或3 4)启动定时器: TR0 = 1 或 TR1= 1 5)进行定时或计数结束后的其它工作6)为下次定时/计数做准备(清TFx标志+重装载计数初值) 若是中断方式,则无需软件清TFx标志位; 若是查询方式,需要软件清除TFx标志位。第6章单片机的定时器/计数器 采用8位计数器位计数器,TLx 可自动重装载计数初值可自动重装载计数初值(TLx溢出后, THxTLx); 没有装载计数初值的延误,方式2定时精度相对较高; 延时时间 t = (28-a)12/fosc (微秒) 12MHz时的
17、最大定时量为256s;(2) 方式2第6章单片机的定时器/计数器查询 /中断 fosc(1)查询方式查询方式#include sbit P2_0 = P20;main() TMOD = 0 x020 x02; THTH0 0= = TLTL0 = 0 x060 = 0 x06; TR0=1; for(;) do while(!TF0); P2_0 =!P2_0; TF0 = 0; (2)中断方式中断方式#include sbit P2_0=P20;timer0 () interrupt 1 1 P2_0 = !P2_0; main() TMOD = 0 x020 x02; TH0 = TL0
18、= 0 x06;TH0 = TL0 = 0 x06; EA= ET0 = 1; TR0=1; while(1);实例实例2 2 采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc=12MHz)。分析分析:计数初值TL0= (256-250)*12/12)%256 = 0 x06,TMOD = 0 x02第6章单片机的定时器/计数器实例2仿真运行效果第6章单片机的定时器/计数器第6章单片机的定时器/计数器实例实例3 改进 “计数显示器” 的按键查询检测法,改用T0计数方式2 + 中断法实现原有功能。【解解】电路改造:按键由P3.7改为P3.4(T0)接入。 第6章单片机的定时器
19、/计数器分析分析:T0计数方式2的初始化;定数计数N=1时的初值计算;T0中断初始化。T0计数方式2:TMOD = 0000 0110B = 0 x06计数初值: a = 2 8 1 = 255 = 0 xffT0中断初始化:ET0 = EA = 1查询 /中断 fosc第6章单片机的定时器/计数器实例3参考程序第6章单片机的定时器/计数器实例3运行效果(3)工作方式0使用13位位的定时/计数器(THx7-0+TLx4-0)定时时间 t = (213 - a)12/fosc (s)计数初值 a = 213 - tfosc/1212MHz时的最大定时量t=213s = 8.192ms第6章单片机
20、的定时器/计数器查询 /中断 fosc解:计数初值a=213-500012/12=3192= 1100 0111 1000BTH0TL00 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 6 3 1 8 H 实例实例4 计算T0方式0定时5ms的计数初值a(设fosc=12MHz)由于方式0的TL0高3位未用(一般填0) ,因此 a= 0110 0011 0001 1000 = 6318H即,TH0 = 0 x63; TL0 = 0 x18;第6章单片机的定时器/计数器第6章单片机的定时器/计数器除计数器位数不同外,方式0与方式1的逻辑结构并无差异。方式0采用13位计数器是为了与早
21、期产品MCS-48单片机兼容。方式0的初值计算比较麻烦,一般采用方式1替代。方式0方式1查询/中断查询/中断 fosc fosc(4)方式)方式3(仅有(仅有T0)通常设定为定时方式2(串行通信的波特率发生器)第6章单片机的定时器/计数器TH0+TF1+TR1组成的8位定时器(方式2但无重装载功能)TL0+TF0+TR0组成的8位定时/计数器(方式2但无重装载功能)T1组成的无中断标志位的定时/计数器(方式0方式2)特点特点:方式3下T0可有2个具有查询/中断功能的8位定时器 外加1个没有查询/中断功能的T1定时/计数器查询 /中断查询 /中断 fosc fosc6.1 定时/计数器的结构与工
22、作原理6.2 定时器/计数器的控制6.3 定时/计数器的工作方式6.4 定时定时/计数器的编程和应用计数器的编程和应用第6章单片机的定时器/计数器应用: 定时器用于定时控制,或作为分频器发生各种不同频率的方波; 计数器用于外部脉冲统计或外部中断源扩充; 复杂应用需要将定时与计数结合起来。第6章单片机的定时器/计数器实例实例5 5 由P3.4口输入一个低频窄脉冲信号。当该信号出现负跳变时,由P3.0口输出宽度为500s的同步脉冲,如此往复。要求据此设计一个波形展宽程序(fosc= 6MHz)。第6章单片机的定时器/计数器500s500s1)将T0设置为1 1次计数方式次计数方式2 2,初值设为0
23、 xff。这样P3.4一旦发生负跳变T0就会产生溢出;2)查询TF0标志位。当TF0=1时将T0设置为500500 s s定时方式定时方式2 2,初值a为0 x06(=256-5006/12),同时使P3.0输出低电平;3)查询TF0标志位。待T0再次溢出后使P3.0输出高电平,然后将T0设置为1 1次计数方式次计数方式2 2,如此往复进行。分析分析:可以采取如下做法:第6章单片机的定时器/计数器T0实例5参考程序第6章单片机的定时器/计数器实例5仿真运行效果第6章单片机的定时器/计数器P3.0P3.4P2.0=1; P2.0 = 0 实例实例6 6 采用10MHz晶振,在P2.0脚上输出周期
24、为2.5s,高电平占空比为20%的脉冲信号。分析分析:10兆晶振,方式1最大定时为54.613ms;定时中断与软件计数联合定时中断与软件计数联合法:利用定时中断进行中断次数统计;若取10ms产生定时,则2.5s =250次中断之和;则0.5ms(20%占空比)相当于50次中断之和。a = 216-1000012/10=0 xd1202.5s0.5s第6章单片机的定时器/计数器XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD7
25、32P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U?80C51ABCDR1100D1LED-YELLOW实例6参考程序第6章单片机的定时器/计数器实例6仿真运行效果第6章单片机的定时器/计数器实例实例7 7 采用定时中断控制流水灯,实现每秒1位,自上而
26、下循环功能(fosc=12MHz)。第6章单片机的定时器/计数器分析:分析:可以利用20次50ms的定时中断方案,计数初值为: a = 65536-5000012/12 = 0 x3cb0第6章单片机的定时器/计数器问题:中断函数内任务过多,不利于实时控制。新方案新方案:中断函数中仅做中断次数统计和计数初值重入,控制操作改在主函数中进行。仿照实例仿照实例6 6做法,可以采用如下中断函数:做法,可以采用如下中断函数:第6章单片机的定时器/计数器实例7参考程序实例7运行效果第6章单片机的定时器/计数器实例实例8 8 测量从P3.2(INT0)输入的正脉冲的宽度,测量结果以BCD码形式存放在片内RA
27、M 40H开始的单元处(设40H地址存放个位,系统时钟为12MHz,被测脉冲信号周期不超过100ms) 。第6章单片机的定时器/计数器分析分析:GATE=TR0=1时允许INT0的脉冲控制定时器的启停,则根据T0先启动、再关闭后的计数值可算出被测脉冲宽度。INT0端信号T0中的脉冲数0查询 /中断 fosc实例8参考程序第6章单片机的定时器/计数器T0INT0端信号T0中的脉冲数第6章单片机的定时器/计数器实例8电路 脉冲设置(100ms)第6章单片机的定时器/计数器在在Proteus软件中实现软件中实现C51源码级调试源码级调试的方法:形成OMF (absolute objectmodule
28、 format files,绝对目标文件) 格式文件。 omf文件设置omf文件加载第6章单片机的定时器/计数器启动调试omf文件窗口第6章单片机的定时器/计数器片内RAM窗口实例8的运行结果第6章单片机的定时器/计数器结果:计数值为50000脉冲脉宽值为50ms。运行到光标实例8的运行结果第6章单片机的定时器/计数器视频实例8小结1、测量未知脉冲宽度的方法利用INTx引脚接入待测脉冲设置Tx定时方式 THx和TLx清零利用查询语句辅助计时用Tx计数值计算脉宽值;2、C51中进行存储器操作的方法定义指针变量并赋地址值按指针变量对数据进行读写操作;3、任意位数BCD码的拆解方法从最低位开始反复进行模10计算 取模后删去最低位(整除10)直至整除10的结果为0 ;4、在Proteus中进行C51调试的方法改变keil 的输出设置形成omf格式编译文件在Proteus中加载omf文件利用类似汇编调试方法进行调试。第6章单片机的定时器/计数器外部中断的扩展问题1、利用查询法扩展外部中断源利用查询法扩展外部中断源通过门
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国工业级氧化镁行业市场分析及投资价值评估前景预测报告
- 2025年中国工业电焊帘行业市场分析及投资价值评估前景预测报告
- 2025年新能源汽车充电站智能充电解决方案研究报告
- 2025年智能光储一体化技术在沿海地区电力调峰中的应用分析
- Unit 3 Family ties Starting out教学设计 -外研版英语七年级上册
- Unit 7 Speaker's Corner说课稿-2023-2024学年小学英语3A新概念英语(青少版)
- 2025年功能性饮料在健身APP推广中的应用分析报告
- 远程医疗如何推动2025年偏远地区医疗服务能力提升报告
- 全国青岛版信息技术七年级下册专题一第10课四、《邮件合并》说课稿
- 4.1 交通运输 教学设计-人教版地理八年级上册
- 八年级语文下册-专题08-语言表达与运用-(中考真题演练)(原卷版)
- 《围绕用好“两个途径”发挥“三个作用”推进国有经济布局优化和结构调整》课件
- 新能源汽车充电站建设项目 投标方案(技术方案)
- 留置针静脉血栓形成的原因及预防措施
- 隧道工程技术标完成版
- 2024版合伙人退出合伙协议书书
- “皇家杯”全国职业院校宠物营养学知识竞赛试题库
- (高清版)DZT 0301-2017 海洋地质图图例图式及用色标准
- 优化方案数学必修一
- 读书分享会冰心《去国》
- 光缆改道施工方案
评论
0/150
提交评论