单片机项目二--定时器计数器_第1页
单片机项目二--定时器计数器_第2页
单片机项目二--定时器计数器_第3页
单片机项目二--定时器计数器_第4页
单片机项目二--定时器计数器_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1 MCS 51单片机的定时器 计数器 在单片机中的控制应用中 可供选择的定时方法有 软件定时 通过执行循环程序进行时间延迟 定时时间精确且不需要外加硬件电路 但要占用CPU 增加CPU开销 定时时间不宜过长 硬件定时 定时功能全部由硬件电路完成 不占CPU时间 但需通过改变电路中的元件参数来调节定时时间 使用上不够灵活方便 可编程定时器定时 通过对系统时钟脉冲的计数来实现 计数值通过程序设定 改变计数值即可改变定时时间 使用灵活方便 2 1定时器 计数器的计数和定时功能 MCS 51单片机有2个16位的可编程定时器 计数器 称为定时器 计数器0和定时器 计数器1 分别由两个8位的计数器TH0 TL0和TH1 TL1组成 这4个计数器都是特殊功能寄存器 计数功能所谓计数是指对外部事件进行计数 外部事件的发生以输入脉冲表示 因此计数功能的实质就是对外来脉冲的计数 MCS 51芯片的信号引脚T0 P3 4 和T1 P3 5 分别是两个计数器的计数输入端 外部输入的脉冲在负跳变时有效 供计数器进行加1计数 3 计数方式下 单片机在每个机器周期的S5P2对计数脉冲输入引脚进行采样 如果前一个机器周期为高电平 后一个机器周期为低电平 即为一个有效的计数脉冲 在下一个机器周期的S3P1进行计数 由于采样计数脉冲是在2个机器周期完成的 所以计数脉冲的周期不能小于2个机器周期 定时功能定时功能是通过对单片机内部脉冲进行计数来实现的 即每个机器周期产生1个计数脉冲 使计数器加1 在使用定时器时 既可以根据计数值计算定时时间 也可以根据定时时间的要求计算出计数器的预置值 计数功能 4 加法计数器加法计数器是计满溢出时才申请中断 所以在给计数器赋初值时 不能直接输入所需的计数值 而应输入的是计数器计数的最大值与这一计数值的差值 设最大值为M 计数值为N 初值为X 则X的计算方法为 计数状态 X M N定时状态 X M 定时时间 机器周期 5 2与定时器 计数器有关的控制寄存器 定时器 计数器控制寄存器 TCON字节地址 88H位地址 88H 8FH 可位寻址 功能 用于保存外部中断请求以及定时器的计数溢出 TCON既有定时器 计数器的控制功能 又有中断控制功能 其中与定时有关的控制位共4位 TF1 TR1 TF0 TR0 6 TF0和TF1 计数溢出标志位当计数器产生计数溢出时 相应的溢出标志位由硬件置 1 计数溢出标志位的使用有两种情况 使用中断方式时 作中断请求标志位来使用 在转向中断服务程序时由硬件自动清 0 使用查询方式时 作查询状态位来使用 查询有效后应以软件方法及时将该位清 0 TR0和TR1 运行控制位 软件置1或清0 TR0 TR1 0停止定时器 计数器工作TR0 TR1 1启动定时器 计数器工作 7 定时器方式选择寄存器 TMOD字节地址 89H 不可位寻址 定时器 计数器1 定时器 计数器0 功能 用于设定定时器 计数器的工作方式 只能用字节传送指令设置其内容 TMOD的低半字节对应定时器 计数器0 高半字节对应定时器 计数器1 前后半字节的位格式完全对应 8 C T 定时方式或计数方式选择位 C T 0定时工作方式C T 1计数工作方式GATE 门控位 GATE 0以运行控制位 TR0或TR1 启动定时器GATE 1以外部中断请求信号 INT0或INT1 启动定时器 M1和M0 工作方式选择位 9 中断允许控制寄存器 IE字节地址 0A8H位地址 0A8H 0AFH 其中与定时器 计数器有关的控制位共3位 EA 中断允许总控制位ET0和ET1 定时器 计数器中断允许控制位ET0 ET1 0禁止定时器 计数器中断ET0 ET1 1允许定时器 计数器中断 10 3定时器工作方式0 1 电路逻辑结构 定时器工作方式0是13位计数结构 计数器由TH的全部8位和TL低5位构成 TL的高3位不用 11 对工作方式0的说明 当TL0的低5位计数溢出时 向TH0进位 而全部13位计数溢出时 向计数溢出标志位TF0进位 当C T 0时 多路开关接通振荡脉冲的12分频信号 机器周期脉冲 作为计数信号 此时T0为作为定时器 当C T 1时 多路开关接通计数引脚T0 计数脉冲为P3 4引脚上的外部输入脉冲 当计数脉冲发生负跳变时 计数器加1 此时T0为作为计数器 GATE 0时 由TR0的状态控制计数脉冲的接通与断开 GATE 1且TR0 1时 计数脉冲的接通与断开由外引脚INT0控制 12 2 启停控制 定时器 计数器的启停控制有两种方法 纯软件方法和软 硬件相结合的方法 由门控位GATE的状态进行选择 当GATE 0时 为纯软件启停控制 这时TR0的状态控制计数脉冲的通断 而TR0位的状态又是通过指令设置的 所以称为软件方式 当把TR0设置为1 控制开关接通 计数器开始计数 即定时器 计数器工作 当把TR0清0时 开关断开 计数器停止计数 当GATE 1时 为软 硬件相结合的启停控制方式 这时计数脉冲的接通与断开决定于TR0和INT0的 与 关系 而INT0是引脚P3 2引入的控制信号 由于P3 2引脚信号可控制计数器的启停 所以可利用80C51的定时器 计数器进行外部脉冲信号宽度的测量 13 3 定时和计数范围 使用工作方式0的计数功能时 计数值的范围是 1 8192 213 使用工作方式0的定时功能时 定时时间的计算公式为 213 计数初值 晶振周期 12或 213 计数初值 机器周期其时间单位与机器周期或晶振周期的时间单位相同 为ms 最小定时时间为1个机器周期 最大定时时间为8192个机器周期 对于6MHz的晶振 最小定时时间为2ms 最大定时时间为16384ms 14 4 应用举例 计算计数初值欲产生500ms的等宽正方波脉冲 只需在P1 0端以250ms为周期交替输出等宽高低电平即可实现 为此定时时间应为250ms 若使用6MHz晶振 则1个机器周期为2ms 方式0为13位计数结构 设待求的计数初值为X 则 213 X 2 10 6 250 10 6可解得 X 8192 125 8067 1111110000011B 用十六进制表示 高8位放入TH1 TH1 0FCH 低5位放入TL1 TL1 03H 例1 设单片机晶振频率为6MHz 使用定时器1以方式0定时250ms 初始化相关寄存器 000 15 TMOD寄存器初始化 为实现定时器 计数器1的纯软件运行控制 则GATE 0 为实现定时功能 应使C T 0 为把定时器 计数器1设定为方式0 则M1M0 00 定时器 计数器0不用 TMOD的低4位设定为0 因此 TMOD寄存器应初始化为00H 由定时器控制寄存器TCON中的位TR1控制定时的启动与停止TR1 1启动 TR1 0停止 16 TMOD 0 x00 TH1 0 xFC TL1 0 x03 TR1 1 17 4定时器工作方式11 电路逻辑结构 定时器工作方式1是16位计数结构 计数器由TH的全部8位和TL的全部8位构成 它的逻辑电路和工作情况与方式0完全相同 所不同的只是计数器的位数 TL0 8位 18 2 定时和计数范围 使用工作方式1的计数功能时 计数值的范围是 1 65536 216 使用工作方式1的定时功能时 定时时间的计算公式为 216 计数初值 晶振周期 12或 216 计数初值 机器周期其时间单位与机器周期或晶振周期的时间单位相同 为ms 最小定时时间为1个机器周期 最大定时时间为65536个机器周期 对于6MHz的晶振 最小定时时间为2ms 最大定时时间为131072ms 约为131ms 19 4 应用举例 计算计数初值方式1为16位计数结构 设待求的计数初值为X 则 216 X 2 10 6 250 10 6可解得 X 65536 125 65411 1111111110000011B 用十六进制表示 高8位放入TH0 TH0 0FFH 低8位放入TL0 TL0 83H 例2 设单片机晶振频率为6MHz 使用定时器0以方式1定时250ms 初始化相关寄存器 20 TMOD寄存器初始化 定时器 计数器1不用 TMOD的高4位设定为0 为实现定时器 计数器0的纯软件运行控制 则GATE 0 为实现定时功能 应使C T 0 为把定时器 计数器0设定为工作方式1 则M1M0 01 因此 TMOD寄存器应初始化为01H 21 TMOD 0 x01 TH0 0 xFF TL0 0 x83 TR0 1 22 5定时器工作方式2 工作方式0和工作方式1的共同特点是计数溢出后计数器为全0 因此 用作循环定时时需要反复设置计数初值 这不仅影响定时精度 而且也给程序设计带来麻烦 工作方式2是针对此问题而设置的 它具有自动重新加载计数初值的功能 免去了反复设置计数初值的麻烦 所以工作方式2也称为自动重新加载工作方式 23 1 电路逻辑结构 在工作方式2下 16位计数器被分为两部分 TL作为计数器使用 TH作为预置寄存器使用 初始化时把计数初值分别装入TL和TH中 当计数溢出后 由预置寄存器TH以硬件方法自动给计数器TL重新加载 变软件加载为硬件加载 24 对工作方式2的说明 工作方式2为8位计数结构 最大计数值为256 28 初始化时 8位计数初值同时装入TL0和TH0中 当TL0计数溢出时 置位TF0 同时由硬件自动把保存在预置寄存器TH0中的计数初值重新加载TL0 然后TL0开始重新计数 如此重复不止 用途 这种自动重新加载工作方式适用于循环定时或循环计数 例如 可用于产生固定脉宽的脉冲 可作为串行数据通信的波特率发生器 25 计算计数初值在6MHz晶振下 1个机器周期为2ms 以TH0作重装载的预置寄存器 TL0作8位计数器 假设计数初值为X 则 28 X 2 10 6 100 10 6可解得 X 256 50 206 11001110B 0CEH把0CEH分别装入TH0和TL0中 TH0 0CEH TL0 0CEH 例3 使用定时器0以工作方式2产生100ms定时 在P1 0输出周期为200ms的连续正方波脉冲 已知单片机晶振频率为6MHz 2 循环定时应用 26 TMOD寄存器初始化 定时器 计数器1不用 TMOD的高4位设定为0 为实现定时器 计数器0的纯软件运行控制 则GATE 0 为实现定时功能 应使C T 0 定时器 计数器0为工作方式2 则M1M0 10 因此 TMOD寄存器应初始化为02H 由于定时器 计数器工作方式2具有自动重新装载功能 因此计数初值只需设置1次 以后不再需要软件重置 27 程序设计 查询方式 MOVIE 00H 禁止中断MOVTMOD 02H 设置T0为工作方式2MOVTH0 0CEH 保存计数初值MOVTL0 0CEH 设置计数初值SETBTR0 启动定时LOOP JBCTF0 LOOP1 查询计数溢出AJMPLOOPLOOP1 CPLP1 0 输出取反AJMPLOOP 重复循环 28 程序设计 中断方式 主程序 MOVTMOD 02H 设置T0为工作方式2MOVTH0 0CEH 保存计数初值MOVTL0 0CEH 设置计数初值SETBEA 开中断SETBET0 定时器0允许中断SETBTR0 定时开始SJMP 等待中断中断服务程序 CPLP1 0 输出取反RETI 中断返回 29 计算计数初值X 28 100 156 10011100B 9CH把9CH分别装入TH1和TL1中 TH1 9CH TL1 9CH 例4 使用定时器1以工作方式2实现计数 每计100次进行累加器加1操作 按查询方式进行编程 3 循环计数应用 TMOD寄存器初始化 为实现定时器 计数器1的纯软件运行控制 则GATE 0 为实现计数功能 应使C T 1 定时器 计数器1为工作方式2 则M1M0 10 定时器 计数器0不用 TMOD的低4位设定为0 因此 TMOD寄存器应初始化为60H 30 程序设计 查询方式 MOVIE 00H 禁止中断MOVTMOD 60H 设置T1为工作方式2MOVTH1 9CH 保存计数初值MOVTL1 9CH 预置计数初值SETBTR1 启动计数DEL JBCTF1 LOOP 查询计数溢出AJMPDELLOOP INCA 累加器加1AJMPDEL 循环返回 31 6定时器工作方式3 工作方式0 方式1 方式2下 对两个定时器 计数器T0和T1的设置和使用是完全相同的 但在工作方式3下 两个定时器 计数器的设置和使用是不同的 在工作方式3下 定时器 计数器0被拆成两个独立的8位计数器TL0和TH0 这两个计数器的使用完全不同 如果定时器 计数器0已经工作在方式3 则定时器 计数器1的运行控制位TR1及计数溢出标志位TF1被TH0借用 此时定时器 计数器1只能工作在方式0 方式1或方式2 32 1 工作方式3下的定时器 计数器0 在工作方式3下 定时器 计数器0中TL0和TH0的使用 TL0既可用于计数 又可用于定时 与定时器 计数器0相关的控制位C T GATE TF0 TR0和引脚信号INT0全归它使用 TH0只能作8位的定时器使用 由于寄存器TCON的定时器0的控制位已被TL0独占 只能借用定时器1的控制位TR1和TF1为其服务 即用计数溢出置位TF1 而定时的启动和停止则受TR1的状态控制 总结 在工作方式3下 定时器 计数器0可以分解为2个8位定时器或1个8位计数器和1个8位定时器 33 定时器 计数器0工作

温馨提示

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

评论

0/150

提交评论