片机原理及应用胡乾斌第七章.ppt

上传人:小飞机 文档编号:6440212 上传时间:2023-10-31 格式:PPT 页数:39 大小:622.50KB
返回 下载 相关 举报
片机原理及应用胡乾斌第七章.ppt_第1页
第1页 / 共39页
片机原理及应用胡乾斌第七章.ppt_第2页
第2页 / 共39页
片机原理及应用胡乾斌第七章.ppt_第3页
第3页 / 共39页
片机原理及应用胡乾斌第七章.ppt_第4页
第4页 / 共39页
片机原理及应用胡乾斌第七章.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《片机原理及应用胡乾斌第七章.ppt》由会员分享,可在线阅读,更多相关《片机原理及应用胡乾斌第七章.ppt(39页珍藏版)》请在三一办公上搜索。

1、第7章 MCS-51的定时器/计数器 两个可编程的定时器/计数器T1、T0。两种工作方式:(1)计数器工作方式(2)定时器工作方式 4种工作模式(模式0-模式3)。模式0,13位定时器/计数器 模式1,16位定时器/计数器 模式2,8位常数自动重新装载 模式3,T0分成两个8位定时器/计数器,T1停止计数。,单片机复位时,TMOD和TCON两个寄存器的所有位都被清0。,7.1 定时器/计数器的结构工作方式寄存器TMOD:选择定时器/计数器T0、T1的工作方式和工作模式;控制寄存器TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。,/INT0/INT1P3.2 P3.3,单片

2、机复位时,TMOD和TCON两个寄存器的所有位都被清0。,7.1 定时器/计数器的结构工作方式寄存器TMOD:选择定时器/计数器T0、T1的工作方式和工作模式;控制寄存器TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。,7.1.1 定时器/计数器控制寄存器TCON,T1溢出中断标志:1,有请求;0,无请求;,T1运行控制位:1,启动T1;0,关闭T1;,T0溢出中断标志:1,有请求;0,无请求;,T0运行控制位:1,启动T0;0,关闭T0,/INT0触发方式:1,下降沿引起;0,低电平引起,/INT0中断请求标志位1,有请求;0,无请求;,/INT1触发方式:1,下降沿引

3、起;0,低电平引起,/INT1中断请求标志位1,有请求;0,无请求;,低4位与外部中断有关,已介绍。高4位的功能如下:(1)TF0、TF1计数溢出标志位 当启动T0计数后,定时器/计数器T0从初值开始加1计数,当最高位产生溢出时,由硬件置“1”TF0,向CPU申请中断,CPU响应TF0中断时,由硬件自动清“0”TF0,TF0也可由软件查询,查询后由软件清0。(2)TR0、TR1计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作 由软件置位/复位,即由软件置“1”或“0”。,7.1.2 工作方式寄存器TMOD,M1 M0:工作模式选择位,计数器方式和定时器方式选择位:0:定时

4、器方式;1:计数器方式。,门控位:1,打开;0,关闭,0 0 模式0 0 1 模式1 1 0 模式2,M1 M0:工作模式选择位,0 0 模式0 0 1 模式1 1 0 模式2 1 1 模式3,计数器方式和定时器方式选择位:0:定时器方式;1:计数器方式。,门控位:1,打开;0,关闭,(2)M1 M0工作模式选择位 M1 M0 工 作 模 式 0 0 模式0,13位定时器/计数器 0 1模式1,16位定时器/计数器 1 0 模式2,8位常数自动重新装载 1 1 模式3,仅适用于T0,T0分成两个8位计数器,T1停止计数。,8位分为两组,高4位控制T1,低4位控制T0。(1)GATE门控位 0:

5、以运行控制位TRX(X=0,1)来启动定时器/计数器运行。1:用外中断引脚(/INT0或/INT1)上的高电平来启动定时器/计数器运行(TRX=1:X=0,1)。,(3)C/T*计数器方式和定时器方式选择位 0:定时器方式。1:计数器方式。,7.2 定时器/计数器的4种工作模式 7.2.1 模式0 M1、M0为00,定时器/计数器的框图:,为13位的定时器/计数器,C/T*位控制的电子开关决定了定时器/计数器的工作方式。0:电子开关打在上面,为定时器工作方式,对机器周期计数,计数信号频率fosc/12。1:电子开关打在下面,为计数器工作方式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当

