第六章AT89S51单片机的定时器

上传人:bei****lei 文档编号:252472994 上传时间:2024-11-16 格式:PPT 页数:48 大小:667.50KB
返回 下载 相关 举报
第六章AT89S51单片机的定时器_第1页
第1页 / 共48页
第六章AT89S51单片机的定时器_第2页
第2页 / 共48页
第六章AT89S51单片机的定时器_第3页
第3页 / 共48页
点击查看更多>>
资源描述
点击添加标题,二级标题,三级标题,四级标题,Copyright,Http:/,*,SiChuan Engneering Colledge-1959,点击添加标题,二级标题,三级标题,四级标题,*,第六章 AT89S51单片机的定时器/计数器,1,本章主要内容:,6-1.,定时器,概述,6-2.,定时器,的控制,6-3.,定时器,的4种模式及其应用,6-4.,定时器/计数器综合应用举例,2,6.1 定时器概述,AT89S51单片机有2个16位的可编程定时器/计数器,称为定时器/计数器0和定时器/计数器1,分别由两个8位的特殊功能寄存器TH0、TL0和TH1、TL1组成。,3,用于定时控制、延时、外部事件计数和检测等场合。,每个定时器可由软件设置为定时工作方式或技术工作方式及其它灵活的可控功能方式,这些功能由TMOD和TCON所控制。,定时器的实质,16位加1计数器,4,定时器/计数器的结构和工作原理,定时器/计数器的结构,定时,器,/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。,T1计数器,T0计数器,控制单元,5,计数器工作原理,计数功能,所谓计数是指,对外部事件进行计数,。外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲的计数。,AT89S51芯片的信号引脚T0(P,3.4,)和T1(P,3.5,)分别是两个计数器的计数输入端。外部输入的脉冲在,负跳变时有效,,供计数器进行加 1 计数。,6,计数器工作原理,计数器输入的计数脉冲源,系统的时钟占当期输出脉冲经12分频后产生,通过T0或T1引脚对外部脉冲信号计数。,计数过程,每来一个脉冲计数器加1,当加到,计数器为全1(即FFFFH),时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。,7,计数器工作原理,计数方式下,单片机在每个机器周期的S5P2对计数脉冲输入引脚进行采样。如果前一个机器周期为高电平,后一个机器周期为低电平,即为一个有效的计数脉冲,在下一个机器周期的S3P1进行计数。由于采样计数脉冲是在2个机器周期完成的,所以,计数脉冲的周期不能小于2个机器周期,。,8,定时器工作原理,定时功能,定时功能是通过,对单片机内部脉冲进行计数来实现的,。即每个机器周期产生1个计数脉冲,使计数器加 1。,在使用定时器时,既可以根据计数值计算定时时间,也可以根据定时时间的要求计算出计数器的预置值。,9,定时与计数都是利用计数实现!,加法计数器是计满溢出时才申请中断,所以在给计数器赋初值时,不能直接输入所需的计数值,而应输入的是计数器计数的最大值与这一计数值的差值。,设最大值为M,计数值为N,初值为X,则X的计算方法为:,计数状态:X=MN,定时状态:X=M(定时时间,机器周期),10,62.1 工作模式寄存器:TMOD,字节地址:89H,(不可位寻址),位 序,D7,D6,D5,D4,D3,D2,D1,D0,位符号,GATE,C/T,M1,M0,GATE,C/T,M1,M0,定时器/计数器 1,定时器/计数器 0,功能:,用于设定定时器/计数器的工作方式(只能用字节传送指令设置其内容),TMOD的低半字节对应定时器/计数器 0,高半字节对应定时器/计数器 1,前后半字节的位格式完全对应。,6.2 定时器的控制,11,M1 M0,工作,方式,说 明,0 0,0,13 位定时器/计数器(TH的 8 位和TL的低 5 位),0 1,1,16 位定时器/计数器,1 0,2,自动重新装入初值的 8 位定时器/计数器,1 1,3,T0 分成两个独立的 8 位计数器,T1 停止工作,M1和M0:工作方式选择位,12,C/T:定时方式或计数方式选择位,C/T =0 定时工作方式,C/T=1 计数工作方式,GATE:门控位,GATE=0以运行控制位(TR0或TR1)启动定时器,GATE=1以外部中断请求信号(INT0 或INT1)启动定时器,13,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,位符号,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,6.2.2定时器/计数器控制寄存器:TCON,字节地址:88H 位地址:88H 8FH,(可位寻址),功能:,用于保存外部中断请求以及定时器的计数溢出。,TCON既有定时器/计数器的控制功能,又有中断控制功能,其中与定时有关的控制位共4位:TF1、TR1、TF0、TR0。,14,TF0和TF1:计数溢出标志位,当计数器产生计数溢出时,相应的溢出标志位由,硬件置“1”,。,计数溢出标志位的使用有两种情况:,使用中断方式时,作中断请求标志位来使用,在,转向中断服务程序时由硬件自动清“0”,。,使用查询方式时,作查询状态位来使用,,查询有效后应以软件方法及时将该位清“0”,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,位符号,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,位符号,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,15,TR0和TR1:运行控制位(软件置1或清0),TR0(TR1)=0 停止定时器/计数器工作,TR0(TR1)=1 启动定时器/计数器工作,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,位符号,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,16,中断允许控制寄存器:IE,字节地址:0A8H 位地址:0A8H 0AFH,其中与定时器/计数器有关的控制位共3位:,EA:中断允许总控制位,ET0和ET1:定时器/计数器中断允许控制位,ET0(ET1)=0禁止定时器/计数器中断,ET0(ET1)=1允许定时器/计数器中断,位地址,0AFH,0AEH,0ADH,0ACH,0ABH,0AAH,0A9H,0A8H,位符号,EA,ES,ET1,EX1,ET0,EX0,17,6.3 定时器的4种模式及应用,计数器工作方式选择,M1 M0,工 作 方 式,功 能 说 明,0 0,方式0,13位计数器,0 1,方式1,16位计数器,1 0,方式2,自动重装8位计数器,1 1,方式3,定时器0:分成两个8位,定时器1:停止计数,建议不采用该工作方式!,在精确定时采用该工作方式!,18,模式0,模式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。,13位计数器,计数/定时选择,中断请求,该方式计算不方便,建议不采用!,19,TF1,TR1,TF0,TR0,GATE,C/,T,M1,M0,GATE,C/T,M1,M0,1,&,1,1,0,T0引脚,INT0引脚,1,0,机器周期,TH0,TL0,8位,8位,溢出,TCON,TMOD,D0,D7,D7,D0,申请,中断,TF1,TR1,TF0,TR0,GATE,C/,T,M1,M0,GATE,C/T,M1,M0,1,&,1,1,0,T0引脚,INT0引脚,1,0,机器周期,TH0,TL0,8位,8位,溢出,TCON,TMOD,D0,D7,D7,D0,申请,中断,6.3.1 模式1及应用,模式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器。,16位计数器,20,例6-1,用定时器T1产生一个50Hz的方波,由P1.1输出。,方波周期为T=1/50=0.02s=20ms,用T1定时10ms,单片机采用12MHZ晶振,一个机器周期是1us,即是计数器计数10000次。,TH1=(65536-10000)/256;,TL1=(65536-10000)%256;,注意定时器的初值计算方法!,21,用查询方式编程,void main(),TMOD=0 x10;/T1模式1,定时,TR1=1;/定时器开始计数,while(1),TH1=(65536-10000)/256;,TL1=(65536-10000)%256;/装入计数初值,while(TF1!=1);,TF1=0;/清除T1溢出标志位,P1_1=P1_1;,22,用中断方式编程,初始化程序应该完成以下工作:,1.对TMOD赋值,以确定T0和T1的工作方式。,2.计算初值,并将其写入TH0、TL0或TH1、TL1。,3.中断方式时,则对IE赋值,开放中断。,4.使TR0或TR1置位,启动定时计数器。,23,程序流程:,开 始,P1.1置1,T1模式设置,T1初值设置(10ms),中断设置,开中断,循环等待中断,启动定时器T1,中断入口,T1初值设置(10ms),中断返回,P1.1取反,主程序流程,中断服务子程序流程,24,程序(主程序),#include,#define uchar unsigned char,#define uint unsigned int,sbit P1_1=P11;,void main(),TMOD=0 x10;/T1模式1,16位计数器,TH1=(65536-10000)/256;,TL1=(65536-10000)%256;/装入计数初值,EA=1;/开总中断,ET1=1;/开定时器1中断,TR1=1;/定时器开始计数,while(1);,25,程序(定时器1中断服务程序),void timer1_int(void)interrupt 3,TH0=(65536-10000)/256;,TL0=(65536-10000)%256;,/重新装入计数初值,P1_1=P1_1;,26,书上例题6.4.1,如何控制LED闪烁时间,注意:计算初值的思路。,27,书上例题6.4.2,计数器的应用,控制LED闪烁。,28,例题6-2,用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为0.25,设单片机的时钟频率为12MHz。,占空比:,在一串理想的脉冲周期序列中,正脉冲的持续时间与脉冲总周期的比值。,29,5.3.2 模式2及其应用,模式2为自动重装初值的8位计数方式。,在模式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。,8位计数器,TH1重装单元,30,二、模式 2 工作特点,可以自动重新装载的8位定时器/计数器。,在程序初始化时,TL0和TH0由软件赋予相同的初值。,用于定时工作方式时,定时时间为:,t=(2,8,TH0初值)振荡周期12,用于计数工作方式时,计数长度最大为:,2,8,=256,个脉冲,该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。,31,例6-3,当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲,请编程实现该功能。,方法1(只用T0)按照查询方式编程(请同学们自行编写)。,选择T0为模式2,电平发生负跳变采用外部计数方式。当P3.4引脚上发生负跳变时,T0计数器加1,溢出标志TF0置1,然后改变T0为500us定时方式,并使P1.0同步输入一个500us脉冲。,同步脉冲输出后T0又恢复外部事件计数方式。,32,方法2:计数用T0,采用查询方式,定时用T1中断,均采用模式2。,T0工作在外部事件计数方式,当计数达到0FFH时候,再加1计数器就会溢出。,T1工作在定时工作方式,设晶振频率为6MHz,500s相当于250个机器周期。因此,初值X为,(,2,56,X)2s=500s,X=6=06H,33,电路,用脉冲信号源模拟外部事件,用示波器对照显示P3
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!