收藏 分享(赏)

单片机课件 (6).ppt

上传人:11xg27ws 文档编号:8167950 上传时间:2019-06-12 格式:PPT 页数:41 大小:737KB
下载 相关 举报
单片机课件 (6).ppt_第1页
第1页 / 共41页
单片机课件 (6).ppt_第2页
第2页 / 共41页
单片机课件 (6).ppt_第3页
第3页 / 共41页
单片机课件 (6).ppt_第4页
第4页 / 共41页
单片机课件 (6).ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、单片机原理及应用,主讲教师:胡晓娟中国矿业大学理学院 物理系,2,5.3 MCS-51单片机的定时器/计数器,在单片机中的控制应用中,可供选择的定时方法有: 软件定时:通过执行循环程序进行时间延迟,定时时间精确且不需要外加硬件电路。但要占用CPU,增加CPU开销,定时时间不宜过长。 硬件定时:定时功能全部由硬件电路完成,不占CPU时间,但需通过改变电路中的元件参数来调节定时时间,使用上不够灵活方便。 可编程定时器定时:通过对系统时钟脉冲的计数来实现。计数值通过程序设定,改变计数值即可改变定时时间,使用灵活方便。,3,5.3.1 定时器/计数器的计数和定时功能,MCS-51单片机有2个16位的可

2、编程定时器/计数器,称为定时器/计数器0和定时器/计数器1,分别由两个8位的计数器TH0、TL0和TH1、TL1组成,这4个计数器都是特殊功能寄存器。,计数功能 所谓计数是指对外部事件进行计数。外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲的计数。 MCS-51芯片的信号引脚T0(P3.4)和T1(P3.5)分别是两个计数器的计数输入端。外部输入的脉冲在负跳变时有效,供计数器进行加 1 计数。,4,计数方式下,单片机在每个机器周期的S5P2对计数脉冲输入引脚进行采样。如果前一个机器周期为高电平,后一个机器周期为低电平,即为一个有效的计数脉冲,在下一个机器周期的S3P1进行计数。

3、由于采样计数脉冲是在2个机器周期完成的,所以计数脉冲的周期不能小于2个机器周期。定时功能 定时功能是通过对单片机内部脉冲进行计数来实现的。即每个机器周期产生1个计数脉冲,使计数器加 1。 在使用定时器时,既可以根据计数值计算定时时间,也可以根据定时时间的要求计算出计数器的预置值。,计数功能,5,加法计数器 加法计数器是计满溢出时才申请中断,所以在给计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值。 设最大值为M,计数值为N,初值为X,则X的计算方法为: 计数状态: X = MN定时状态: X = M(定时时间机器周期),6,5.3.2 与定时器/计数器

4、有关的控制寄存器,定时器/计数器控制寄存器:TCON 字节地址:88H 位地址:88H 8FH (可位寻址),功能:用于保存外部中断请求以及定时器的计数溢出。 TCON既有定时器/计数器的控制功能,又有中断控制功能,其中与定时有关的控制位共4位:TF1、TR1、TF0、TR0。,7,TF0和TF1:计数溢出标志位 当计数器产生计数溢出时,相应的溢出标志位由硬件置“1”。 计数溢出标志位的使用有两种情况: 使用中断方式时,作中断请求标志位来使用,在转向中断服务程序时由硬件自动清“0”。 使用查询方式时,作查询状态位来使用,查询有效后应以软件方法及时将该位清“0” TR0和TR1:运行控制位(软件

5、置1或清0) TR0(TR1)=0 停止定时器/计数器工作 TR0(TR1)=1 启动定时器/计数器工作,8, 定时器方式选择寄存器:TMOD 字节地址:89H (不可位寻址),定时器/计数器 1,定时器/计数器 0,功能:用于设定定时器/计数器的工作方式(只能用字节传送指令设置其内容) TMOD的低半字节对应定时器/计数器 0,高半字节对应定时器/计数器 1,前后半字节的位格式完全对应。,9,C/T :定时方式或计数方式选择位 C/T = 0 定时工作方式 C/T = 1 计数工作方式 GATE: 门控位 GATE=0 以运行控制位(TR0或TR1)启动定时器 GATE=1 以外部中断请求信

