




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
mcs-51 单片机原理及应用 mcs-51单片机 定时器/计数器 单片机的定时计数器 单片机应用系统中定时计数的需求: 如用单片机控制的打铃器、空调的定时开关、啤酒自动生产 线上对酒瓶的计数装置等。 80c51单片机片内的定时/计数器: 两个位可编程的定时计数器:t0和t1,都能定时和对 外部事件进行计数。 此外,t1还可以作为串行接口的波特率发生器。 定时计数器的结构 .定时和计数的原理 (1)计数 定时计数器的实质是在处置基础上的加计数 器(位), 16位定时/计数器的计数容量是65536 单片机是对脉冲个数计数,计数器每 接收到一个脉冲,计数值加1, 当接收满65535个脉冲后,再 来一个脉冲,计数值清0表明 这一轮计数结束,同时将标 志位tf0或tf1置1。 (2)定时 单片机内部的计数器用作定时器时,是对标准的 时钟进行了计数,每来一个时钟脉冲,计数器加1, 只要保证计数脉冲的间隔相等,则计数值就代表了 时间的流逝。 计数器如何能作为定时计数器如何能作为定时 器使用呢?器使用呢? 单片机中的定时器和计数器其实是一个器件: 计数器:是对外部发生的事件进行计数, 定时器:是对单片机内部的标准时钟脉冲进行 计数。 单片机内部的标准时钟单片机内部的标准时钟 脉冲是如何获得的呢?脉冲是如何获得的呢? 由单片机的晶振经过12分频后得到。由于晶振的频率很准, 所以这个时钟脉冲的时间间隔也很准。当单片机采用12 的晶振时,它提供给计数器的脉冲频率是 ,脉冲周期就是微秒。 定时/计数器t0的结构示意图 获得标准时间 单片机内部的16位定时计数器由高8位和低8位 两个寄存器组成: l t0由th0和tl0组成, l t1由th1和tl1组成, 定时计数器的计数值就存放在这里面。定时/计 数器t1的结构与t0相同。 定时/计数器的结构 16位定时计数器计满65536个脉冲时,也会发生溢出。 定时计数器溢出后标志位tf0(或tf1)由0变1,由此能 够引发定时中断(在中断定时方式下),这就像定时的时间一 到,闹钟就会响一样。 如果采用12的晶振,对应的脉冲周期是微秒,计 满65536个脉冲所对应的时间就是65.536ms。 定时/计数值的设置 计数器的道理是一样的,只要用预置数的方法先在计数 容器内存入一个初值 ,如我们要计100,那就存入65436, 只要再来100个脉冲,就刚好会溢出,引发中断。 在时钟频率为12mhz的情况下,每个时钟脉冲是1微秒 ,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则 存入初值55536,(10毫秒是10000微秒,需计数10000 个脉冲)。可见, 定时器的定时时间长短与系统时钟和定时器初值有关 。 说明 1. 当定时计数器用作计数器时,通过引脚p3.4、p3.5 对外部输入脉冲计数。 2 . 定时计数器t0(t1)启动运行后,会按设定的工作方 式独立进行计数,不再占用cpu时间。当计数器t0(t1)计 满溢出时,tf0(tf1)置1,向cpu发出中断请求信号。 定时器初值的设置 th1tl1th0tl0 tcon tmod 启动 启动溢出 溢出工作 方式 工作 方式 中断请求 内部总线 tcyt1t0 定时器/计数器的初始化 定时/计数器的方式寄存器tmod tmodd7d6d5d4d3d2d1d0 (89h)gatec/tm1m0gatec/tm1m0 定时器1定时器0 其中: m1、m0为工作方式选择位 ,用于对t0的四种工作方式,t1的三 种工作方式进行选择,选择情况如下 m1m0工作方式方式说明 00013位定时/计数器 01116位定时/计数器 1028位自动重置定时/计数器 113两个8位定时/计数器(只有t0有) c/t:定时或计数方式选择位,当c/t=1时工作于计数方式;当c/t=0 时工作于定时方式。 gate:门控位,用于控制定时/计数器的启动是否受外部中断请求信号 的影响。 l例如 :设定时/计数器 t0 为定时工作方式 1 。 设定时/计数器 t1为计数方式2和t0 为定时工作方式 1 tmodd7d6d5d4d3d2d1d0 (89h)gatec/tm1m0gatec/tm1m0 定时器1定时器0 mov tmod,#01h;tmod0000 0001b mov tmod, #61h; tmod0110 0001b 定时/计数器的控制寄存器tcon tcond7d6d5d4d3d2d1d0 (88h)tf1tr1tf0tr0ie1it1ie0it0 其中: tf1:定时/计数器t1的溢出标志位,当定时/计数器t1计满时,由 硬件使它置位,如中断允许则触发t1中断。进入中断处理后由内部硬 件电路自动清除。 tr1:定时/计数器t1的启动位,可由软件置位或清零,当tr1=1时 启动;tr1=0时停止。 定时器计数器初值计算 l定时器计数器用于定时或计数时,必须按照需要给计数 器设置初值。定时器计数器在计数初值的基础上以加1 的方式进行计数,在计数器从全1变为全0时,将自动产生 溢出中断请求。 (1)计数初值计算 l 假设要计数的值为x,由于计数器是加工计数器,所以 定时器计数器的初值为 2 x: 其中n的值依赖于工作方式, 对于方式 0,n= 13;即初值=8192-x 对于方式 1,n= 16;即初值=65536-x 对于方式 2和方式 3,n=8;即初值= 256-x n 2)定时初值计算 l定时就是定时间,假设晶振频率为f,定时时间为t,对应 的计数值为x,此时计数器是将系统时钟12分频后作为计 数脉冲,则以下等式成立。 l 要装入的计数器初值 ci= 2 tfosc/12。 例如:已知晶振的频率为 6 mhz,要求定时为2 ms,则 当为方式0时,应装入的计数初值为; 8192210 610 /12 = 8192-1000 = 7192 n 36 u 定时时间常数初值x: 方式0 x=8192-t(fosc/12) 方式1 x=65536-t(fosc/12) 方式2、方式3 x=256-t(fosc/12) 其中t是需要定时的时间,单位是微秒;fosc是晶振 u 计数时间常数x: 方式0 x=8192-s 方式1 x=65536-s 方式2、方式3 x=256-s 说明:式中s是需要计数的次数 定财器计数器初始化步骤 1)确定工作方式:把工作方式控制字写入到tmod中; 2)设置定时或计数的初值:根据问题要求,求出定时或计 数的初值,写入到寄存器tho、tlo或thi、tli中。 3)如果需要中断,使定时器中断允许位et0或eti置位, 如果要求中断嵌套,还应设置相应的中断优先级,然后置 位ea,使cpu开放中断;如果不需要中断,仅以软件方式 对计数器溢出标志tfo或tfi进行查询,则可略去此步骤; 4)启动定时器计数器:将 tro或 tri置 1即可启动定时 器计数器。 定时/计数器的工作方式 一方式0 振荡器12 tlx (低5位) thx (高8位) tfx 与 或 tx trx gat e intx s2 s1 c/t tcy 中断请求 方式0是13位的定时/计数方式,因而最大计数值为 2的13次幂,等 于8192。如计数值为n,则置入的初值x为: x=8192-n 例如定时/计数器t0的计数值为1000,则初值为7192,转换成二进 制数为1110000011000b,则th0=11100000b,tl0=00011000b。 振荡器12 tlx (低8位) thx (高8位) tfx 与 或 tx trx gat e intx s2 s1 c/t tcy 中断请求 二、方式1 方式1是16位的定时/计数方式,因而最大计数值为 2的16次幂, 等于65536。如计数值为n,则置入的初值x为: x=65536-n 如定时/计数器t0的计数值为1000,则初值为65536- 1000=64536,转换成二进制数为1111110000011000b,则 th0=11111100b,tl0=00011000b。 三方式2 振荡器12 tlx (8位) thx (8位) tfx 与 或 tx trx gate intx s2 s1 c/t tcy 中断请 求 重装初值 8 方式2,16位的计数器只用了8位来计数,用的是tl0(或tl1)的 8位来进行计数,而th0(或th1)用于保存初值。当tl0(或tl1) 计满时则溢出,一方面使tf0(或tf1)置位,另一方面溢出信号又会 触发三态门,使三态门导通,th0(或th1)的值就自动装入tl0(或 tl1)。 特别适合于产生比较精 确的连续脉冲信号。 由于是8位的定时/计数方式,因而最大计数值为 2的8次幂,等于 256。如计数值为n,则置入的初值x为: x=256-n 如定时/计数器t0的计数值为100,则初值为256-100=156,转换成 二进制数为10011100b,则th0= tl0=10011100b。 注意: 由于方式2计满后,溢出信号会触发三态门自动地把th0(或th1) 的值装入tl0(或tl1)中,因而如果要重新实现n个单位的计数,不用 重新置入初值。 方式3只有定时/计数器t0才有,当m1m0两位为11时,定时/计数器 t0工作于方式3,定时/计数器t0被分为两个部分tl0和th0,其中, tl0可作为定时/计数器使用,占用t0的全部控制位:gate、c/t、 tr0和tf0;而th0固定只能作定时器使用,对机器周期进行计数, 这时它占用定时/计数器t1的tr1位、tf1位和t1的中断资源。 四、方式3 振荡器12 tl0 (8位) tf0 与 或 t0 tr0 gate int0 s2 s1 c/t tcy 中断请 求 th0 (8位) tf1 s2 中断请 求 t1 tr1 初始化程序 例3:某牛奶生产线上一个包装是12盒,要求每生产 12盒就执行装箱操作,用80c51单片机来控制,请编写初 始化程序。 思路与计算:要确定定时器(t0 或t1),选择其工作 方式。我们以t0的工作方式2为例,计算时间常数并赋值 给th0、tl0。 x=256-s=256-12=244=0f4h 2初始化程序: mov tmod,#06h ;t0作计数器,工作于方式2 mov th0,#0f4h ;装入时间常数初值 mov tl0,#0f4h ;自动重装时间常数 mov ie ,#00h ;用查询方式确定计满12盒? (或mov ie ,#82h);使用t0中断,计满12盒后, ;自动申请中断 setb tr0 ;启动t0波特率发生器 3总结:对计数过程是否结束有查询和中断两种方法,要 合理选择,并在程序设计中正确体现。 l例: 设 6m时钟,用定时/计数器to产生 1ms的 定时,并使p1.0输出 占空比 为1:1周期为 2ms的方波 l计算初值:方式0, 13位计数器 x=8192-t(fosc/12) =8192-1000x6/12 =7692 =11110000 01100 th0=0f0h tl0=0ch l程序: org0000h ajmpmain org000bh ;t0入口地址 ajmpout1 ;终端服务入口 main:movtmod,#00h ;置t0方式0 movth0,#0f0h ;初值高位 movtl0,#0ch ;初值低位 setbtr0 ;启动t0 setb et0 ;开定时器中断 setb ea ;开cpu中断 loop:nop sjmp loop ;等待 out1:cpl p1.0 ;p1.0去反 movth0,#0f0h ;初值高位 movtl0,#0ch ;初值低位 reti ;返回中断 proteus硬件仿真绘制电路原理图 proteus硬件仿真-参数设置 proteus硬件仿真波形测试 仿真后确定的低位初值 原始初值 proteus硬件仿真-频率测量 proteus硬件仿真最终初值 l接续上题,用 定时器t1完成上述功能 org0000h ajmpmain org001bh ;t1入口地址 ajmpout1 ;住程序入口 main:movtmod,#00h ;t1方式0 movth1,#0f0h ;初值高位 movtl1,#0ch ;初值低位 setbtr1 ;开to setb et1 ;开定时器中断 setb ea ;开cpu中断 loop: sjmp loop ;等待 out1:cpl p1.0 ;p1.0去反 movth1,#0f0h ;初值高位 movtl1,#0ch ;初值低位 reti ;返回中断 end l【例】设系统时钟频率为12mhz,编程实现从p1.1输出周 期为1s的方波。 l 先产生500ms的周期性的定时,定时到则对p1.1取反就可 实现。由于定时时间较长,一个定时/计数器不能直接实现 ,可用定时/计数器t0产生周期性为10ms的定时,然后用 一个寄存器r2对10ms计数50次或用定时/计数器t1对 10ms计数50次实现。系统时钟为12mhz,定时/计数器t0 定时10ms,计数值n为10000,只能选方式1,方式控制字 为00000001b(01h),初值x: lx=65536-10000=55536=1101100011110000b l则th0=11011000b=d8h,tl0=11110000b=f0h。 (1)用寄存器r2作计数器软件计数,中断处理方式。 汇编程序: org 0000h ljmp main org 000bh ljmp intt0 org 0100h main: mov tmod,#01h mov th0,#0d8h mov tl0,#0f0h mov r2,#00h setb ea setb et0 setb tr0 sjmp $ intt0: mov th0,#0d8h mov tl0,#0f0h inc r2 cjne r2,#32h,next cpl p1.1 mov r2,#00h next: reti end 利用定时器 to,使与 pi 0口连接的发光二极管每 is闪烁 一次。 解:使发光二极管闪烁也可以利用例61的方法,在时间 到18时,对pi0取反。然而晶振的频率为 6 mhz,定时 器所能定时的最长的时间为 131072 ms,我们先用定时 器计数器t0做一个100 ms的定时器,另外再设定一个计 数器count,每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒吧寻人活动方案
- 茶庄年会活动方案
- 高考会考试题及答案
- 高级防水考试题及答案
- 抚育技师考试题及答案
- 客户需求调研与问题解决方案
- 风景速描考试题及答案
- 我校招生宣传承诺书(3篇)
- 品牌宣传策略方案
- (正式版)DB15∕T 3355-2024 《规模化舍饲养羊主要疫病综合防治技术规程》
- 电梯维保员服务用语培训
- 审计案例分析单选题100道及答案解析
- 二年级上册《生态 生命 安全》教案
- 中交集团国考云题库
- 高龄患者PICC导管静脉血栓形成的个案分享课件
- 中国骨折内固定术后感染诊断与治疗专家共识
- 食品安全与日常饮食智慧树知到期末考试答案章节答案2024年中国农业大学
- 基础护理学第七版题附有答案
- (正式版)HGT 20593-2024 钢制化工设备焊接与检验工程技术规范
- 200个句子涵盖高中英语3500词汇
- 光线传媒公司章程
评论
0/150
提交评论