版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机接口定时器1计数器与定时器基础1计数概念的引入2计数器的容量
3定时
4溢出5任意定时及计数的方法预置数
例:16位计数器最大的计数值到65536要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗
251单片机的定时器51单片机有两个定时器:T0,T132/52单片机还有一个定时器:T2T0;T1有双重含义:引脚P3.4,P3.5。可以引入外部脉冲16位定时器/计数器电路模块,定时器数据寄存器(16位)。相关寄存器:TH0,TL0,TH1,TL1数据寄存器/定时计数器TMOD定时器模式寄存器TCON控制寄存器定时器工作原理定时器就是计数器定时器就是由若干个D触发器构成的计数器。计算机中多以16个D触发器构成,称为16位定时器/计数器。计数器能够记录输入脉冲的个数。计数器可以是加1计数方式,也可以是减1计数方式。标准脉冲(固定频率)输入时,称为“定时器Timer”,通常使用本机晶振分频得到。从引脚进入的脉冲,通常就把定时器改称“计数器Counter”可编程计数器/定时器可以选择多种CLK来源之一;可以设定加1或减1方式;可以写入起始计数值;它的溢出信号可以触发中断或者提供其他芯片/接口使用。好的定时/计数器有“重装载寄存器”用于存放计数初始值,当计数器溢出时,能自动将此数装入计数器并开始再次计数。可以开关计数器的工作。通用可编程定时/计数器框图晶振预分频溢出标志数据线重装/捕获/比较计数器启动开关脉冲源选择器时钟输入脚输出选择中断申请引脚PWM框图解释:重装/比较/捕获重装:当定时/计数器溢出时,能自动将“重装载寄存器”中的数据装入定时/计数器,继续工作而不需软件干预。比较:在定时/计数器数值变化过程中,当其数值与“比较寄存器”数值相等时,通过引脚输出电平变化,产生PWM波形。捕获:通过一个引脚输入的捕获脉冲(下降沿)触发,将计数器值读入捕获寄存器并申请中断。其作用类似“测量脉冲宽度”Intel8031的定时器有2个16位定时器(32系列有3个)。时钟来源有两种选择:f/12或引脚输入。可开关定时器的工作。只能作加1计数,计数初始值是溢出数的补码。可设置8位、13位、16位计数/定时;可以测量脉冲宽度。没有重装载寄存器(仅在方式2工作时,低8位计数溢出时使用高8位值重装,32系列的T2有16位重装载寄存器)。计数上溢出时可以产生中断申请。有独自的中断入口。51定时器框图i=0,1指:T0,T1和INT0,INT1T0,T1的模式寄存器TMODGATE 当使用INTi测量脉宽时置1,否则置0C/T 置1时选择Counter,时钟由引脚输入。 置0时选择Timer,时钟选用fosc/12M1M0 两位二进制数表示选择定时器模式为 模式0~3高4位管理定时器T1,低4位管理定时器T0GATEC/TM1M0GATEC/TM1MOMSBLSB定时器T0模式定时器T1模式定时器T0,T1的模式M1M0模式解释00013位,TLi的低5位和THi的8位组合01116位定时/计数器,最常用1028位自动重装载定时/计数,THi是重装载寄存器。T1常用作“波特率”发生器113T0分成两个8位定时/计数器,借用T1的控制位(参看TCON)控制TH0,T1只能工作于模式2或者停止工作。
方式2当MIM0为10时,选定方式2,方式2为TLx自动恢复初值(初始时间常数自动重新装入)的8位定时器/计数器方式。把TLx作为8位计数器,THx作为常数缓冲器,当TLx计数满溢出时,使溢出标志TFx置1,同时将THx中的8位数据常数重新装入TLx中.使TLx从初值开始重新计数。方式2常用于定时控制。例如希望每隔500uS产生一个定时控制脉冲,若采用6M的振荡器,使TL1=06H,TH1=06H,c/f=0就能实现,方式2还用作串行口波特率发生器。
方式3方式3只适用于T0,当T0工作在方式3时,TL0和TH0成为两个独立的8位计数器。使MCS51具有三个定时器/计数器(增加了一个附加的8位定时器/计数器)。TL0的操作与方式0和方式1类似。而TH0只能作8恢定时器用(不能用作计数器方式),并占用了T1的中断资源TR1和TH1。在这种情况下,T1可以设置为方式0一2,用于任何不需要中断控制的场合,或用作串行口的波特率发生器。通常.当T1用作串行口波特率发生器时,T0才定义为方式3,以增加一个8位计数器。计数器在不同模式时结构不同模式0,模式1的结构框图模式0时:低位5位,高位8位,共13位模式1时:低位8位,高位8位,共16位低位TFi中断申请高位F0/12+引脚Ti中断引脚INTiGATETRiC/T=0C/T=1计数器模式2时结构模式2时:低位作8位计数器,高位作重装载寄存器(看红色框图)低位TFi中断申请高位F0/12+引脚Ti中断引脚INTiGATETRiC/T=0C/T=1定时器T0的模式3结构模式3时:T0高8位也做计数器,但要借用T1的控制位TR1和标志位TF1以及中断资源。此时的T1只能工作于模式2或者休息。TL0TF0中断申请TH0TF1中断申请TR1F0/12+引脚T0中断引脚INT0GATETR0C/T=0C/T=1T0,T1的控制寄存器TCONTR0,TR1 定时器启动控制,置1时接通时钟(启动)TF0,TF1 定时器溢出标志,中断返回指令RETI能将此标志清0。查询方式时,需要用软件清零。TF1TR1TF0TR0IE1IT1IE0IT0MSBLSB外部中断INT0和INT1控制位定时器/计数器的应用要点使用定时器/计数器时,应首先对它进行初始化编程,主要对TMOD和TCON进行编程,并计算和装载 T/C的初值。通常分以下几个步骤:1.
初始化程序设计,主要是确定T/C的工作方式,即编程TMOD;2.
计算T/C中的计数初值,并装载到THx和TLx;3利用TCON启动T/C,(开中断)4.
编写查询服务(中断服务)程序。编程TMOD根据:定时/计数;是否测量外部信号宽度,定时器模式确定计算C/T中的计数初值1计算钟周期2计算定时常数(计数值)3计算预置值4确定TH,TL计算钟周期钟周期一般考虑晶振频率(暂不考虑引脚输入的时钟)。晶振6M时,钟周期=2uS;晶振12M时,钟周期=1uS;晶振24M时,钟周期=0.5uS。计算定时常数(计数值)定时计数值(脉冲个数)代表了定时量,主要参考是时钟周期:定时量(uS)=定时计数值×时钟周期(uS)计算预置值51单片机定时器是“加1”计数,定时量必须从“溢出”值倒推。我们称“溢出值”为“模”8位时,模=256256=FFH+1=溢出+00=0013位时,模=819216位时,模=65536定时器预置值=模-定时常数(计数值)定时器的预置值的确定的具体方法如下:在定时方式下,定时器是对机器周期脉冲计数的,若时钟频率采用6MHz,则一个机器周期位,机器周期=12/晶振频率=12/(6×106)=2μs,在各个工作方式下:方式0:13位定时器的最大时间间隔=213×2μs=16.384ms方式1:16位定时器的最大时间间隔=216×2μs=131.072ms方式2:8位定时器的最大时间间隔=28×2μs=512μs定时模式,模式0的预置值计算假设定时器工作在方式0,要求定时1ms,求计数初值。设计数预置值为x,则:(213-x)×2×10-6=1×10-3x=213–500=7692因此THx=0xF0H,TLx=0x0CH.定时模式,模式1的预置值计算模式1时,计数到达65536时产生溢出,因此以此数减去定时数作为定时器初始值。例如:晶振12M,T0模式1,定时10mS则:定时量=10000us,定时数=10000uS/1uS=10000定时器初始值=65536-10000=55536最后,还要将定时初始值分为高8位和低8位,分别送入THi和TLi中。方法:可以用计算器将其直接转换成16进制数,也可以将此数除以256,商为高8位,余数为低8位。55536=0D8F0HMOVTH0,#0D8HMOVTL0,#0F0H方式2:8位定计数器的最大计数值=28=256假设计数器工作在计数器方式2,要求计数100个脉冲的计数初值的计算如下。设计数初始值位x,则:28-x=100x=156因此THx=TLx=0x9CH。以下就定时器的工作方式0举例说明定时器的应用方法定时模式,模式2的预置值计算在计数方式下,T/C是对外部输入脉冲计数的,在各个工作方式下:方式0:13位计数器的最大计数值=213=8192方式1:16位计数器的最大计数值=216=65536方式2:8位计数器的最大计数值=28=256确定TH,TL根据工作模式确定方式0:TH高8位,TL低5位方式1:TH高8位,TL低8位方式2:TH=TL=8位
例1.假设时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,方波的周期用定时器T0中设置一个时间常数,使其每隔1ms产生一次中断,CPU响应中断后,在中断服务程序中对P1.0取非。T0中断入口地址为000BH。为此要做如下几步工作:1.设计初始化程序初始化程序包括:定时器初始化和中断系统初始化,主要是对IP(中断优先级寄存器)、IE(中断允许寄存器)、TCON(控制寄存器)、TMOD(工作方式寄存器)的相应位进行正确的设置,并将时间常数送入定时器中。在本例中,假设程序是从系统复位开始运行的,TMOD、TCON均为00H,因此不必对TMOD操作。2.确定定时器初值
机器周期=12/晶振频率=12/(6×10-6)=2μs设:需要初值为X,则(213-X)×2×10-6=1×10-3
(213-X)=500,得:X=7692
化为2进制X=。
根据13位定时器特性,初值应为:TH0=0F0H,TL0=0CH。
3.设计中断服务程序和主程序
中断服务程序除了完成要求的产生方波这一工作之外,还要注意将时间常数重新送入定时器中,为下一次产生中断做准备。主程序可以完成任何其他工作,一般情况下常常是键盘程序和显示程序。在本例中,由于没有这方面的要求,用一条转至自身的短跳转指令来代替主程序。
按上面设计的程序清单如下:程序清单ORG0000HRESET:AJMPMAIN;转移到主程序入口地址ORG000BH;中断处理程序
AJMPIT0PORG0100H;主程序MAIN:MOVSP,#60HACALLPT0M0HERE:AJMPHERE
PT0M0:MOVTL0,#0CH;T0置初值低位
MOVTH0,#0F0H;T0初值高位
SETBTR0;启动T0SETBET0;允许T0中断
SETBEA;CPU开放中断
RET;中断服务程序IT0P:MOVTL0,#0CH;T0置初值低位
MOVTH0,#0F0H;T0初值高位
CPLP1.0;P1.0取反
RETI例2编制一段程序,使P1.0端口线上输出周期为2ms的方波脉冲。设单片机晶振频率Fosc=6MHZ。方法:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。计算定时初值:机器周期MC=12/fosc=2us。所以定时lms所需的机器周期个数为500D,亦即0lF4H。设T0为工作方式1(16位方式),则定时初值是(01F4H)求补=FEOCH
ORG0000HRESET:AJMPMAIN ;主程序
ORG000BHAJMPIST0 ;转入T0中断服务程序入口地址IST0;初始化程序段MAIN:MOVTMOD,
#01H ;T0为定时器状态,工作方式1MOVTL0,#0CH ;T0的低位定时初值MOVTH0,#0FEH ;T0的高位定时初值MOVTCON,#10H ;打开T0SETBEA ;EA=1,即允许全局中断SETBET0 ;1ET0=1,即允许T0中断AJMP$ ;动态暂存
IST0:MOVTL0,#0CH ;重置定时器初值MOVTH0,#0FEH ;重置定时器初值CPLP1.0 ;P1.0取反RETI ;中断返回2模式0举例6M晶振,用T1的方式0产生250uS定时,并在P1.0输出周期为500uS的方波。定时常数计算:钟周期=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年靶放协同杀伤机制深度解读
- 2025年低空通信网络可靠性设计
- 2026 减脂期冷锅串串课件
- 老年性黄斑变性的护理与管理
- 脊椎关节外科患者的皮肤护理
- 2026 增肌期膳食纤维摄入课件
- 非奇异对称矩阵合同在材料科学中的应用合同合同三篇
- 2026年全面合作协议合同二篇
- 胸外科术后并发症的预防和护理
- 视网膜动脉阻塞的护理实践案例
- 室外pe管施工方案
- 抖音规则与机制课件
- 句容公寓买卖合同
- 高尔夫夏令营活动方案
- 国开2025年秋《农业推广》形成性考核1-3答案
- 基于供应链视角良品铺子营运资金管理优化策略
- GB/T 45891-2025肥料和土壤调理剂肥料原料中腐植酸和疏水性黄腐酸含量的测定
- 七年级数学专项训练:尺规作图+解析
- 毕业设计(论文)-年产一万吨的苏氨酸工厂设计
- 《智能客户服务实务》课程标准
- 液化石油气安全生产责任制考核试卷
评论
0/150
提交评论