6、号(INT0 或INT1)启动定时器,M1和M0:工作方式选择位,10, 中断允许控制寄存器:IE 字节地址:0A8H 位地址:0A8H 0AFH,其中与定时器/计数器有关的控制位共3位: EA:中断允许总控制位 ET0和ET1:定时器/计数器中断允许控制位 ET0(ET1)=0 禁止定时器/计数器中断 ET0(ET1)=1 允许定时器/计数器中断,11,5.3.3 定时器工作方式 0 1. 电路逻辑结构,定时器工作方式0是13位计数结构,计数器由TH的全部8位和TL低5位构成,TL的高3位不用。,12,对工作方式 0 的说 明: 当TL0的低5位计数溢出时,向TH0进位,而全部13位计数溢出

7、时,向计数溢出标志位TF0进位。 当C/T=0时,多路开关接通振荡脉冲的12分频信号(机器周期脉冲)作为计数信号,此时T0为作为定时器; 当C/T=1时,多路开关接通计数引脚T0,计数脉冲为P3.4引脚上的外部输入脉冲,当计数脉冲发生负跳变时,计数器加1,此时T0为作为计数器。 GATE=0时,由TR0的状态控制计数脉冲的接通与断开。 GATE=1且TR0=1时,计数脉冲的接通与断开由外引脚INT0控制。,13,2. 启停控制,定时器/计数器的启停控制有两种方法:纯软件方法和软、硬件相结合的方法。(由门控位GATE的状态进行选择) 当GATE0时,为纯软件启停控制。这时TR0的状态控制计数脉冲

8、的通断,而TR0位的状态又是通过指令设置的,所以称为软件方式。当把TR0设置为1,控制开关接通,计数器开始计数,即定时器/计数器工作;当把TR0清0时,开关断开,计数器停止计数。 当GATE1时,为软、硬件相结合的启停控制方式。这时计数脉冲的接通与断开决定于TR0和INT0的“与”关系,而INT0是引脚P3.2引入的控制信号。由于P3.2引脚信号可控制计数器的启停,所以可利用80C51的定时器/计数器进行外部脉冲信号宽度的测量。,14,3. 定时和计数范围,使用工作方式0 的计数功能时,计数值的范围是: 1 8192(213) 使用工作方式0 的定时功能时,定时时间的计算公式为:(213计数初

9、值)晶振周期12或 (213计数初值)机器周期 其时间单位与机器周期或晶振周期的时间单位相同,为ms。 最小定时时间为1个机器周期,最大定时时间为8192个机器周期。 对于6MHz的晶振,最小定时时间为2ms,最大定时时间为16384ms。,15,4. 应用举例, 计算计数初值 欲产生500ms的等宽正方波脉冲,只需在P1.0端以250ms为周期交替输出等宽高低电平即可实现,为此定时时间应为250ms。若使用6MHz晶振,则1个机器周期为2ms。方式0为13位计数结构,设待求的计数初值为X,则: (213 X)210-6 =25010-6 可解得:X = 8192 125 = 8067 = 1

10、111 1100 00011B。 用十六进制表示,高8位放入TH1(TH1=0FCH);低5位放入TL1(TL1= 03H)。,【例1】设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500ms的等宽正方波连续脉冲,并由P1.0输出。以查询方式完成。,000,16, TMOD寄存器初始化 为实现定时器/计数器1的纯软件运行控制,则GATE = 0; 为实现定时功能,应使C/T = 0; 为把定时器/计数器1设定为方式0,则M1M0=00; 定时器/计数器0不用,TMOD的低4位设定为0; 因此,TMOD寄存器应初始化为 00H。 由定时器控制寄存器TCON中的位TR1控制定时的启动与

