单片机原理及应用(C语言版)-定时器

上传人:飞*** 文档编号:46198687 上传时间:2018-06-23 格式:PPT 页数:40 大小:478.50KB
返回 下载 相关 举报
单片机原理及应用(C语言版)-定时器_第1页
第1页 / 共40页
单片机原理及应用(C语言版)-定时器_第2页
第2页 / 共40页
单片机原理及应用(C语言版)-定时器_第3页
第3页 / 共40页
单片机原理及应用(C语言版)-定时器_第4页
第4页 / 共40页
单片机原理及应用(C语言版)-定时器_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《单片机原理及应用(C语言版)-定时器》由会员分享,可在线阅读,更多相关《单片机原理及应用(C语言版)-定时器(40页珍藏版)》请在金锄头文库上搜索。

1、第2章 MCS-51单片机定时器/计数器目 录6.1 MCS-51定时器/计数 器的结构及原理 6.2 定时器T0、T1 6.3 定时器应用举例本章主要讨论MCS-51单片机定时器/计 数器的逻辑结构和工作原理。内容主要有 MCS-51单片机定时器T0、T1的逻辑结构, 工作方式的选择和应用。本章为单片机的主要内容,也是第七章 串行口的学习的基础。第6章 MCS-51单片机的定时器/计数器6.1 MCS-51单片机定时器/计数器的结 构及原理主要内容6.1.1 MCS-51单片机定时器的结构 6.1.2 MCS-51单片机定时器的工作原 理 6.1.3 定时器/计数器的控制寄存器6.1.1 M

2、CS-51单片机定时器的结构 MCS-51单片机定时器/计数器逻辑结构 图: 6.1.1 MCS-51单片机定时器的结构 MCS-51主要由如下构成: 两个16位的可编程定时器/计数器:定时器 /计数器0、1。 每个定时器有两部分构成:THx和TLx 特殊功能寄存器TMOD和TCON ,主要对 T0和T1进行控制。6.1.1 MCS-51单片机定时器的结构 引脚P3.5、P3.4输入计数脉冲。 定时器T0和T1是2个中断源,可以向CPU 发出中断请求。 特殊功能寄存器之间通过内部总线和控制 逻辑电路连接起来。6.1.2 MCS-51单片机定时器的工作原理 定时器/计数器T0和T1 的内部结构简

3、图如 下图所示。C/T=0中断请求振荡器TLx (8位)THx (8位)Tx12分频TFxC/T=1控制 TRx6.1.2 MCS-51单片机定时器/计数器的工作原理从上图可以看出: 定时器的实质是一个加1计数器。 C/T =0 ,为定时器方式。 计数信号由片内振荡电路提供,振 荡脉冲12分频送给计数器,每个机器周期计 数器值增1。例如:如果晶振频率为12MHz,则最高 计数频率为0.5MHz6.1.2 MCS-51单片机定时器/计数器的工作原理C/T =1 ,为计数方式。计数信号由Tx引脚(P3.4、P3.5和 P1.0)输入,每输入一有效信号,相应的 计数器中的内容进行加1。控制信号TRx

4、=1时,定时器启动。当定时器由全1加到全0时计满溢出,从0 开始继续计数,TFx=1 ,向CPU申请中 断。6.1.3 定时器/计数器的方式和控制寄存器1、T0、T1 工作模式寄存器TMOD 功能:确定定时器的工作模式。 其格式如图6-3所示:TMOD (89H)D7D6D5D4D3D2D1D0 GATE C/T M1 M0GATEC/TM1M0图6-3 定时器方式寄存器TMOD GATE外部门控制位。 GATE1,使用外部控制门。 TRx=1, P3.2(P3.3)=1时,启动定时器。6.1.3 定时器/计数器的方式和控制寄存器GATE0,不使用外部门控制计数器 C/T定时或计数方式选择位

