




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第6 6章章 定时器定时器/ /计数器应用计数器应用 定时器定时器/ /计数器计数器 的控制的控制 定时器/计数器的 工作方式 知识点: 定时器定时器/ /计数器计数器 的初值的设置的初值的设置 定时器工作原 理 在实际工作、生活中,许多控制离不开时间。尤其是 定时控制更是以时间为核心,如家用的洗衣机中的洗涤、 脱水都是定时的。 单片机又是如何完成定时的呢? 通过前面的学习,当晶振频率一定时,单片机 的机器周期相应固定,如晶振频率为12mhe时单片机的机 器周期为1s。单片机对其机器周期进行计数便可以实现 定时。如计数值为1000则定时1ms、如计数值为1000000则 定时1s,以此类推。 本章要解决的是单片机如何完成对机器周期进 行计数。 问题的提出 振荡器12 加1计数器tfx 起停 控制信号 ct=0 ct=1 中断 tx端 mcs-51单单片机片内有两个16位的定时时器计计数 器,定时时器0(t0)和定时时器1(t1)。它们们均可用作定 时时控制、延时时以及对对外部事件的计计数及检测检测 。 当外部晶体振 荡器为12mhz时 ,它提供(输出) 12mhz的脉冲。 经过除以12变成 1mhz的脉冲 记住:此时脉冲的周期 为11mhz= 1s 当ct=0 时,开关接 通 在起停控制 信号中“起”信号作 用下开关接通 加1计数器对 1mhz的脉冲进行 自动计数,直至计 数器计满 当计数器计满时, 自动将tfx置“1” ,作为向单片机中 断请求信号。 当ct=1时,开 关向下接通,tx 端的外部信号至此 在起停控制 信号中“起”信号作 用下开关接通 加1计数器对 1mhz的脉冲进行 自动计数,直至计 数器计满 当计数器计满时, 自动将tfx置“1” ,作为向单片机中 断请求信号。 由此可见:定时器计数器的核心是一个加1计数器。 16位的定时器计数器分别由两个8位的专用寄存 器组成,即t0由th0和tl0构成,t1由thl和tll构成。 0000000000000000 th0tl0th0tl0 0000000100000000 t0 输入 tl0、tl1、th0、th1的地址顺序依次是8ah、8bh、8ch、8dh。这些 寄存器用来存放定时或计数初值,每个定时器都可以由软件设置成定时工作 方式或计数工作方式。 定时器计数器可工作在定时方式或计数方式,由方式寄存器tmod确 定,由控制寄存器tcon控制。 注意: 1、当定时器工作在计数方式时,外部输人信号是加到t0(p34)或t1(p3 5)端。 一个外部输入信号的下降沿触发加1计数器加1,直至计满溢出。 外部输入信号的高电平与低电平保持时间均需大于一个机器周期。 2、当定时/计数器工作在定时方式时,加1计数器每一个机器周期加1,直 至计满溢出。 一旦定时器计数器被设置成某种工作方式后,它就会按设定的工 作方式独立运行,不再占用cpu的操作时间,直到加1计数器计满溢出, 才向cpu申请中断。 定时器计数器是一种可编程的部件,在 其工作之前必须做三件事: 1、将方式字写入tmod 2、将计数初值写入相应计数器 这个过程称为定时器计数器的初始化 3、将控制字写入tcon 定时器计数器工作 方式及控制 tmod用于控制t0和t1的工作方式,其各位定义如下: 工作方式寄存器 tmod tcon用于控制定时器的启动、停止以及标明定时器的 溢出和中断情况。各位的含义如下: 控制寄存器tcon tmod中的m1、m0具有4种组合,从而构成了定 时器计数器的4种工作方式,这4种工作方式除 了方式3以外,其它3种工作方式的基本原理都是 一样的。 下面分别介绍4种工作方式的特点及工作情况 。 定时器计数器的工作方式 在单片机中定时计数的原理是对其寄存器的内容完成对机器周期 外部脉冲进行+1计数直至溢出。为了获取不同时间不同脉冲个数, 只要对寄存器预先写入一个数据就可以实现。这个数据称为初值。 工作方式0 x 200ml n 其中: 200ml:最大值 n:计数值 x: 初值 方式0:16位的计数器(tho和tl0)只 用了13位构成13位定时器计数器。 tl0的高3位未用,当tl0的低5位计满 时,向th0进位,而th0溢出后对中断标志 位tf0置1,并向cpu申请中断。 13位计数器: 最大计数值为8192(相当200ml) 定时值t(相当n ,但t 是时间单位) 初值(相当x ) 即:t/机器周期+初值= 8192 t=(t0初值)机器周期 1、初值 根据上式可知:初值= - t/机器周期 例如:定时值为5000s,机器周期为1s 初值=8192-5000/s=3192=0000110001111000b 将初值写入t0寄存器的方法是:高8位写入01100011th0,低5位11000写入tl0 例如:要求计满129个外部脉冲后溢出中断,则 计数初值为8192-129=8063=1f7fh 即tlo=1fh、th0=fbh 又如:已知单片机的机器周期为1s,要 求定时值到达5000s时溢出中断,则定时初值 为8192-(5000ss) = 3192=0c78h 即tlo=18h、th0=63h 2、控制 t0工作在方式1的逻辑结构如下图所示 。由图可见,它与工作方式0的差别仅在于 工作方式1是以16位计数器参加计数,且定 时时间为: t=(216t0初值)机器周期 即:初值= 216t/机器周期 工作方式1 t0在工作方式2的逻辑结构如下图所示。 工作方式2 定时器/计数器构成一个能重复置初值的8位计 数器。 在工作方式0、工作方式1中,若用于重复定 时计数,则每次计满溢出后,计数器变为全0,故 还得重新装入初值。 而工作方式2可在计数器计满溢出时自动装入 初值,工作方式2把16位的计数器拆成两个8位计 数器。tl0用作8位计数器,th0用来保存初值, 每当tl0计满溢出时,可自动将th0的初值再装 入tl0中。工作方式2的定时时间为: t=(28t0初值)机器周期 即:初值=256- t/机器周期 工作方式3的逻辑结构图如下图所示。 工作方式3 该工作方式只适用于定时器计数器t0。t0 在工作方式3被拆成两个相互独立的计数器,其中 ,tl0使用原t0的各控制位、引脚和中断源ct 、gate、tr0、int0 和tf0; 而th0则只能作为定时器使用,但它占用t1 的tr1和tf1,即占用了t1的中断标志和运行控 制位。 一般在系统需增加一个额外的8位定时器时, 可设置为工作方式3,此时,t1虽仍可定义为工 作方式0、工作方式1和工作方式2,但只能用在 不需中断控制的场合。 1、要求计满2000个外部脉冲后溢出中断,方式0,求 计数初值的tl0=?、th0=? 2、已知单片机的机器周期为1s,要求定时值到达 7000s时溢出中断,定时、方式1,求定时初值的 tl0=?、th0=? 3、t0方式1,定时值5ms,th0=?、tl0=? 4、t1方式2,定时值250s,th1=?、tl1=? th0=c1tl0=10 th0=e4tl0=a8 th0=ectl0=78 th0=06tl0=06 应用定时器/计数器时应注意两点:一是初始 化(写入控制字),二是对初值的计算。 初始化步骤为: 向tmod写工作方式控制字。 向计数器tl、th装入初始值。 置tr=1,启动计数。 置et=1,允许定时器计数器中断(若需要时)。 置ea=1,cpu开中断(若需要时)。 定时器/计数器应用举例 例如:设t0为工作方式1,设置为定时状态,定时时间 为2ms,每当2ms到,申请中断,在中断服务程序中将p1.0 的内容取反送出(假设晶振为6mhz)。 解:已知晶振频率为6mhz,机器周期=2s 下面先计算2ms定时的to初始值 当t0工作在方式1时 to初始值=216-定时时间机器周期 =216-2ms 2s 216210-310-6 =65536-1000=64536 =fc18h。 即:th0=fch、tl0=18h 由于题目要求t0工作在方式1,所以tmod=01h 编程如下: org 0000h ; ajmp main ;转转主程序 org 000bh ; int: mov tl0,#18h ;t0中断服务务程序 mov th0,#0fch ;重设计设计 数初值值 cpl p1.0 ; 输输出取反 reti ; main:mov sp,#63h ;置堆栈栈指针针 mov tmod,#01h ;t0初始化 mov tl0;#18h ; mov th0;#0fch; setb tr0 ;启动动t0计计数 setb et0 ;允许许t0中断 setb ea ;cpu开中断 rll: sjmp rll ;等待 end 主程序与中断服务程序的关系 中断程序 主程序main 返回 中断响应 中断服务程 序入口地址 reti org 000bh int: mov tl0,#18h mov th0,#0fch cpl p1.0 reti main:mov sp,#63h mov tmod,#01h mov tl0;#18h mov th0;#0fch setb tr0 setb et0 setb ea rll: sjmp rll end 又例如:当gate=1时,tr0=1时,只有into 引脚上出现高电平时,t0才被允许计数。试利用 这一功能测试into引脚上的正脉冲的宽度(机器 周期数)。 设外部待测脉冲由into(p3.2)输入,t0工作 在方式1,设置为定时状态,gate置为“1”,测 试时,在into端为“0”时置tr0为“1”,当into 端变为“1”时启动计数;into端再次变为“0” 时停止计数,此时的计数值就是被测正脉冲的宽 度。 编程思路: 在此期间对机器周期进行计数 根据题意:t0工作在方式1、定时状态、int0=“1”期间对机器周期进行计数。 于是,确定方式字如下:即tmod=09h。并在int0=0期间置tr0=1 tr0=1、int0=1时开 始计数 tr0=0、int0=0时停 止计数 编程如下: org 0000h mov tmod,#09h ;t0工作方式1定时,gate=1 mov tl0,#00h ; mov th0,#00h ; rll1:jb p3.2,rll1 ;等待p3.2变低 setb tr0 ;启动t0 rll2:jnb p3.2,rll2 ;等待p3.2变高 rll3:jb p3.2,rll3 ;等待p3.2再变低 clr tr0 ;t0停止计数 mov a,tl0 ;存放计数值 mov b,th0 sjmp 1、设t0为工作方式0,设置为定时状态,定时时间为0.5ms,每当0.5ms到,申请 中断,在中断服务程序中将p1.7的内容取反送出(假设晶振为12mhz)。请编写 该方案的程序. org 0000h ; ajmp main
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版绿色建筑土建工程承包合作协议
- 2025年度制造业短期生产线操作人员劳务派遣合同
- 2025聘请全职律师合同范本
- 红酒柜知识培训课件
- 红酒基本知识培训内容
- 语文知识书籍培训课件
- 红茶品鉴培训课件
- 2025年租车服务免责合同协议书
- 2025年劳动合同法实践:员工擅自解约公司有权提起劳动仲裁
- 生产流程标准化操作指南
- 避免车祸安全知识培训课件
- 胸腰椎压缩骨折课件
- 音乐课简谱教学课件
- 2025年放射工作人员培训考试试题及答案
- 2025-2026学年统编版(2024)小学语文一年级上册教学计划及进度表
- 中小学教师中高级职称答辩备考试题及答案(50题)
- 剖析我国公立医院管理体制:问题洞察与改革路径探究
- 胰腺超声标准切面
- 2025年法院书记员招聘考试笔试试题附答案
- 未成年人违法犯罪警示教育
- 律师事务所客户数据安全管理制度
评论
0/150
提交评论