11、停止TR1 = 1 启动, TR1 = 0 停止,17,程序设计MOV TMOD, #00H ;设置T1为工作方式0MOV TH1, #0FCH ;设置计数初值MOV TL1, #03HMOV IE, #00H ;禁止中断SETB TR1 ;启动定时 LOOP: JBC TF1, LOOP1 ;查询计数溢出(反复查询)AJMP LOOP LOOP1: MOV TH1, #0FCH ;重新设置计数初值MOV TL1, #03HCPL P1.0 ;输出取反AJMP LOOP ;重复循环,18,5.3.4 定时器工作方式 1 1. 电路逻辑结构,定时器工作方式1是16位计数结构,计数器由TH的全部8

12、位和TL的全部8位构成。它的逻辑电路和工作情况与方式0完全相同,所不同的只是计数器的位数。,TL0 (8位),19,2. 定时和计数范围,使用工作方式1 的计数功能时,计数值的范围是: 1 65536(216) 使用工作方式1 的定时功能时,定时时间的计算公式为:(216计数初值)晶振周期12或 (216计数初值)机器周期 其时间单位与机器周期或晶振周期的时间单位相同,为ms。 最小定时时间为1个机器周期,最大定时时间为65536个机器周期。 对于6MHz的晶振,最小定时时间为2ms,最大定时时间为131 072ms(约为131 ms )。,20,4. 应用举例, 计算计数初值 方式 1 为1

13、6位计数结构,设待求的计数初值为X,则: (216 X)210-6 =25010-6 可解得:X = 65536 125 = 65411= 1111 1111 1000 0011B。 用十六进制表示,高8位放入TH0(TH0=0FFH);低8位放入TL0(TL0= 83H)。,【例2】设单片机晶振频率为6MHz,使用定时器0以方式1产生周期为500ms的等宽正方波连续脉冲,并由P1.0输出。以中断方式完成。,21, TMOD寄存器初始化 定时器/计数器1不用,TMOD的高4位设定为0; 为实现定时器/计数器 0 的纯软件运行控制,则GATE = 0; 为实现定时功能,应使C/T = 0; 为把

14、定时器/计数器 0 设定为工作方式 1,则M1M0=01; 因此,TMOD寄存器应初始化为01H。,22,程序设计 主程序:MOV TMOD, #01H ;设置T0为工作方式1MOV TH0, #0FFH ;设置计数初值MOV TL0, #83HSETB EA ;开中断SETB ET0 ;定时器0允许中断SETB TR0 ;定时开始SJMP $ ;等待中断 中断服务程序:CPL P1.0 ;输出取反MOV TH0, #0FCH ;重新设置计数初值MOV TL0, #83HRETI ;中断返回,23,5.3.5 定时器工作方式 2,工作方式 0 和工作方式 1 的共同特点是计数溢出后计数器为全0

15、,因此,用作循环定时时需要反复设置计数初值。这不仅影响定时精度,而且也给程序设计带来麻烦。 工作方式 2 是针对此问题而设置的,它具有自动重新加载计数初值的功能,免去了反复设置计数初值的麻烦。所以工作方式 2 也称为自动重新加载工作方式。,24,1. 电路逻辑结构,在工作方式 2 下,16位计数器被分为两部分,TL作为计数器使用,TH作为预置寄存器使用,初始化时把计数初值分别装入TL和TH中。当计数溢出后,由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为硬件加载。,25,对工作方式 2 的说 明: 工作方式 2 为 8 位计数结构,最大计数值为256(28)。 初始化时,8位计

