单片机原理第5章PPT课件.ppt

上传人:rrsccc 文档编号:9878906 上传时间:2021-04-01 格式:PPT 页数:22 大小:164KB
返回 下载 相关 举报
单片机原理第5章PPT课件.ppt_第1页
第1页 / 共22页
单片机原理第5章PPT课件.ppt_第2页
第2页 / 共22页
单片机原理第5章PPT课件.ppt_第3页
第3页 / 共22页
单片机原理第5章PPT课件.ppt_第4页
第4页 / 共22页
单片机原理第5章PPT课件.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机原理第5章PPT课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理第5章PPT课件.ppt(22页珍藏版)》请在三一文库上搜索。

1、1,第5章 MCS-51单片机定时器/计数器 5.1 定时器/计数器概述 5.2 定时器/计数器的控制 5.3 定时器/计数器的工作模式 5.4 定时器/计数器应用实例,2,MCS-51单片机内部有两个16位定时器/计数器,简称定时器0(T0)和定时器1(T1)。它们均可用作定时器或事件计数器,为单片机系统提供计数和定时功能,还可作为串行接口的波特率发生器,这些功能都可以通过软件来设定、修改与控制。 5.1 定时器/计数器概述 定时器/计数器实际上是加1计数器,当它对外部事件进行计数时,由于频率不固定,此时称之为计数器;当它对内部固定频率的机器周期进行计数时,称之为定时器。 定时器/计数器的基

2、本结构如图5-1所示。 TH1、TL1是T1的计数器,TH0、TL0是T0的计数器。TH1和TL1、TH0和TL0分别构成两个16位加法计数器 。 它们的工作状态及工作方式由两个特殊功能寄存器TMOD和TCON的各位来决定。工作状态有定时和计数两种,由TMOD的第2位(T0)或第6位(T1)决定。工作模式共有03四种,也是由TMOD其中的两位(1个定时器)来决定。TMOD和TCON的内容由软件写入。,3,图5-1 定时器/计数器内部结构框图,4,5.2 定时器/计数器的控制 定时器/计数器有4种工作模式,由TMOD设置并由TCON控制。 5.2.1 定时器/计数器的工作模式寄存器TMOD 特殊

3、功能寄存器TMOD的地址为89H,它不能位寻址,在设置时一次写入。 其中: M1M0工作模式控制位 M1M0对应4种不同的二进制组合,分别对应4种工作模式。,5,5.3 定时器/计数器的工作模式 MCS-51系列单片机的定时器/计数器T0和T1可由软件对特殊功能寄存器TMOD中控制位C/进行设置,以选择定时功能或计数功能。对M1和M0位的设置对应于四种工作模式,即模式0、模式1、模式2、模式3。 5.3.1 工作模式0 模式0是选择定时器/计数器(T0或T1)的高8位和低5位组成的一个13位定时器/计数器。其逻辑框图如图5-4所示。,图5-4 定时器/计数器T0工作模式0逻辑结构框图,6,5.

4、3.2 工作模式1 该模式对应的是一个16位的定时器/计数器,如图5-5所示。其结构与操作几乎与模式0完全相同,惟一的差别是:在模式1中,寄存器TH0和TL0是以全部16位参与操作。用于定时工作方式时,定时时间为 t=(216-T0初值)振荡周期12 用于计数工作方式时,计数最大长度为21665535个外部脉冲。,图5-5 定时器/计数器T0工作模式1逻辑结构框图,7,5.3.3 工作模式2 模式2把TL0(或TL1)设置成一个可以自动重装载的8位定时器/计数器,如图5-6所示。TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。这时,16位计数器被

