单片机基础4.

上传人:n**** 文档编号:93086383 上传时间:2019-07-16 格式:PPT 页数:86 大小:2.71MB
返回 下载 相关 举报
单片机基础4._第1页
第1页 / 共86页
单片机基础4._第2页
第2页 / 共86页
单片机基础4._第3页
第3页 / 共86页
单片机基础4._第4页
第4页 / 共86页
单片机基础4._第5页
第5页 / 共86页
点击查看更多>>
资源描述

《单片机基础4.》由会员分享,可在线阅读,更多相关《单片机基础4.(86页珍藏版)》请在金锄头文库上搜索。

1、,电子系统设计 定时器与中断,王中方 西安交通大学电信学院 2016年12月,Keil C51程序设计中几种精确延时方法 空操作延时,可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。 如延时10 s的延时函数可编写如下 void Delay10us( ) _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); _NOP_( ); 可读性差,可以把这一函数当作基本延时函数,在其他函数中调

2、用,即嵌套调用,以实现较长时间的延时;但需要注意,如在Delay40us( )中直接调用4次 Delay10us( )函数,得到的延时时间将是42 s,而不是40 s。这是因为执行Delay40us( )时,先执行了一次LCALL指令(2 s), 通过修改基本延时函数和适当的组合调用,上述方法可以实现不同时间的延时。,C语言中嵌套汇编程序实现延时,与C语言相比,在编写汇编程序的时候可以清楚地知道执行每一条指令所需的机器周期,从而精确确定其执行时间。Keil C51开发环境可以实现C语言中嵌入汇编语言,可以在延时程序设计时,结合汇编语言的优点,精确确定延时时间 #pragma asm 汇编语言程

3、序段 #pragma endasm,For循环进行延时,在单片机开发过程中,for语句和while 语句也经常用于延时程序的设计。设晶振频率 为12 MHz void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-) delay_50us(1):延时63us delay_50us(10):延时513us delay_50us(100):延时5013us delay_50us(1000):延时50022us,使用示波器确定延时时间,利用示波器来测定延时程序执行时间。方法如下 void Delay1ms() unsigned char

4、j,i; for(i=4;i0;i-) for(j=110;j0;j-); 。 P0,80C51的定时/计数器,实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法:,软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。 采用时基电路定时:定时值与定时范围不能由软件进行控制和修改,即不可编程。 采用可编程芯片定时:在单片机的定时/计数器不够用时,可以考虑进行扩展。,8,第5章 定时器/计数器及其应用,5.1 定时器的结构及工作原理 5.2 定时器的TMOD和TCON寄存器 5.3 定时器的工作方式 5.3.1 方式0 5.3.2 方式1 5

5、.3.3 方式2 5.3.4 方式3 5.4 定时器的编程和应用,9,10,5.1 定时器的结构及工作原理,组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成。 定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、 TL1构成 工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式; 控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态;,8051定时器 内部结构框图,11,5.1 定时器的结构及工作原理,当控制信号 工作在定时方式;计数脉冲来自内部时钟脉冲,每个机器周期计数值增1,每个机器周期=12个振荡周期,因此计

6、数频率为振荡频率的1/12。所以定时时间=计数值机器周期 当控制信号 工作在计数方式;计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。当输入信号发生由1至0的下降沿时,计数器(TH0,TL0或TH1,TL1)的值增1。,12,控制信号K可以控制计数器的“启动”和“停止”,,13,5.1 定时器的结构及工作原理,定时/计数器对输入信号的要求 外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。 输入信号的高、低电平至少要分别保持一个机器周期。 如图所示,图中Tcy为机器周期。,14,5.2 定时器的寄存器,8051单片

7、机定时器主要有几个特殊功能寄存器组成: TMOD,TCON,TH0,TL0,TH1,TL1。 TMOD:设置定时器的工作方式; TCON:控制定时器的启动和停止和中断申请; TH0和TL0 :存放定时器T0的初值或计数结果; TH0存放高8位,TL0 存放低8位; TH1和TL1 :存放定时器T1的初值或计数结果; TH1存放高8位,TL1 存放低8位;,5.2.1工作方式寄存器TMOD,工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:,GATE:门控位。 GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;

8、GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。,:定时/计数模式选择位。 0为定时模式; =1 为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。,复位时,所有位均为0,17,低4位与外部中断有关,后面介绍。高4位的功能如下: (1) TF1、TF0 计数溢出标志位 定时器T0或T1计数溢出时,由硬件自动将此位置“1”; TFx可以由程序查询,也是定时中断的请求源; (2) TR1、TR0 计数运行控制位 TRx=1: 启动定时器/计数器工作 TRx=0: 停止定时器/计

9、数器工作,5.2.2 控制寄存器TCON,18,MCS-51的定时器T0有4种工作方式: 即:方式0,方式1,方式2,方式3。 MCS-51的定时器T1有3种工作方式: 即:方式0,方式1,方式2。,5.3 定时器的工作方式,19,5.3.1 方式0 M1、M0设置为00 ,为13位计数器,以T1为例,其框图如下:,5.3 定时器的工作方式方式0,计数脉冲输入,加1计数器,20,5.3 定时器的工作方式方式0,在这种方式下,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位组成。TL1的高3位不定。 当TL1的低5位计数溢出时,向TH1进位。而TH1计数溢出时,则向中断标志位