16、数初值同时装入TL0和TH0中。 当TL0计数溢出时,置位TF0,同时由硬件自动把保存在预置寄存器TH0中的计数初值重新加载TL0,然后TL0开始重新计数。如此重复不止。 用途:这种自动重新加载工作方式适用于循环定时或循环计数。例如,可用于产生固定脉宽的脉冲,可作为串行数据通信的波特率发生器。,26, 计算计数初值 在6MHz晶振下,1个机器周期为2ms,以TH0作重装载的预置寄存器,TL0作8位计数器,假设计数初值为X,则: (28 X)210-6 =10010-6 可解得:X = 256 50 = 206 = 1100 1110B = 0CEH 把0CEH分别装入TH0和TL0中:TH0=

17、0CEH,TL0= 0CEH,【例3】使用定时器 0 以工作方式 2 产生100ms定时,在P1.0输出周期为200ms的连续正方波脉冲。已知单片机晶振频率为6 MHz。,2. 循环定时应用,27, TMOD寄存器初始化 定时器/计数器 1 不用,TMOD的高4位设定为0。 为实现定时器/计数器 0 的纯软件运行控制,则GATE = 0。 为实现定时功能,应使C/T = 0; 定时器/计数器0为工作方式2,则M1M0=10; 因此,TMOD寄存器应初始化为02H,由于定时器/计数器工作方式 2 具有自动重新装载功能,因此计数初值只需设置 1 次,以后不再需要软件重置。,28, 程序设计(查询方

18、式),MOV IE, #00H ;禁止中断MOV TMOD, #02H ;设置T0为工作方式2MOV TH0, #0CEH ;保存计数初值MOV TL0, #0CEH ;设置计数初值SETB TR0 ;启动定时 LOOP: JBC TF0, LOOP1 ;查询计数溢出AJMP LOOP LOOP1: CPL P1.0 ;输出取反AJMP LOOP ;重复循环,29,程序设计(中断方式),主程序:MOV TMOD, #02H ;设置T0为工作方式2MOV TH0, #0CEH ;保存计数初值MOV TL0, #0CEH ;设置计数初值SETB EA ;开中断SETB ET0 ;定时器 0 允许中

19、断SETB TR0 ;定时开始SJMP $ ;等待中断 中断服务程序:CPL P1.0 ;输出取反RETI ;中断返回,30, 计算计数初值 X = 28 100 = 156 = 1001 1100B = 9CH 把9CH分别装入TH1和TL1中:TH1 = 9CH,TL1 = 9CH,【例4】使用定时器 1 以工作方式 2 实现计数,每计100次进行累加器加 1 操作。按查询方式进行编程。,3. 循环计数应用, TMOD寄存器初始化 为实现定时器/计数器 1 的纯软件运行控制,则GATE = 0。 为实现计数功能,应使C/T = 1; 定时器/计数器1为工作方式2,则M1M0=10; 定时器

20、/计数器 0 不用,TMOD的低4位设定为0。 因此,TMOD寄存器应初始化为60H,31, 程序设计(查询方式),MOV IE, #00H ;禁止中断MOV TMOD, #60H ;设置T1为工作方式2MOV TH1,#9CH ;保存计数初值MOV TL1,#9CH ;预置计数初值SETB TR1 ;启动计数 DEL: JBC TF1, LOOP ;查询计数溢出AJMP DEL LOOP: INC A ;累加器加 1AJMP DEL ;循环返回,32,5.3.6 定时器工作方式 3,工作方式0、方式1、方式2下,对两个定时器/计数器T0和T1的设置和使用是完全相同的,但在工作方式 3 下,两

21、个定时器/计数器的设置和使用是不同的。 在工作方式 3 下,定时器/计数器 0 被拆成两个独立的8位计数器TL0和TH0,这两个计数器的使用完全不同。 如果定时器/计数器 0 已经工作在方式 3,则定时器/计数器 1 的运行控制位TR1及计数溢出标志位TF1被TH0借用,此时定时器/计数器 1 只能工作在方式 0、方式 1 或方式 2 。,33,1. 工作方式 3 下的定时器/计数器 0,在工作方式 3 下,定时器/计数器 0 中TL0和TH0 的使用: TL0既可用于计数,又可用于定时。与定时器/计数器 0 相关的控制位C/T、GATE、TF0、TR0和引脚信号INT0全归它使用。 TH0只