6、引脚上发生负跳变时,计数器加1,计数信号频率不超过fosc/24。GATE位的状态决定定时器/计数器运行控制取决于TRX一个条件还是TRX和引脚这两个条件。,启动计数方式:,非门控方式:当GATE0,控制权由 TRx 决定TRx1 计数开始TRx 0 计数停止,门控方式:当GATE1、TRx1 控制权由 INTx 决定INTx1 计数开始INTx 0 计数停止,7.2.2 模式1 M1、M0为01,16位的计数器。THx8位和TLx8位组成16位加1计数器,最大计数脉冲个数:165536(216),最长定时时间(晶振12MHz T=1s):1s 65536T=65.54ms,启动计数方式:,非

7、门控方式:当GATE0,控制权由 TRx 决定 TRx1 计数开始 TRx 0 计数停止,门控方式:当GATE1、TRx1 控制权由/INTx 决定/INTx1 计数开始/INTx 0 计数停止,模式2为自动恢复初值的(初值自动装入)8位定时器/计数器,TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。定时器/计数器的模式2工作过程如图所示(X=0,1)。,7.2.3 模式 2 计数满后自动装入计数初值。M1、M0=10,等效框图如下:,省去用户软件中重装初值的程序。精确的确定定时时间。,7.2.4 模式3