10、TF1进位(即硬件将TF1置1),并请求中断。 可通过查询TF1是否置“1”或考察中断是否发生来判定定时器T1的操作完成与否。,21,5.3 定时器的工作方式方式0,当C/T=0时,为定时工作模式,开关接到振荡器的12分频器输出上,计数器对机器周期脉冲计数。其定时时间为: (213-初值)振荡周期12 例如:若晶振频率为12MHz,则最长的定时时间为(213-0)(1/12)12us=8.191ms 当C/T=1时,为计数工作模式,开关与外部引脚T1(P3.5)接通,计数器对来自外部引脚的输入脉冲计数。当外部信号发生负跳变时计数器加1。,22,5.3 定时器的工作方式方式0,GATE控制定时器

11、Tx(T1或T0)的条件: (1) 当GATE=0时,“或门”输出恒为1,“与门”的输出信号K由TRx决定(即此时K=TRx),定时器不受INTx输入电平的影响,由TRx直接控制定时器的启动和停止。 TRx=1;计数启动; TRx=0;计数停止; (2) 当GATE=1时, “与门”的输出信号K由INTx输入电平和TRx位的状态一起决定(即此时K=TRxINTx), 当且仅当TRx=1且INTx=1(高电平)时,计数启动; 否则,计数停止。可以对脉冲的高电平宽度计时,23,5.3.2 方式1 M1、M0=01,为16位的计数器,除位数外,其他与方式0相同。 其定时时间为:216-初值)振荡周期

12、12 例如:若晶振频率为12MHz,则最长的定时时间为 (216-0)(1/12)12us=65.536ms,5.3 定时器的工作方式方式1,计数个数与计数初值的关系为:,24,5.3.3 方式2 M1、M0=10 ,为自动恢复初值的8位计数器,等效框图如下: TLx作为8位计数器,THx作为重置初值的缓冲器。,5.3 定时器的工作方式方式2,THx作为常数缓冲器,当TLx计数溢出时,在置“1”溢出标志TFx的同时,还自动的将THx中的初值送至TLx,使TLx从初值开始重新计数。,25,优点: 方式0和方式1用于循环重复定时或计数时,在每次计数器挤满溢出后,计数器复0。若要进行新一轮的计数,就

13、得重新装入计数初值。这样一来不仅造成编程麻烦,而且影响定时精度。 方式2具有初值自动装入的功能,特别适合于用作较精确的脉冲信号发生器。 缺点: 只有8位计数器,定时时间短、计数范围小。其定时时间为: (28-初值)振荡周期12 若晶振频率为12MHz,则最长的定时时间为 (28-0)(1/12)12us=0.256ms,5.3 定时器的工作方式方式2,方式2工作过程图 (x=0, 1) 。,5.3 定时器的工作方式方式3,工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。,方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。,27,5.3.4 方式3 只

14、适用于定时器/计数器T0。T1不能工作在方式3。 如果将T1置为方式3,则相当于TR1=0,停止计数 (此时T1可用来作串行口波特率产生器) 。 1. 工作方式3下的T0 T0在方式3时被拆成两个独立的8位计数器:TH0和TL0。 8位计数器TL0使用T0的状态控制位C/T*、GATE、TR0、INT0,它既可以工作在定时方式,也可以工作在计数方式。 8位定时器TH0被固定为一个8位定时器(不能作外部计数模式) ,并使用定时器T1的状态控制位TR1,同时占用定时器T1的中断请求源TF1。此时,定时器TH0的启动或停止只受TR1控制。 TR1=1时,启动TH0的计数; TR1=0时,停止TH0的

15、计数,5.3 定时器的工作方式方式3,28,5.4 定时器的编程和应用,MCS-51单片机的定时器/计数器是可编程的,但在进行定时或计数之前要对程序进行初始化,具体步骤如下: (1)对TMOD赋值,以确定定时器的工作模式; (2)置定时/计数器初值,直接将初值写入寄存器的TH0、TL0或TH1、TL1; (3)根据需要,对IE置初值,开放定时器中断; (4)对TCON寄存器中的TR0或TR1置位,启动定时/计数器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。,29,5.4 定时器的编程和应用,初值计算: 设计数器的最大值为M,则置入的初值X为: 计数方式: X=M-计数值 定时

16、方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。 (模式0: M为213,模式1: M为216,模式2和3: M为28),例如:机器周期为1s 时, 若工作在模式0,则最大定时值为:2131s =8.192ms 若工作在模式1,则最大定时值为: 2161s =65.536ms 模式2、3 最大定时为 281s =256us,30,5.4 定时器的编程和应用,例5-1 要在P1.0上输出一个周期为2ms的方波,假设系统振荡频率采用12MHz。 利用T0方式0产生1ms的定时 方波的周期用T0来确定,让T0每隔1ms计数溢出1次,即TF0=1;查询到TF0=1 则CPU对P1.0取反。,即要使P1.0每隔1ms取反一次。,31,5.4 定时器的编程和应用,第一步: 确定工作方式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

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