5、拆成两个,TL0用作8位计数器,TH0用以保存初值。 用于定时工作方式时,其定时时间(TF0溢出周期)为 t=(28-TH0初值)振荡周期12 用于计数工作方式时, 最大计数长度为28=256 个外部脉冲。,图5-6 定时器/计数器T0工作模式2逻辑结构框图,8,5.3.4 工作模式3 工作模式3对T0和T1大不相同。若将T0设置为模式3,TL0和TH0被分成为两个相互独立的8位计数器,如图5-7所示。,图5-7 定时器/计数器T0工作模式3逻辑结构框图,9,5.4 定时器/计数器应用实例 5.4.1 模式0的应用 【例5-1】 利用定时器/计数器每隔1ms控制产生宽度为两个机器周期的负脉冲,

6、由P1.0送出。设时钟频率为12MHz。 为了提高CPU的效率,采用中断方式工作。 首先求定时器的初值,设定时器初值为X,定时1ms,则应有 (213-X)10-6=110-3 式中,机器周期为1s,可求得X=7192=11100000 11000B,其中高8位0E0H赋给TH0,低5位18H送TL0。由于系统复位后,TMOD清0,正好处于定时器模式0状态,且GATE=0,也可不设置TMOD。 程序如下: ORG0000H AJMP MAIN ORG000BH,10,AJMPT0INT ORG0100H MAIN:MOV TH0, #0E0H MOV TL0, #18H; 送定时初值 MOV

7、IE, #82H; 允许T0中断EA=1,ET0=1 SETB TR0; 启动定时器0 LOOP:SJMPLOOP ORG0200H T0INT:CLRP1.0 SETB P1.0; 送2s的负脉冲 MOV TH0, #0DDH; 用软件重新赋初值 MOV TL0, #18H RETI,11,5.4.2 模式1的应用 【例5-2】 利用定时器0产生25Hz的方波,由P1.0输出。假设CPU不做其他工作,则可采用查询方式进行控制,设晶振频率为12MHz。 25Hz方波,周期为1/2540ms,可以采用定时器定时20ms,每隔20ms改变一下P1.0的电平,即可得到25Hz的方波信号。若采用定时器

8、工作模式0,则最长定时时间为t=213110-6s=8.192ms。显然定时一次不能满足要求,可以采用模式1工作。该方波的波形如图5-9所示。 设初值为X,则有t=(216-X)110-6=2010-3,求得X=45536=B1E0H。,图5-9 方波的波形,12,程序如下: ORG0100H MOV TMOD, #01H MOV TH0, #0B1H MOV TL0, #0E0H SETB TR0 LOOP:JNBTF0, $; $为当前指令指针地址 CLRTF0 MOV TH0, #0B1H MOV TL0, #0E0H CPLP1.0 SJMP LOOP END,13,5.4.3 模式2

9、的应用 【例5-3】 利用定时器T1的模式2对外部信号计数。要求每计满100次,将P1.0端取反。 外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器发生溢出中断,中断服务程序将P1.0取反。 T1计数工作方式模式2的控制字为TMOD=60H。T0不用时,TMOD的低4位可任取,但不能使T0进入模式3,一般取0。 计算T1的计数初值X: X=28-100=156=9CH 因此,TL1和TH1的初值均为9CH。 程序如下:,14,程序如下: MAIN:MOV TMOD, #60H MOV TL1, #9CH; 赋初值 MOV TH1, #9CH MOV I

10、E, #88H; 定时器T1开中断 SETB TR1 HERE:SJMPHERE ORG0100H; 中断服务程序入口 CPLP1.0 RETI,15,5.4.4 模式3的应用 【例5-4】 假设一个用户系统中已使用了两个外部中断源,并置定时器T1于模式2,作串行口波特率发生器,现要求再增加一个外部中断源,并由P1.0口输出一个5kHz的方波,设fosc=6MHz。 在不增加其他硬件成本时,可把定时器T0置于工作模式3,利用外部引脚T0端作附加的外部中断输入端,把TL0预置为FFH,这样在T0端出现由1到0的负跳变时,TL0立即溢出,申请中断,相当于边沿触发的外部中断源。在模式3下,TH0总是