8、 只适用于定时器/计数器T0,T1不能工作在模式3。T1为模式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。工作模式3下的T0:T0分为两个独立的8位定时/计数器:TL0和TH0。TL0使用T0的状态控制位C/T*、GATE、TR0,而TH0被固定为一个8位定时器(不能作外部计数方式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。各引脚与T0的逻辑关系如图所示。,*T0工作在模式3下T1的各种工作模式 T0处于模式3时,T1可定为模式0、模式1和模式2,用来作为串行口的波特率发生器,或不需要中断的场合。最常用的是模式2,用来作为串行

9、口的波特率发生器。设置T1为模式0、模式1和模式2就自动运行。设置T1为模式3就停止工。例:T1工作在模式2。,*运行中读定时器/计数器 在读取运行中的定时器/计数器时,需要特别加以注意,若恰好出现TLX溢出向THX进位的情况,则读得的(TLX)值就完全不对了。同样,先读(THX)再读(TLX)也可能出错。方法:先读(THX),后读(TLX),再读(THX)。若两次读得(THX)相同,则读得的内容正确。若前后两次读得的(THX)有变化,则再重复上述过程,这次重复读得的内容就应是正确的。下面是有关的程序,读得的(TH0)和(TL0)放置在R1和R0内。,ORG 300HRDTIME:MOV A,

10、TH0;读(TH0)MOV R0,TL0;读(TL0)CJNE A,TH0,RDTIME;比较2次读得的(TH0),不相等则重复 MOV R1,A;(TH0)送入R1中 RET,7.3 定时器/计数器应用中的两个问题,*定时器/计数器对输入信号的要求 外部输入的计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。为了确保某一给定的电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。当一个机器周期采样为高电平,另一个机器周期采样为低电平,计时器加1.故对外部输入信号的基本要求如图所示,图中Tcy为机器周期。,0:禁止中断;1:允许

11、中断。,中断允许寄存器IE,#中断控制,中断优先级寄存器IP,1:高优先级中断;0:低优先级中断。,#定时器/计数器控制寄存器TCON,T1溢出中断标志:1,有请求;0,无请求;,T1运行控制位:1,启动T1;0,关闭T1;,T0溢出中断标志:1,有请求;0,无请求;,T0运行控制位:1,启动T0;0,关闭T0,/INT0触发方式:1,下降引起;0,低电平引起,/INT0中断请求标志位1,有请求;0,无请求;,/INT1触发方式:1,下降引起;0,低电平引起,/INT1中断请求标志位1,有请求;0,无请求;,#工作方式寄存器TMOD,M1 M0:工作模式选择位,计数器方式和定时器方式选择位:0

12、:定时器方式;1:计数器方式。,门控位:1,打开;0,关闭,0 0 模式0 0 1 模式1 1 0 模式2,M1 M0:工作模式选择位,0 0 模式0 0 1 模式1 1 0 模式2 1 1 模式3,计数器方式和定时器方式选择位:0:定时器方式;1:计数器方式。,门控位:1,打开;0,关闭,7.4 定时器/计数器的应用,6.4.1 计算时间常数X(计数初值),使用定时器/计数器工作之前,先确定工作方式和工作模式,正确设置IP,IE,TCON,TMOD,对定时器/计数器初始化,并将初值送入定时器/计数器。,计数功能:X=2n-计数值,X=模-计数值 定时功能:(2n-X)12/fosc=T,(模

13、-X)TM=T X=2n-T fosc/12,X=模-T fosc/12 X:计数初值;TM:机器周期;T:定时时间(s);晶振频率:fosc(HZ);n:8,13,16 模式0:2n=213=8192 X=1FF16-T fosc/12 模式1:2n=216=65536 X=FFF16-T fosc/12 模式2:2n=28=256 X=F16-T fosc/12 模式3:2n=28=256,例:单片机晶振fosc=6MHZ,要求由P1.0端输出一个周期为500us的方波信号,方波周期由定时器T1确定,采用查询方法。(参考),ORG 100H MOV TMOD,#00H;设置T1的定时模式0

14、 MOV TH1,#0FCH;设置计数初值 MOV TL1,#03H MOV IE,#00H;禁止中断 SETB TR1;启动定时器LOOP:JBC TF1,LOOP1;查询计数溢出位TF1后清0 AJMP LOOPLOOP1:MOV TH1,#0FCH;重新置计数初值 MOV TL1,#03H CLR TF1;计数溢出标志位清零(可省)CPL P1.0;输出值取反 AJMP LOOP END,解:周期为500us的方波,其脉宽为250us,故定时值T=250us。采用模式0:晶振频率:fosc=6MHZ;X=模-T fosc/12 T fosc/12=25010-6 6 106/12=125

15、D=7DH X=1FF16-7DH=1F83H=1111110000011B TH1=FCH TL1=00000011B=03H,例:单片机晶振fosc=6MHZ,用定时器T1的定时模式1,以中断方式由P1.0端输出一个周期为500us的方波信号。,ORG 2000HMAIN:MOV TMOD,#10H;设置定时器T1的定时模式1 MOV TH1,#0FFH;设置计数初值 MOV TL1,#83H SETB EA;开中断 SETB ET1;允许定时器T1 中断LOOP:SETB TR1;定时器T1 开始计数HERE:SJMP$;等待中断中断服务程序:ORG 001BH LJMP SOFTIM

16、ORG 2400hSOFTIM:MOV TH1,#0FFH;重设计数初值 MOV TL1,#83H CPL P1.0;输出取反 RETI,解:周期为500us的方波,其脉宽为250us,故定时值T=250us。采用模式1:晶振频率:fosc=6MHZ;X=模-T fosc/12 T fosc/12=25010-6 6 106/12=125D=7DH X=FFF16-7DH=FF83H TH1=FFH TL1=83H,查询方式的参考程序:ORG 1000H MOV TMOD,#10H;设置T1为定时模式1LOOP:MOV TH1,#0FFH;设置计数初值 MOV TL1,#83H SETB TR

17、1;定时器T1 开始计数LOOP1:JNB TF1,LOOP1;查询TF1标志 CLR TF1;T1溢出,清TF1 CPL P1.0;P1.0的状态求反 SJMP LOOP END,例:单片机晶振fosc=6MHZ,定时器T1用于产生1ms定时,T0用于模式2计数方式,计数器初值为FFH。T0作为外部中断请求输入线,以中断方式由P1.0端输出一个周期为2ms的方波信号。,ORG 0000HRESET:AJMP MAIN;转主程序 ORG 0100HMAIN:MOV SP,#60H MOV TMOD,#16;T1定时器模式1;T0计数器模式2 MOV TL0,#0FFH;T0置初值 MOV TH

18、0,#0FFH MOV TL1,#0CH;T1置初值 MOV TH1,#0FEH CLR PSW.5 SETB ET0;允许T0中断 SETB EA;开中断 SETB TR0;启动T0LOOP:MOV C,PSW.5;T0产生中断了吗?JNC LOOP SETB ET1;允许T1中断 SETB TR1;启动T1HERE:AJMP HERE,ORG 000BH AJMP ITOP;转T0中断服务程序 ORG 140HITOP:CLR TR0;停止T0计数 SETB PSW.5 RETI ORG 001BH AJMP ITIP;转T1中断服务程序 ORG 150HITIP:MOV TL1,#0CH

19、 MOV TH1,#0FEH CPL P1.0;P1.0位取反 RETI,例:用定时器T0的模式3,分别产生200us,400us的定时中断,使晶振频率为6MHZ的单片机的P1.0和P1.1上产生400us和800us的方波。(参考),ORG 0000HRESET:AJMP MAIN;转主程序 ORG 000BH AJMP ITOP;转T0中断服务程序 ORG 001BH AJMP ITIP;转T1中断服务程序 ORG 0100HMAIN:MOV SP,#60H ACALL PTOM3HERE:AJMP HEREPTOM3:MOV TMOD,#03H;T0模式3,两;个8位定时器 MOV TL

20、0,#09CH;T0置初值 MOV TH0,#38H SETB TR0;启动TL0 SETB ET0;允许TL0中断,SETB TR1;启动TH0 SETB ET1;允许TH0中断 SETB EA;全局开中断 RETITOP:MOV TL0,#9CH CPL P1.0 RETIITIP:MOV TH0,#38H CPL P1.1 RETI,门控位GATE的功能和使用方法测量脉冲宽度 GATE1=1时,定时器/计数器T0,T1的启动受/INT0、/INT1的控制,可测量引脚/INT0(P3.2)、/INT1(P3.3)上正脉冲的宽度(机器周期数)。,ORG 2000HMOV TMOD,#09H

21、MOV TL0,#00HMOV TH0,#00HCLR EI;关中断MOV R0,#30H,HERE1:JB P3.2,HERE1;等/INT0=0 SETB TR0;启动T0HERE2:JNB P3.2,HERE2;等/INT0=1HERE3:JB P3.2,HERE3;等/INT0=0 CLR TR0;T0停止工作 MOV R0,TH0;存计数值 INC R0,MOV R0,TL0 SJMP$,显示TH0、TL0计数值,即显示脉宽有多少个机器周期。,例 利用定时器T1的模式2对外部信号计数,要求每计满100个数,将P1.0取反。(自学)(1)选择工作模式 外部信号由T1(P3.5)脚输入,

22、每发生一次负跳变计数器加1,每输入100个脉冲,计数器产生溢出中断,在中断服务程序中将P1.0取反一次。T1工作在模式2的控制字为TMOD=60H。不使用T0时,TMOD的低4位可任取,但不能使T0进入方式3,这里取全0。(2)计算T1的初值X=28-100=156D=9CH 因此,TL1的初值为9CH,重装初值寄存器TH1=9CH,(3)程序设计 ORG 0000HLJMP MAINORG 001BH;T1中断服务程序入口 CPL P1.0;P1.0位取反 RETI ORG 0100HMAIN:MOV TMOD,#60H;设T1为模式2计数 MOV TL1,#9CH;T1置初值 MOV TH

23、1,#9CH SETB EA SETB ET1 SETB TR1;启动T1HERE:AJMP HERE,编程和应用,例 假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。(参考)(1)定时器T0工作方式的确定 模式1最长可定时131.072ms;选模式1,每隔100ms中断一次,中断10次为1s。(2)计算计数初值 因为:(216-X)210-6=10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H(3)10次计数的实现 对于中断10次计数,也可用循环程序的方法实现。本例采用循环程序法。(4)程序设计 参考程序:,ORG 0000HRESET:LJMP MA

24、IN;上电,转主程序入口MAIN ORG 000BH;T0的中断入口 LJMP IT0P;转T0中断处理程序IT0P ORG 1000H MAIN:MOV SP,#60H;设堆栈指针 MOV B,#0AH;设循环次数10次 MOV TMOD,#01H;设T0工作在方式1 MOV TL0,#0B0H;给T0设初值 MOV TH0,#3CH SETB TR0;启动T0 SETB ET0;允许T0中断,SETB EA;CPU开放中断 HERE:SJMP HERE;等待中断 ITOP:MOV TL0,#0B0H;T0中断子程序,重装初值 MOV TH0,#3CH;DJNZ B,LOOP CLR TR0

25、;1s定时时间到,停止T0工作 LOOP:RETI,例:(自学),T1 计数模式2,用于测试负脉冲T0 定时模式2,用于延时500us,ORG 0000HLJMP MAINORG 000BHSETB P1.0CLR TR0RETIORG 001BHCLR P1.0SETB TR0RETI,ORG 0100HMAIN:MOV SP,#30H;系统初始化 SETB P1.0 SETB ET0;中断系统初始化 SETB ET1 SETB EA MOV TMOD,#62H;T0/T1 初始化 MOV TH0,#06H MOV TL0,#06H MOV TH1,#0FFH MOV TL1,#0FFH S

26、ETB TR1;启动T1 WAIT:SJMP WAIT END,信号频率的测量?,基本原理:定时1s,记录脉冲个数。(提示:T0计数,T1定时),1.待测频率信号接与哪个引脚?(T0 引脚)2.设定T0 为定时方式还是计数方式?几位?3.设初值TH0、TL0 为多少?4.何时置位TR0?何时读取结果TH0、TL0?5.若TH0、TL0 发生溢出应如何处理?,要 求,了解:定时/计数信号的来源及对计数信号的要求重要的SFR、其作用和相关标志位的作用(TMOD,TCON,TH0,TL0,TH1,TL1)重点掌握方式1,2的使用方法(包括定时和计数)TMOD的设置和初值的计算方法不同占空比的脉冲波形产生方法(包括查询方式和中断方式的程序设计)理解:门控启动控制方法和其基本应用,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号