5、。 C/T0时,为定时器 C/T1时,为计数器采样过程:CPU在每机器周期S5P2期间 ,输入信号进行采样。若前一机器周期采样 值为1,下一机器周期采样值为0,则计数器 增1,随后的机器周期S3P1期间,新的计数 值装入计数器。6.1.3 定时器/计数器的方式和控制寄存器M1、M0工作模式选择位。 如下表所示: 表6-1 定时器/计数器的工作模式M1M0工作模式功 能 00模式013位定时器/计数器 01模式116位定时器/计数器 10模式28位自动重置定时器/计数器11模式3定时器0:TL0为8位定时器/计 数器,TH0为8位定时器。 定时器1:无此方式定时器/计数器工作模式的选择方法 (1

6、)首先计算计数值N (2)确定工作模式 原则是尽可能地选择模式2 若 N 256选择模式2,否则选择模式1 (3)如果需要增加一个定时器/计数器 选择模式3。定时器/计数器初值X的计算方法 因为X + N = 28或216 所以X = 28或216-N (1)对定时器 设定时时间为tN = t/机器周期 所以X = 28或216- t/机器周期 (2)对计数器 X = 28或216- N6.1.3 定时器/计数器的方式和控制寄存器2、T0、T1的控制寄存器TCONTCON (88H)D7D6D5D4D3D2D1D0 TF1 TR1 TF0 TR0 IE1IT1IE0IT0图6-4 定时器的控制

7、寄存器 TF1、TF0:T1、T0的溢出标志位计数溢出,TFx=1。中断方式:自动清零;查询方式:软件清零。6.1.3 定时器/计数器的方式和控制寄存器TR1、TR0:T1、T0启停控制位。置1,启动定时器;清0,关闭定时器。 IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位 注意: GATE=1 ,TRx与P3.2(P3.3) 的配 合。模式1的逻辑结构及应用M1M001时,选择模式1。逻辑结构如下 页图所示。T0的结构:16位定时器/计数器。TL0:存放计数初值的低8位。TH0存放计数初值的高8位; 定时时间=(216-定时初值)机器周期 最大定时时间

8、:216机器周期6.2.2 模式1的逻辑结构及应用工作过程:当TL0计满时,向TH0进1; 当TH0计满时,溢出使TF0=1,向CPU申请 中断。6.4 定时器应用举例主要内容6.4.1 定时器的初始化 6.4.2 定时器应用举例6.4.1 定时器的初始化在使用定时器/计数器前,应首先对其进行初始 化编程。 一、定时器的初始化步骤 1、选择工作模式和工作方式。设置TMOD。 2、设置定时器的计数初值。设置THx和TLx。 3、中断设置:设置IE。 4、启动定时器。设置TCON。6.4.1 定时器的初始化二、定时器/计数器初值计算根据定时器/计数器的模式和方式,计算计数 初值。 计数器的长度为n

9、,则计数的最大值为2n 。 1、工作于定时方式 计数脉冲由内部的时钟提供,每个机器周期 进行加1。 设晶振频率为fosc,则计数脉冲的频率为 fosc/12,计数脉冲周期T=1/(fosc/12)。6.4.1 定时器的初始化如果进行定时时间为t,计数初值为X,则 :t=( 2n -X)12/fosc 2、工作于计数方式当工作在计数方式时,对外部脉冲计数。 利用计数器计数结束产生溢出的特性,来计 算初值X 。则有:X= 2n计数次数6.2.4 模式3的逻辑结构及应用例6-1 设单片机的振荡频率为12MHz,用 定时器/计数器0的模式1编程,在P1.0引脚产 生一个周期为1000s的方波,定时器T

10、0采用 中断的处理方式。 定时器的分析过程。 工作方式选择需要产生周期信号时,选择定时方式。定 时时间到了对输出端进行周期性的输出即可 。工作模式选择根据定时时间长短选择工作模式,选择模 式1。6.2.4 模式3的逻辑结构及应用定时时间计算:周期为1000s的方波要 求定时器的定时时间为500s,每次溢出时 ,将P1.0引脚的输出取反,就可以在P1.0上 产生所需要的方波。 定时初值计算:振荡频率为12MHz,则机器周期为1s。 设定时初值为X,(65536-X)1s=500sX=65036=0FE0CH 定时器的初值为:TH0=0FEH,TL0=0CH 6.2.4 模式3的逻辑结构及应用C语