11、作8位定时器用,可以用它来控制由P1.0输出的5kHz方波。 由P1.0输出5kHz的方波,即每隔100s使P1.0的电平发生一次变化。则TH0中初值X=256-100/2=206。 程序如下: MOV TL0, #0FFH MOV TH0, #206 MOV TL1, #BAUD; BAUD根据波特率要求得到,16,MOV TH1, #BAUD MOV TMOD, #27H; 置T0工作模式3,TL0工作 于计 数器方式 MOV TCON, #55H; 启动T0、T1,置外部中断 0和1为边沿触发方式 MOV IE, #9FH; 开放全部中断 TL0溢出中断服务程序(由000BH单元转来):

12、 TL0INT:MOV TL0, #0FFH ; 中断服务程序 RETI TH0溢出中断服务程序(由001BH单元转来): TH0INT:MOV TH0, #206 CPLP1.0 RETI,17,5.4.5 定时器/计数器综合应用 【例5-5】 设时钟频率为6MHz,设计利用T0产生1s的定时程序。 因定时时间较长,采用哪一种工作模式较合适,可以比较一下。 模式0最长可定时16.384ms。 模式1最长可定时131.072ms。 模式2最长可定时512s。 根据题中要求,可选模式1,每隔100ms中断一次,中断10次为1s。 610612(216-X)=10010-3 设初值为X,则 可求得

13、X=15536=3CB0H 因此,(TL0)=0B0H,(TH0)=3CH。 程序如下: ORG0000H LJMP MAIN; 上电,转向主程序,18,ORG000BH; T0的中断矢量地址 AJMPSERVE; 转中断服务程序 ORG1000H; 主程序 MAIN:MOV SP, #60H; 设堆栈指针 MOV B, #0AH; 设循环次数 MOV TMOD, #01H; 设T0工作于模式1 MOV TL0, #0B0H; 赋初值 MOV TH0, #3CH SETB ET0; 开中断 SETB EA SETB TR0; 启动定时 SJMP $; 等待中断 SERVE:MOV TL0, #

14、0B0H; 重新赋初值 MOV TH0, #3CH DJNZ B, LOOP CLRTR0; ; 1s时间到,停止T0工作 LOOP:RETI; 中断返回 END,19,【例5-8】 单片机P1口接有八个LED发光二极管,编程设计一个双灯循环点亮控制流水灯,实现LED灯从低位到高位两两循环点亮,间隔时间为1s。 设单片机晶振为6MHZ,定时器工作在方式1,则最大定时为131.072ms。为实现时间间隔1s,可设定时器定时时间为125ms,R4设定为8,执行8次。下面分别给出利用查询方式和中断方式实现的程序代码。 查询方式程序如下: ORG 0000H MAIN: MOV TMOD, #01H

15、; T0工作于定时方式1 MOV TH0, #0BH ;设置计数初值为0bdch MOV TL0, #0DCH ;定时125ms MOV R4, #8 MOV A, #03H,20,MOV P1, A SETB TR0 ;启动T0工作 CHX: JBC TF0, ZR ; 125ms到转ZR,并清TF0 SJMP CHX ZR: MOV TH0, #0BH MOV TL0, #0DCH DJNZ R4, CHX MOV R4, #8 RL A RL A MOV P1, A JMP CHX END 中断方式程序如下: ORG 0000H AJMP MAIN ;单片机复位后从0000H开始执行 O

16、RG 000BH AJMP IV1 ;转移到IV1,21,MAIN: MOV TMOD, #01H; T0工作于定时方式1 MOV TH0, #0BH;设置计数初值为0bdch MOV TL0, #0DCH;定时125ms MOV IE, #82H; CPU开放中断,T0允许中断 MOV R4, #8 MOV A, #03H MOV P1, A SETB TR0;启动T0工作 AJMP $ IV1: MOV TH0, #0BHMOV TL0, #0DCH DJNZ R4, LOP MOV R4, #8 RL A RL A MOV P1, A LOP: RETI END,22,本章结束 谢谢使用,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1