Mes-51单片机定时计数器课件_第1页
Mes-51单片机定时计数器课件_第2页
Mes-51单片机定时计数器课件_第3页
Mes-51单片机定时计数器课件_第4页
Mes-51单片机定时计数器课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 MCS 51定时/计数器 6.1 定时器的结构及工作原理 6.2定时器的控制6.3定时器的工作模式及其应用 第6章 MCS 51定时/计数器 6.1 定时器的结构及工作原理一、定时/计数器的结构图中断工作方式工作方式 6.1 定时器的结构及工二、定时/计数器的原理 1、计数脉冲 (1)定时 计数脉冲为时钟脉冲的12分频,每来一个脉冲,定时计数器加1。 (2)计数 外部脉冲由引脚P3.4和P3.5加入,每来一个脉冲计数器加1 2、定时器溢出 当定时器为最大值时,再来一个脉冲,定时器复位,即发生溢出,此时要向CPU提出中断申请.三、定时/计数器 T0 :16位定时/计数器 由TL0,TH0

2、两个八位计数器组成 T1: 16位定时/计数器 由TL1,TH1两个八位计数器组成二、定时/计数器的原理 6.2 定时器的控制一、工作方式寄存器TMOD TMOD用于控制T0和T1的工作方式,其各位的定义如图所示。1. M1M0工作方式控制位 6.2 定时器的控制2. C/T 定时器方式或计数器方式选择位 若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。 3. GATE 定时器/计数器运行门控标志位 当GATE=1时,只有INT0(或INT1)引脚为高电平且TR0(或TR1 )置1时, 相应的定时器/计数器才被选通工作, 这时可用于测量在INTx端出现的正脉冲的宽度。若GA

3、TE=0,则只要TR0(或TR1)置1,定时器/计数器就被选通,而不管INT0(或INT1)的电平是高还是低。 二、 定时器/计数器控制寄存器TCON TF0、TF1分别是定时器/计数器T0、 T1 的溢出标志位, 加法计数器计满溢出时置 1, 申请中断, 在中断响应后自动复 0。TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。 TR1、TR0 分别是定时器 /计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时被清 0。 2. C/T 定时器方式或计数器方式选择位 6.3 定时器的工作模式及其应用一、模式0及其应用 模式0选择定时器

4、的高8位和低5位组成一个13位的定时/计数器,如下图所示:P3.4 6.3 定时器的工作模式及其应 定时器工作在方式0时,为13位的定时器,TH0的8位,TL0的低5位,当TL0溢出时,向TH0进位,当TH0溢出时,向CPU申请中断. 定时初值的计算: T=(213-X)*振荡周期*12 T为定时时间,X为定时初值 定时/计数器的初始化过程: (1)确定工作模式,设置TMOD (2)设置定时/计数器的初值 (3)设置中断 (4)启动定时/计数器 定时器工作在方式0时,为13位的定时器,TH0的例6.2 利用定时/计数器的方式产生1ms定时,在P1.0输出周期2ms方波,设单片机晶振频率fosc

5、=12MHz. 查询方式: MOV TMOD #00H MOV TH0,#18H MOV TL0,#0E0H SETB TR0 LOOP: JBC TF0 ,NEXT SJMP LOOP NEXT: MOV TL0,#18H MOV TH0,#0E0H CPL P1.0 SJMP LOOP 例6.2 利用定时/计数器的方式产生1ms定时,在P1.0输 ORG 0000H AJMP START; 复位入口 ORG 000BH AJMP TOINT ; T0中断入口 ORG 0030HSTART:MOV SP, 60H; 初始化程序 MOV TH0, 18H ; T0赋初值 MOV TL0, 0E

6、cH MOV TMOD, 00H SETB TR0 ; 启动T0 SETB ET0 ; 开T0中断 SETB EA ; 开总允许中断 MAIN:AJMP MAIN ; 主程序TOINT:CPL P1.0 MOV TL0, 18H MOV TH0, 0E0H RET I END中断方式 ORG 0000H 中断方式二、方式1 方式1为16位的定时/计数器,TH0为高8位,TL0为低8位,一起组成16位的定时/计数器.结构图如下图所示:二、方式1定时/计数器工作在方式一时,定时初值的计算公式如下: T=(216-T0的初值) 振荡周期12若晶振的频率fosc=12MHZ,则最长定时时间为: TMA

7、X=(216-T0初值) 1/12 12 us=65.536ms例6.4:用定时器T1产生一个100Hz的方波,由P1.0输出,设fosc=12MHZ,采用查询方式. 解:方波周期: T=1/100Hz=0.01S=10MS, 用T1定时5MS计数器初值: X=216-12 5 103 /12=60536=EC78H定时/计数器工作在方式一时,定时初值的计算公式如下:三、方式2 定时/计数器工作在方式2时为8位的自动重装的定时定数器,TL0作为计数器,THO用来保存定时初值,当TL0溢出,TH0将计数初值送入TL0,重新开始计时.三、方式2定时/计数器工作在方式2时,定时初值的计算公式如下:

8、T=(28-T0的初值) 振荡周期12若晶振的频率fosc=12MHZ,则最长定时时间为: TMAX=(28-T0初值) 1/12 12 us=256us例6.5 当外部引脚P3.4(T0)上电平发生负跳变时,从P1.0输出500us的同步脉冲,请编程实现功能. 解:(1)模式选择: 首先选T0为模式2,外部事件计数方式,当P3.4引脚上的电平发生负跳变时,T0计数器加1,举出标志TF0置1;然后改变T0为500us定时工作方式,并使P1.0输出由1变为0.定时器到产生溢出,使P1.0引脚恢复输出高电平,T0又恢复外部事件计数方式.定时/计数器工作在方式2时,定时初值的计算公式如下:(2)计算

9、初值 T0工作在外部事件计数方式,当计数到28时,再加1计数器就会溢出,设计数初值为X,当出现一次外部事件时,计数器溢出,则: X+1= 28 X=28-1=11111111B=0FFH T0工作在定时方式时,设晶振频率为6MHZ,500us相当于250个机器周期,因此,初值X为: (28-X) 2 us=500us X=28-250=06H(3) 程序清单 (2)计算初值START: MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 LOOP: JBC TF0,PTF01 SJMP LOOP01PTF0: CLR TR0 MOV TMOD,

10、#02H MOV TH0,#06H MOV TL0,#06H CLR P1.0 SETB TR0LOOP2: JBC TF0,PTF02 SJMP LOOP2 PTF02: SETB P1.1 CLR TR0 SJMP STARTSTART: MOV TMOD,#06H 例6.6 :利用定时器T1方式2对外部事件,要求每计满200个脉冲将P1.0端取反 解: 外部事件由T1(P3.5)引脚输入,每发生一次负跳变,计数器加1,每输入200个脉冲,计数器发生溢出中断,将P1.0取反一次. T1设置为方式2计数器状态,方式字为TMOD=60H 初值计算:X=28-200=56D=38H 因此TL1的

11、初值为38H,重装初值TH1=38H程序清单: 例6.6 :利用定时器T1方式2对外部事件,要求每计 MAIN: MOV TMOD,#60H MOV TL1,#38H MOV TH1,#38H MOV IE,#88H SETB TR1 HERE:SJMP HERE ORG 001BH CPL P1.0 RETI MAIN: MOV TMOD,#60H三、模式3: 模式3只适用于定时器T0,若将T1置为模式3,它将停止计数,其效果类同将TR1=0;即关闭定时器T1.T1只做为波特率发生器。 当T0工作在模式3下,TL0,TH0被分成两个相互独立的8位计数器。其中,TL0使用原T0的各位控制位,引

12、脚,中断源,即使用C/T,GATE,TR0,TF0和INT0引脚,其功能和操作与模式0和模式1相同,只是TL0只能使用8位寄存器,既可以工作在定时器方式也可以工作在计数方式。TH0只可作简单的内部定时器,定占用T1的控制位TR1,和T1的中断标志位TF1,同时也占用了T1的中断源,由TR1来负责启动和关闭。三、模式3:四、综合应用举例例6.7:设时钟频率为12MHz, 编写程序利用T1产生1S定时程序.解:(1)T1的工作模式的确定 因为定时器事件较长,采用哪一种工作方式适合? fosc=12MHz时,模式0最长可定时2131us=8.192ms 模式1最长可定时2161us=65.536ms

13、 模式2最长可定时281us=256us经分析,可选方模式1,定时事件为50ms,另设计一个软件计数器,初始值为20,每隔50ms中断一次,中断20次为1S.四、综合应用举例(2)求初值 (216-X)-1/(12106) 12=5013-3 X=65536-50000=15536=3CB0H 因此 (TH1)=3CH (TL1)=B0H(3)程序如下: ORG 0000H MAIN: MOV SP,#60H LJMP MAIN MOV R2,#20 ORG 001BH MOV TMOD,#10H AJMP SERVE MOV TL1,#0B0H ORG 2000H MOV TH1,#3CH

14、(2)求初值 SETB TR1 SETB ET1 SETB EA SJMP $ SERVE:MOV TL1,#0B0H MOV TH1,#3CH DJNZ R2,LOOP CLR TR1 LOOP: RETI END 例6.8 利用定时器T0方式2对外部事件计数,要求每次满200次后,从P1.0输出宽度为5ms的高电平,如此循环下去(设 fosc=12MHz) 解:根据题意,T0交替工作于计数方式和定时方式,先计数满200次后改为定时方式,1 ms后又回到计数方式,计数方式为方式2,定时器为方式1. T1的方式控制字:计数方式为TMOD=06H 定时方式为TMOD=01H T1的初值:计数初值

15、为:X=28-200=56D=38H 定时初值为EC78H例6.8 利用定时器T0方式2对外部事件计数,要求每次满2 ORG 0030H MAIN: CLR TR0 MOV TMOD,#60H MOV TH0,#38H MOV TL0,#38H SETB TR0 CLR P1.0 WAIT: JBC TF0, TIME SJMP START TIME: CLR TR0 SETB P1.0 MOV TMOD,#01H MOV TH0,#0ECH MOV TL0,#78H SETB TR0 WAIT1: JBC TF0,MAIN SJMP WAIT1 END ORG 0030H例6.9 利用T0确定INT0引脚上出现的正脉冲的宽度,将测到的机器周期的个数存入30H,31H中。 解: 设T0为定时器方式1,门控位GATE置1,初值为0 当INT0引脚变为高电平时,采用外触发方式启动T0定时,当外部INT0引脚变为低电平

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论