22、能作8位的定时器使用。由于寄存器TCON的定时器0的控制位已被TL0独占,只能借用定时器1的控制位TR1和TF1为其服务。即用计数溢出置位TF1,而定时的启动和停止则受TR1的状态控制。 总结:在工作方式 3 下,定时器/计数器 0 可以分解为 2 个 8 位定时器或 1 个 8 位计数器和 1 个 8 位定时器。,34,定时器/计数器 0 工作方式 3 的逻辑结构,35,2. 工作方式 3 下的定时器/计数器 1,如果定时器/计数器 0 已经工作在方式 3,则定时器/计数器 1 的运行控制位TR1及计数溢出标志位TF1被TH0借用,此时定时器/计数器 1 只能工作在方式 0、方式 1 或方式

23、 2 。 这种情况下,定时器/计数器1通常是作为串行口的波特率发生器使用,以确定串行通信的速率。因为已没有计数溢出标志位TF1可供使用,因此只能把计数溢出直接送到串行口。 作为波特率发生器使用时,只需设置好工作方式,便可自动运行。若要停止工作,只需向TMOD送入一个能把它设置为方式 3 的控制字就可以了。定时器/计数器 1 不能在方式 3 下使用,如果硬把它设置为方式 3,就会停止工作。,36,工作方式 3 下定时器/计数器 1 的使用,37,3. 工作方式 3 下的定时器/计数器 0 的应用举例,【例5】设晶振频率为6MHz、定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时

24、器,要求TL0使P1.0产生400ms的方波,TH0使P1.1产生800ms的方波。,计算计数初值X0 = 28-(20010-6)/(210-6)= 156 = 9CHX1 = 28-(40010-6)/(210-6) = 56 = 38H 把X0和X1分别装入TL0和TH0中:TL0= 9CH,TH0=38H TMOD寄存器初始化 定时器T1不用,TMOD高4位取为全0。对定时器T0: GATE=0,C/T=0,M1M0=11。因此,TMOD=03H,38, 程序设计(中断子程序在中断地址区) ORG 0000H AJMP MAIN ;转主程序ORG 000BH ;TL0中断服务程序CPL

25、 P1.0 ;P1.0取反MOV TL0, #9CH ;重新装入计数初值RETI ;中断返回ORG 001BH ;TH0中断服务程序CPL P1.1 ;P1.1取反MOV TH0, #38H ;重新装入计数初值RETI ;中断返回,39,ORG 2000H ;主程序MAIN: MOV SP, #60HMOV TMOD,#03H ;T0工作于方式3MOV TL0,#9CH ;置计数初值MOV TH0,#38HSETB EA ;CPU开中断SETB ET0 ;允许T0中断(用于TL0)SETB ET1 ;允许T1中断(用于TH0)SETB TR0 ;启动TL0SETB TR1 ;启动TH0 HAL

26、T: SJMP HALT ;暂停,等待中断,40, 程序设计(中断地址区存放的是无条件转移指令) ORG 0000H START:AJMP MAIN ;转主程序ORG 000BH AJMP PIT0 ;转TL0溢出中断ORG 001BH AJMP PIT1 ;转TL1溢出中断MAIN:MOV SP, #60HMOV TMOD,#03H ;T0工作于方式3MOV TL0,#9CH ;置计数初值MOV TH0,#38H,41,MOV TCON, #50HMOV IE, #8AH ;开放中断 HERE: AJMP HERE ;暂停,等待中断 PIT0: CPL P1.0 ;P1.0取反MOV TL0, #9CH ;重新装入计数初值RETI ;中断返回 PIT1: CPL P1.1 ;P1.1取反MOV TH0, #38H ;重新装入计数初值RETI ;中断返回,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报