定时器计数器.ppt.ppt_第1页
定时器计数器.ppt.ppt_第2页
定时器计数器.ppt.ppt_第3页
定时器计数器.ppt.ppt_第4页
定时器计数器.ppt.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8讲定时器 计数器 8 1定时器 计数器概述8 2定时器 计数器的构成8 3定时器 计数器的用法8 4定时器 计数器的控制8 5定时器 计数器的应用 1 8 6定时器 计数器的应用 2 8 1定时器 计数器概述 定时器 计数器是mcs 51单片机的重要功能模块之一 在检测 控制及智能仪器等应用中 常用定时器作实时时钟来实现定时检测 定时控制 还可用定时器产生毫秒宽的脉冲驱动步进电机 计数器主要用于外部事件的计数 mcs 51单片机内部有两个16位定时 计数器t0和t1 它们既可用作定时器 也可用作计数器 应用哪种 可以通过编程来设定 定时器 计数器在mcs 51单片机中的引脚位置 t0 p3 4 t1 p3 5 返回本节 8 2定时器 计数器的构成 两个定时器 计数器 t0和t1 每个定时器 计数器都是由两个8位计数器构成的16位计数器 分别由特殊功能寄存器th0 tl0和th1 tl1组成 最大计数值216 65536 寄存器tcon tcon为控制寄存器 用来控制两个定时器 计数器的启动 停止 寄存器tmod tmod为工作方式控制寄存器 用来设置定时器 计数器的工作方式 返回本节 定时 计数器结构示意图 8 3定时器 计数器的用法 返回本节 时钟振荡器 12分频 1mhz 12mhz 定时 计数器t0 中断系统 1 定时器的用法定时器的功用是用来确定时间 如果要求单片机在一定的时间后产生某种控制 可将定时器 计数器设为定时器 如下图 将定时 计数器t0设为定时器 实际上就是将定时 计数器与外部中断断开 而与内部信号接通 对内部信号进行计数 时钟振荡器 12分频 1mhz 12mhz 定时 计数器t0 中断系统 t0 单片机定时器用法示意图 p2 1 5v 8 3定时器 计数器的用法 返回本节 单片机的时钟振荡器可产生12mhz的时钟脉冲信号 它经过12分频后得到1mhz的脉冲信号 1mhz信号每个脉冲的持续时间为1 s 如果定时器t0对1mhz的信号进行计数 当计到65536时 将需要65536 s 也即65 536ms 65 536ms后定时器计数达到最大值 会溢出而输出一个中断请求信号去中断系统 中断系统接受中断请求后 执行中断子程序 子程序的运行结果将p2 1端口置 0 发光二极管发光 8 3定时器 计数器的用法 返回本节 任意定时的方法在上例中 定时器只有在65 536ms后计数达到最大值时才会溢出 如果需要不到65 536ms定时器就产生溢出 如1ms 可以对定时器预先进行置数 将定时器初始值置为64536 这样定时器就会从64536开始计数 当计到65536时 定时器定时就为1ms而产生一个溢出信号 8 3定时器 计数器的用法 返回本节 2 计数器的用法计数器的功能是用来计数 在单片机内有一个定时 计数器t0 可以用编程的方法将它设为计数器 当作计数器用时 它有16位 最大计数值216 65536 当脉冲信号输入时 计数器对脉冲进行计数 计数达到最大值65536时 计数器溢出 会输出一个中断请求信号到中断系统 中断系统接受中断请求后 执行中断子程序 任意计数的方法与任意定时的方法类似 也是先进行预先置数 然后才开始计数 8 4定时器 计数器的控制 返回本节 1 定时器 计数器控制寄存器tcon寄存器tcon的功能主要是接收各种中断源送来的中断请求信号 同时也对定时器 计数器进行启动 停止控制 寄存器tcon的字节地址是88h 它有8位 每位均可进行位寻址 各位的地址和名称如下 8 4定时器 计数器的控制 返回本节 tf0和tf1 分别是定时器 计数器0和1的中断请求标志位 当定时器 计数器工作产生溢出时 会将tf0或tf1位置 1 表示定时器 计数器有中断请求 tr0和tr1 分别是定时器 计数器0和1的启动 停止位 在编程时 若将tr0或tr1设置为 1 那么相应的定时器 计数器就开始工作 若设置为 0 相应的定时器 计数器则会停止工作 ie0 ie1 it0 it1 用作中断的控制 在中断将再详细讲述 在单片机复位时 寄存器tcon的各位均为 0 8 4定时器 计数器的控制 返回本节 2 工作方式控制寄存器tmod寄存器tmod的功能是控制定时器 计数器t0 t1的工作方式和操作模式 寄存器tmod的字节地址是89h 高4位用来控制定时器 计数器t1 低4位用来控制定时器 计数器t0 它们对定时器 计数器t1 t0的控制功能一样 在上电 给电路加电源 和复位时 寄存器tmod中的数据为00h 不可以对它进行位操作 寄存器tmod各位的名称如下 8 4定时器 计数器的控制 返回本节 下面以高4位控制定时器 计数器t1为例来说明各位的具体功能 gate 门控位 用来控制计数器的启动是否受外部中断请求信号的影响 gate 1 计数器 的启动受芯片引脚 p3 3 的控制 即除了需要将寄存器tcon的tr1位置 1 外 还要使引脚为高电平 gate 0 只要寄存器tcon的tr1位置 1 就可以启动t1开始工作 定时 计数功能设置位 0 将定时器 计数器设置为定时器工作方式 1 将定时器 计数器设置为计数器工作方式 m1 m0位 定时器 计数器工作方式选择位 m1 m0位取不同值得组合 可以将定时器 计数器设置位不同的工作方式 m1 m0位不同取值与定时器 计数器工作方式的关系见下表 8 4定时器 计数器的控制 返回本节 8 5定时器 计数器的应用 1 返回本节 设晶振为12mhz 使用定时 计数器作为延时控制时 要求在两灯p0 0和p0 1之间按1s互相闪烁 8 5定时器 计数器的应用 1 返回本节 设晶振为12mhz 使用定时 计数器作为延时控制时 要求在两灯p0 0和p0 1之间按1s互相闪烁 设计步骤 1 系统分析2 硬件设计3 软件设计4 流程图设计5 asm程序设计6 c程序设计 8 5定时器 计数器的应用 1 返回本节 8 5定时器 计数器的应用 1 返回本节 程序设计由于定时器直接延时的最大时间tmax 65536 s 65 536ms 为延时1s 必须采用循环计数方式实现 方法为 定时器设延时50ms 初始值应为 15536 s 单片机内部寄存器加1 然后定时器重新延时 当内部寄存器计数达20次时 表示延时1s 使用定时器t0工作在方式1 延时50ms 初始值tmod为01h th0为3ch tl0为b0h 15536 0011110010110000b 3cb0h 8 5定时器 计数器的应用 1 返回本节 程序流程图 8 5定时器 计数器的应用 1 返回本节 汇编程序org0000hljmpmainorg0100hmain movsp 60h 初始化堆栈 给定时器0赋初值movtmod 01h 使用16位模式 方式1m1 0m0 1 movth0 3ch 初始化定时器0的溢出间隔时间为50msmovtl0 b0h th为高位 tl为低位setbtr0 启用定时器0setbp0 0clrp0 1movr7 00h 用r7计数loop jnbtf0 loop tf0不是1 无溢出 继续循环 是1 向下执行movth0 3ch 初始化定时器0的溢出时间movtl0 b0hincr7clrtf0cjner7 14h loopacallloop1 20次循环闪烁一次ajmplooploop1 movr7 00hcplp0 0 让接p0 0的发光二极管按50ms闪烁cplp0 1retend 8 5定时器 计数器的应用 1 返回本节 include reg51 h defineuintunsignedint defineucharunsignedcharsbitp0 0 p0 0 sbitp0 1 p0 1 uintt 0 voidtime0 server void interrupt1 th0 0 x3c 定时时间为50ms 12mhz的晶振tl0 0 xb0 t voidinit t0 void 定时器初始化 tmod 0x01 选择方式1th0 0 x3c tl0 0 xb0 ea 1 开放中断et0 1 定时器中断允许tr0 1 启动tr0 8 5定时器 计数器的应用 1 返回本节 voidmain void p0 0 1 p0 1 0 init t0 while 1 time0 server void interrupt1if t 20 t 0 p0 0 p0 0 p0 1 p0 1 8 5定时器 计数器的应用 1 返回本节 定时 计数器的应用1的运行结果 8 5定时器 计数器的应用 2 返回本节 设单片机的晶振频率为12mhz 使用定时器1 在方式0下由p1 0输出周期为1ms的等宽正方波 以查询方式完成 8 5定时器 计数器的应用 2 返回本节 设单片机的晶振频率为12mhz 使用定时器1 在方式0下由p1 0输出周期为1ms的等宽正方波 以查询方式完成 8 5定时器 计数器的应用 2 返回本节 设单片机的晶振频率为12mhz 使用定时器1 在方式0下由p1 0输出周期为1ms的等宽正方波 以查询方式完成 分析如下 方式0 m1 0 m0 0 13位计数器 t0用th0 8位 和tl0的低5位 t1用th1 8位 和tl1的低5位 最大计数值为213 8192要产生1ms的等宽正方波脉冲 只需在p1 0端每隔500 s交替输出高 低电平即可实现 使用12mhz的晶振频率 则1个机器周期为1 s 定时器起始值应为 8192 500 7692 1111000001100b 13位 th1 前8位 11110000b f0h tl1 后5位 00001100b 0ch 8 5定时器 计数器的应用 2 返回本节 开始 定时 计数器初始值设置 启动定时 计数器 计数器是否产生溢出 定时 计数器重新赋值 p1 0取反产生脉冲 计数器计数 y n 程序流程图设计 8 5定时器 计数器的应用 2 返回本节 汇编源程序org0100hmovtmod 00h 设置t1为工作方式0movth1 0f0h 设置t1的计数初值xmovtl1 0chmovie 00h 禁止中断setbtr1 启动t1lp1 jbctf1 lp2 查询计数是否溢出ajmplp1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论