11、言程序: #include /包含特殊功能寄存器库 sbitP1_0=P10; /进行位定义 void main( ) TMOD=0x01; /T0做定时器,模式1 TL0=0x0c; TH0=0xfe;/设置定时器的初值 ET0=1; /允许T0中断EA=1; /允许CPU中断 TR0=1; /启动定时器 while(1); /等待中断 6.2.4 模式3的逻辑结构及应用void time0_int(void) interrupt 1 /中断服务程序 TL0=0x0c; TH0=0xfe;/定时器重赋初 值 P1_0=P1_0;/P1.0取反,输出 方波 6.4.2 定时器的应用举例例6-2

12、 利用定时器精确定时1s控制LED以 秒为单位闪烁。已知fosc=12MHz。 分析:定时器/计数器在定时方式下,各个 模式最大定时时间分别为:6.4.2 定时器应用举例模式0=(8192-0)12/fosc=8.192ms 模式1=(65536-0)12/fosc=65.536ms 模式2=(256-0)12/fosc=0.256ms选择模式1。定时时间为10ms,当10ms的 定时时间到,TF1=1,连续定时100次,调用 亮灯函数;再连续定时100次,调用灭灯函数 。循环工作,即达到1s闪烁1次的效果。 1、初值计算: (65536-X)12/fosc=10ms 初值X=55536=0D

13、8F0H6.4.2 定时器应用举例#include sbit LED=P10; unsigned char i; void main() LED=0;/定义灯的初始状态为灭 TMOD=0x10;/设置定时器1工作在模式1 TL1=0xf0; TH1=0xd8;/设置定时初值 TR1=1; /启动定时器1 ET1=1;/允许定时器1中断 EA=1; i=0; while(1); void timer1_int() interrupt 3 TL1=0xf0;/定时器重装初值 TH1=0xd8; i+; if(i=100) LED=LED; i=0; 6.4.2 定时器的应用举例例6-3 利用定时器

14、T1的模式2对外部信号进行 计数,要求每计满10次,将P1.0端取反。 分析:T1工作在计数方式。脉冲数100。 模式2,模式字TMOD=0110b。 1、初值计数: 在模式2下:X= 28-100=156D=9CH 2、C语言程序: #include sbit p1_0=p10;/进行位定义6.4.2 定时器的应用举例void main ( ) TMOD=0x60;/T1工作在模式2, 计数 TL1=0xf6;/装入计数(重装)初值 TH1=0xf6; ET1=1;/允许定时器1中断 EA=1;/开中断 TR1=1 ;/启动定时器1 while(1); 6.4.2 定时器的应用举例void

15、time0_int(void) interrupt 3 /中断服务 程序 P1_0=P1_0;/取反,产 生方波 6.4.2 定时器的应用举例例6-4 某一应用系统需要对INT0引脚的正脉 冲测试其脉冲宽度。 分析:可以设置定时器/计数器0为定时方式, 工作在模式1,且置位GATE位为1,将外部需测 试的脉冲从INT0引脚输入,设机器周期为1s。6.4.2 定时器的应用举例 C语言程序: 计算脉宽和处理程序略。 #include sbit P3_2=P32; unsigned int_test( ) TMOD=0x09; TL0=0x00; TH0=0x00; while(P3_2); TR0=1;6.4.2 定时器的应用举例while(!P3_2); while(P3_2); TR0= 0; return (TH0*256+TL0); 6.4.2 定时器的应用举例例6-5 某应用系统要求通过P1.0和P1.1口 分别输出脉冲周期为200s和400s的方波, fosc=6MHz。分析:需要两个定时器。可以选择使用 定时器/计数器0,设置为定时模式,工作模式 3,分成两个8位的定时器。 1、计算定时初值。 t=(256 -X)12/fosc 初值分别为0CEH和9CH。6.4.2 定时器的应用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号