单片机C语言编程(定时器计数器)_第1页
单片机C语言编程(定时器计数器)_第2页
单片机C语言编程(定时器计数器)_第3页
单片机C语言编程(定时器计数器)_第4页
单片机C语言编程(定时器计数器)_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

第6章MCS 51单片机定时器 计数器 本章制作 刘晓霞 第6章MCS 51单片机定时器 计数器 目录6 1MCS 51定时器 计数器的结构及原理6 2定时器T0 T16 3定时器T26 4定时器应用举例 本章主要讨论MCS 51单片机定时器 计数器的逻辑结构和工作原理 内容主要有MCS 51单片机定时器T0 T1 T2的逻辑结构 工作方式的选择和应用 本章为单片机的主要内容 也是第七章串行口的学习的基础 第6章MCS 51单片机的定时器 计数器 6 1MCS 51单片机定时器 计数器的结构及原理 主要内容6 1 1MCS 51单片机定时器的结构6 1 2MCS 51单片机定时器的工作原理6 1 3定时器 计数器的控制寄存器 6 1 1MCS 51单片机定时器的结构 MCS 51单片机定时器 计数器逻辑结构图 6 1 1MCS 51单片机定时器的结构 MCS 51主要由如下构成 三个16位的可编程定时器 计数器 定时器 计数器0 1和2 每个定时器有两部分构成 THx和TLx特殊功能寄存器T2MOD和T2CON 主要对T2进行控制 特殊功能寄存器TMOD和TCON 主要对T0和T1进行控制 6 1 1MCS 51单片机定时器的结构 引脚P3 5 P3 4 P1 0 输入计数脉冲 定时器T0 T1和T2是3个中断源 可以向CPU发出中断请求 定时器 计数器T2增加了两个8位的寄存器 RCAP2H和RCAP2L 特殊功能寄存器之间通过内部总线和控制逻辑电路连接起来 6 1 2MCS 51单片机定时器的工作原理 定时器 计数器T0 T1 T2的内部结构简图如下图所示 6 1 2MCS 51单片机定时器 计数器的工作原理 从上图可以看出 定时器的实质是一个加1计数器 C T 0 为定时器方式 计数信号由片内振荡电路提供 振荡脉冲12分频送给计数器 每个机器周期计数器值增1 例如 如果晶振频率为12MHz 则最高计数频率为0 5MHz 6 1 2MCS 51单片机定时器 计数器的工作原理 C T 1 为计数方式 计数信号由Tx引脚 P3 4 P3 5和P1 0 输入 每输入一有效信号 相应的计数器中的内容进行加1 控制信号TRx 1时 定时器启动 当定时器由全1加到全0时计满溢出 从0开始继续计数 TFx 1 向CPU申请中断 6 1 3定时器 计数器的方式和控制寄存器 1 T0 T1工作模式寄存器TMOD功能 确定定时器的工作模式 其格式如图6 3所示 GATE 外部门控制位 GATE 1 使用外部控制门 TRx 1 P3 2 P3 3 1时 启动定时器 6 1 3定时器 计数器的方式和控制寄存器 GATE 0 不使用外部门控制计数器C T 定时或计数方式选择位 C T 0时 为定时器C T 1时 为计数器采样过程 CPU在每机器周期S5P2期间 输入信号进行采样 若前一机器周期采样值为1 下一机器周期采样值为0 则计数器增1 随后的机器周期S3P1期间 新的计数值装入计数器 6 1 3定时器 计数器的方式和控制寄存器 M1 M0 工作模式选择位 如下表所示 6 1 3定时器 计数器的方式和控制寄存器 2 T0 T1的控制寄存器TCON TF1 TF0 T1 T0的溢出标志位计数溢出 TFx 1 中断方式 自动清零 查询方式 软件清零 6 1 3定时器 计数器的方式和控制寄存器 TR1 TR0 T1 T0启停控制位 置1 启动定时器 清0 关闭定时器 IE1 IE0 外部中断1 0请求标志位IT1 IT0 外部中断1 0触发方式选择位注意 GATE 1 TRx与P3 2 P3 3 的配合 6 2定时器T0 T1的工作模式及应用 主要内容6 2 1模式0的逻辑结构及应用6 2 2模式1的逻辑结构及应用6 2 3模式2的逻辑结构及应用6 2 4模式3的逻辑结构及应用 6 2 1模式0的逻辑结构及应用 M1M0 00 选择模式0 逻辑结构如图6 5所示 以T0为例 T0的结构 13位定时器 计数器 由TH0的8位 TL0的低5位构成 高3位未用 工作过程 TL0溢出后向TH0进位 TH0溢出后将TF0置位 并向CPU申请中断 定时时间 213 定时初值 机器周期最大定时时间 213 机器周期 6 2 1模式0的逻辑结构及应用 C T 1 计数方式 计数脉冲由P3 4引脚输入 C T 0时 定时方式 图6 5模式0的逻辑结构图 6 2 2模式1的逻辑结构及应用 M1M0 01时 选择模式1 逻辑结构如下页图所示 T0的结构 16位定时器 计数器 TL0 存放计数初值的低8位 TH0存放计数初值的高8位 定时时间 216 定时初值 机器周期最大定时时间 216 机器周期 6 2 2模式1的逻辑结构及应用 工作过程 当TL0计满时 向TH0进1 当TH0计满时 溢出使TF0 1 向CPU申请中断 MCS 51单片机之所以设置几乎完全一样的方式0和方式1 是出于与MCS 48单片机兼容的 6 2 3模式2的逻辑结构及应用 M1M0 10时 选择模式2 逻辑结构如图6 7所示 T0的结构 TL0 8位的定时器 计数器 TH0 8位预置寄存器 用于保存初值 工作过程 当TL0计满溢出时 TF0置1 向CPU发出中断请求 同时引起重装操作 TH0的计数初值送到TL0 进行新一轮计数 6 2 3模式2的逻辑结构及应用 图6 7模式2的逻辑结构图 6 2 3模式2的逻辑结构及应用 定时时间 28 初值 机器周期最大定时时间 28 机器周期优点 模式2能够进行自动重装载 模式0和1计数溢出后 计数器为全0 循环定时或计数时 需要重新设置初值 说明 在模式2能够满足计数或定时要求时 尽可能使用模式2 6 2 4模式3的逻辑结构及应用 1 T0模式3的结构特点M1M0 11 选择模式3 逻辑结构如图6 8和6 9所示 结构 TL0 TH0分为两个独立的8位计数器TL0 8位定时器 计数器使用T0所有的资源和控制位TH0 8位定时器使用T1所有的资源 中断向量 中断控制ET1 PT1 和控制位 TR1 TF1 6 2 4模式3的逻辑结构及应用 图6 8模式3下T0的逻辑结构图 6 2 4模式3的逻辑结构及应用 2 T0模式3时T1的工作模式T1可以模式0 模式2工作 T1的结构如图6 9所示由于TF1及中断矢量被TH0占用 所以T1仅用作波特率发生器或其它不用中断的地方 T1作波特率发生器 其计数溢出直接送至串行口 设置好工作方式 串行口波特率发生器开始自动运行 TMOD中T1的M1M0 11 T1停止工作 6 2 4模式3的逻辑结构及应用 图6 9模式3下 T1的逻辑结构图 思考 T0工作在模式3 T1怎么进行方式设置 串行口 6 2 4模式3的逻辑结构及应用 1 定时器 计数器工作模式的选择方法 1 首先计算计数值N 2 确定工作模式原则是尽可能地选择模式2若N 256选择模式2 否则选择模式1 3 如果需要增加一个定时器 计数器选择模式3 6 2 4模式3的逻辑结构及应用 2 定时器 计数器初值X的计算方法因为X N 28或216所以X 28或216 N 1 对定时器设定时时间为tN t 机器周期所以X 28或216 t 机器周期 2 对计数器X 28或216 N 6 2 4模式3的逻辑结构及应用 例6 1设单片机的振荡频率为12MHz 用定时器 计数器0的模式1编程 在P1 0引脚产生一个周期为1000 s的方波 定时器T0采用中断的处理方式 定时器的分析过程 工作方式选择需要产生周期信号时 选择定时方式 定时时间到了对输出端进行周期性的输出即可 工作模式选择根据定时时间长短选择工作模式 首选模式2 可以省略重装初值操作 6 2 4模式3的逻辑结构及应用 定时时间计算 周期为1000 s的方波要求定时器的定时时间为500 s 每次溢出时 将P1 0引脚的输出取反 就可以在P1 0上产生所需要的方波 定时初值计算 振荡频率为12MHz 则机器周期为1 s 设定时初值为X 65536 X 1 s 500 sX 65036 0FE0CH定时器的初值为 TH0 0FEH TL0 0CH 6 2 4模式3的逻辑结构及应用 C语言程序 include 包含特殊功能寄存器库sbitP1 0 P1 0 进行位定义voidmain TMOD 0 x01 T0做定时器 模式1TL0 0 x0c TH0 0 xfe 设置定时器的初值ET0 1 允许T0中断EA 1 允许CPU中断TR0 1 启动定时器while 1 等待中断 6 2 4模式3的逻辑结构及应用 voidtime0 int void interrupt1 中断服务程序TL0 0 x0c TH0 0 xfe 定时器重赋初值P1 0 P1 0 P1 0取反 输出方波 汇编语言程序 ORG0000HSJMPMAINORG000BHLJMPTIME0 6 2 4模式3的逻辑结构及应用 MAIN MOVTMOD 01H T0定时 模式1MOVTL0 0CH 置定时初值MOVTH0 0FEHSETBET0 定时器T0开中断SETBEA CPU开中断SETBTR0 启动定时器T0SJMP 等待定时器溢出TIME0 中断服务程序MOVTL0 0CHMOVTH0 0FEH 重装定时初值CPLP1 0 P1 0取反RETI 中断返回END 6 2 4模式3的逻辑结构及应用 例6 2设单片机的振荡频率为12MHz 用定时器 计数器0编程实现从P1 0输出周期为500 s的方波 分析 方法同例6 1定时时间 方波周期为500 s 定时250 s 模式选择 定时器0可以选择模式0 1和2 模式2最大的定时时间为256 s 满足250 s的定时要求 选择模式2 6 2 4模式3的逻辑结构及应用 1 初值计算 256 X 1 s 250 sX 6 则TH0 TL0 6 2 程序 采用中断处理方式的程序 C语言程序 include 包含特殊功能寄存器库sbitP1 0 P1 0 6 2 4模式3的逻辑结构及应用 voidmain TMOD 0 x02 选择工作模式TL0 0 x06 TH0 0 x06 为定时器赋初值ET0 1 允许定时0中断EA 1 TR0 1 启动定时器0while 1 等待中断 voidtime0 int void interrupt1 P1 0 P1 0 6 2 4模式3的逻辑结构及应用 汇编语言程序 ORG0000HLJMPMAINORG000BH 中断处理程序CPLP1 0RETIORG0030H 主程序MAIN MOVTMOD 02HMOVTL0 06HMOVTH0 06HSETBET0 允许定时器0中断SETBEA 允许CPU中断SETBTR0 启动定时器0SJMP 等待中断END 6 2 4模式3的逻辑结构及应用 采用查询方式处理的程序 C语言程序 includesbitP1 0 P1 0 voidmain TMOD 0 x02 TL0 0 x06 TH0 0 x06 TR0 1 while 1 while TF0 查询计数溢出TF0 0 P1 0 P1 0 6 2 4模式3的逻辑结构及应用 汇编语言程序 MAIN MOVTMOD 02H 主程序MOVTL0 06HMOVTH0 06HSETBTR0LOOP JNBTF0 查询计数溢出CLRTF0CPLP1 0SJMPLOOPEND 6 3定时器 计数器T2 主要内容6 3 1定时器T2的特殊寄存器6 3 2定时器T2的工作方式及结构 6 3 1定时器 计数器T2的特殊寄存器 89C52中的T2是一个16位的 具有自动重装载和捕获能力的定时器 计数器 T2的结构 除TL2 TH2和控制寄存器T2CON及T2MOD之外 还增加了捕获寄存器RCAP2L 低字节 和RCAP2H 高字节 T2的计数脉冲源有两个 一个是内部机器周期 另一个是由T2 P1 0 端输入的外部计数脉冲 6 3 1定时器 计数器T2的特殊功能寄存器 T2有4种工作方式 自动重装 捕获和波特率发生器 可编程时钟输出 增加了两个引脚 T2 P1 0 T2EX P1 1 1 定时器 计数器2的控制寄存器T2CON可位寻址和字节寻址 功能 选择T2的工作方式和工作模式 允许位寻址和字节寻址 其格式如下 6 3 1定时器 计数器T2的特殊功能寄存器 TF2 定时器 计数器2的溢出中断标志位T2溢出时置位 申请中断 软件清零 波特率发生器方式下 RCLK 1或TCLK 1时 定时器溢出不对TF2进行置位 EXF2 T2CON 6 定时器 计数器2外部触发标志位 6 3 1定时器 计数器T2的特殊功能寄存器 EXEN2 1 且T2EX引脚上有负跳变将触发捕获或重装操作 EXF2 1 向CPU发出中断请求 软件复位 RCLK 串行口接收时钟允许标志位RCLK 1时 T2溢出信号分频后做串行口工作在模式1和3的接收波特率 RCLK 0时 T1溢出信号分频信后做串行口接收波特率 6 3 1定时器 计数器T2的特殊功能寄存器 TCLK 串行口发送时钟允许标志位TCLK 1时 T2溢出信号分频后做串行口工做在模式1和3的发送波特率 TCLK 0时 T1溢出信号分频后做串行口的发送波特率 6 3 1定时器 计数器T2的特殊功能寄存器 EXEN2 T2CON 3 定时器 计数器2外部允许标志位EXEN2 1 定时器 计数器2没有工作在波特率发生器方式 如T2EX P1 1 引脚上产生负跳变时 将激活 捕获 或 重装 操作 EXEN2 0 T2EX引脚上的电平变化对定时器 计数器2不起作用 6 3 1定时器 计数器T2的特殊功能寄存器 TR2 定时器 计数器2启动控制位TR2 1 启动定时器 计数器2 TR2 0 停止定时器 计数器2 C T2 T2的定时器或计数器方式选择位 C T2 1 T2为计数器 对T2 P1 0 引脚输入脉冲进行计数 下降沿触发 当T2 P1 0 产生负跳变时 计数器增1 6 3 1定时器 计数器T2的特殊功能寄存器 C T2 0 T2做定时器 每个机器周期T2加1 CP RL2 捕获和重装载方式选择控制位捕获方式 CP RL2 1 EXEN2 1 T2EX P1 1 引脚负跳变将触发捕获操作 重装载方式 CP RL2 0 EXEN2 1 T2EX引脚有负跳变或T2计满溢出时 触发自动重装操作 6 3 1定时器 计数器T2的特殊功能寄存器 RCLK 1或TCLK 1时 定时器 计数器2做波特率发生器 CP RL2标志位不起作用 当T2溢出时强制自动装载 2 数据寄存器TH2 TL28位的数据寄存器 组成16位定时器 计数器 字节寻址 地址分别为CDH和CCH 复位后 TH2 00H TL2 00H 3 捕获寄存器RCAP2H和RCAP2L 6 3 1定时器 计数器T2的特殊功能寄存器 RCAP2H 高8位捕获寄存器 字节地址为CBH RCAP2L 低8位捕获寄存器 字节地址为CAH 捕获方式 保存当前捕获的计数值 重装方式 保存重装初值 复位后均为00H 6 3 1定时器 计数器T2的特殊功能寄存器 功能 对定时器的加1减1计数方式进行设置 选择是否工作在可编程时钟输出方式 复位后为 00B 4 定时器 计数器2的模式控制寄存器T2MOD 6 3 1定时器 计数器T2的特殊功能寄存器 T2MOD中标志 保留位 未定义 为未来功能扩展用 T2OE 定时器 计数器2输出启动位 T2OE 1 工作在可编程时钟输出方式 输出方波信号至T2 P1 0 引脚 DCEN 定时器 计数器2向上 向下计数控制位 当DCEN l T2自动向下 递减 计数当DCEN 0 T2自动向上 递增 计数 6 3 2定时器 计数器T2的工作方式 定时器 计数器2是一个16位的加1计数器 具有四种工作方式 如表6 2所示 方式选择寄存器 T2CON和T2MOD 注意 无论T2做定时器还是计数器 都具有捕获和自动重装的功能 6 3 2定时器 计数器T2的工作方式 6 3 2定时器 计数器T2的工作方式 一 16位自动重装方式CP RL2 0 DCEN 0时 选择自动重装方式 结构如下图所示 T2计满溢出时 TF2置1 申请中断 打开重装载三态缓冲器 将RCAP2H和RCAP2L的内容自动装载到TH2和TL2中 EXEN2 1且T2EX P1 1 端的信号有负跳变时 EXF2置1 申请中断 引起重装载操作 6 3 2定时器 计数器T2的工作方式 6 3 2定时器 计数器T2的工作方式 CP RL2 0 DCEN 1时 定时器 计数器2既可以增量 加1 和减量 减1 计数 T2EX电平控制计数方向 当T2EX P1 1 引脚输入为高电平1时 T2执行增量 加1 计数 增量计数过程 计满溢出时 一方面置位TF2 向主机请求中断处理 另一方面将存放在寄存器RCAP2L和RCAP2H中的16位计数初值自动重装TL2和TH2中 进行新一轮加1计数 6 3 2定时器 计数器T2的工作方式 6 3 2定时器 计数器T2的工作方式 T2EX P1 1 引脚为低电平0时 定时器 计数器2执行减量 减1 计数 减量计数过程 是用FFH分别初始化 预置 TL2和TH2 用0FFFFH减去计数次数所求得的下限初始化RCAP2L和RCAP2H 计数器不断减1 直至计数器中的值等于寄存器RCAP2L和RCAP2H中预置的值时 计满溢出 0FFH重装TL2和TH2 进行新一轮的计数操作 6 3 2定时器 计数器T2的工作方式 增量 加1 计数是以65536为模 对计数次数求补得到计数初值 此初值初始化TL2 TH2和RCAP2L RCAP2H陷阱寄存器 在电平控制重装方式下 无论减量增量计数 溢出时TF2置1 EXF2状态翻转 相当于17位计数器的最高位 6 3 2定时器 计数器T2的工作方式 二 捕获方式当CP RL2 l 选择捕获方式 存在以下两种情况 T2结构如下图所示 有两种情况 EXEN 0定时器2的计数溢出 置位TF2 申请中断 EXEN2 1T2EX P1 1 端的信号有负跳变时 触发捕获操作 将TH2和TL2的内容自动捕获到寄存器RCAP2H和RCAP2L中同时EXF2置1 申请中断 6 3 2定时器 计数器T2的工作方式 图6 14捕获方式的逻辑结构图 6 3 2定时器 计数器T2的工作方式 三 波特率发生器方式RCLK 1或TCLK 1时 选择波特率发生器方式 结构如下图所示 从图可以看出 RCLK 1 T2为接收波特率发生器 TCLK 1 T2为发送波特率发生器 C T2 0 选用内部脉冲 C T2 1 选用外部脉冲 T2 P1 0 输入负跳变时 计数值增l 6 3 2定时器 计数器T2的工作方式 6 3 2定时器 计数器T2的工作方式 计数溢出时 触发自动装载操作 RCAP2H和RCAP2L的内容自动装载到TH2和TL2中 T2用做波特率发生器时 TH2的溢出不会将TF2置位 不产生中断请求 T2EX还可以作为一个附加的外部中断源 T2用做波特率发生器时 若EXEN2 1 当T2EX有负跳变时 EXF2置1 由于不发生重装载或捕获操作 此时T2EX引脚可外接一中断源 6 3 2定时器 计数器T2的工作方式 定时器 计数器T2作为波特率发生器使用时的编程方法如下 RCAP2H 0 x30 设置波特率RCAP2L 0 x38 TCLK 1 选择定时器2的溢出脉冲作为波特率发生器注意 在波特率发生器工作方式下 在T2计数过程中不能再读 写TH2和TL2的内容 6 3 2定时器 计数器T2的工作方式 四 可编程时钟输出方式T2OE 1时 C T2 0时 T2工作于时钟输出方式 结构如下图所示 工作过程 当T2计满溢出时 T2 P1 0 引脚状态翻转 从而输出频率可调 精度很高的方波信号 同时使RCAP2H和RCAP2L寄存器内容装入TH2和TL2寄存器中 重新计数 在时钟输出方式下 T2溢出时不置位TF2 6 3 2定时器 计数器T2的工作方式 当EXEN2 1 T2EX P1 1 引脚有负跳变时 EXF2将置1 同波特率发生器方式 从P1 0引脚输出的时钟信号频率为 Fosc 4 65536 RCAP2H RCAP2L 6 3 2定时器 计数器T2的工作方式 图6 16T2时钟输出方式下的逻辑结构图 6 4定时器应用举例 主要内容6 4 1定时器的初始化6 4 2定时器应用举例 6 4 1定时器的初始化 在使用定时器 计数器前 应首先对其进行初始化编程 一 定时器的初始化步骤1 选择工作模式和工作方式 设置TMOD T2MOD 2 设置定时器的计数初值 设置THx和TLx RCAP2H和RCAP2L 3 中断设置 设置IE 4 启动定时器 设置TCON或T2CON 可以使用位操作指令 例如 SETBTRx 6 4 1定时器的初始化 二 定时器 计数器初值计算根据定时器 计数器的模式和方式 计算计数初值 注意T2 计数器的长度为n 则计数的最大值为2n 1 工作于定时方式计数脉冲由内部的时钟提供 每个机器周期进行加1 设晶振频率为fosc 则计数脉冲的频率为fosc 12 计数脉冲周期T 1 fosc 12 6 4 1定时器的初始化 如果进行定时时间为t 计数初值为X 则 t 2n X 12 fosc2 工作于计数方式当工作在计数方式时 对外部脉冲计数 利用计数器计数结束产生溢出的特性 来计算初值X 则有 X 2n 计数次数 6 4 2定时器的应用举例 例6 3利用定时器T1的模式2对外部信号进行计数 要求每计满100次 将P1 0端取反 分析 T1工作在计数方式 脉冲数100 模式2 模式字TMOD 0110 b 1 初值计数 在模式2下 X 28 100 156D 9CH2 C语言程序 includesbitp1 0 p1 0 进行位定义 6 4 2定时器的应用举例 voidmain TMOD 0 x60 T1工作在模式2 计数TL1 0 x9c 装入计数 重装 初值TH1 0 x9c ET1 1 允许定时器1中断EA 1 开中断TR1 1 启动定时器1while 1 6 4 2定时器的应用举例 voidtime0 int void interrupt3 中断服务程序 P1 0 P1 0 取反 产生方波 3 汇编语言程序 MAIN MOVTMOD 60H T1工作在模式2 计数MOVTL1 9CH 装入计数初值MOVTH1 9CH 装入计数 重装 初值 6 4 2定时器的应用举例 MOVIE 88H 允许定时器中断SETBTR1 启动定时器HERE SJMPHERE 等待中断中断服务程序 ORG001BH 中断服务程序入口地址CPLP1 0 对P1 0引脚信号取反RETI 中断返回 6 4 2定时器的应用举例 例6 4某一应用系统需要对INT0引脚的正脉冲测试其脉冲宽度 分析 可以设置定时器 计数器0为定时方式 工作在模式1 且置位GATE位为1 将外部需测试的脉冲从INT0引脚输入 设机器周期为1 s 6 4 2定时器的应用举例 C语言程序 计算脉宽和处理程序略 includesbitP3 2 P3 2 unsignedint test TMOD 0 x09 TL0 0 x00 TH0 0 x00 while P3 2 TR0 1 6 4 2定时器的应用举例 while P3 2 while P3 2 TR0 0 return TH0 256 TL0 汇编语言程序 INT00 MOVTMOD 09HMOVTL0 00H 设置计数初值MOVTH0 00HLOP1 JBP3 2 LOP1 等待P3 2变低电平 6 4 2定时器的应用举例 SETBTR0 启动T0计数LOP2 JNBP3 2 LOP2 等待P3 2变成高电平LOP3 JBP3 2 LOP3 等待P3 2变成低电平CLRTR0 停止T0计数MOVA TL0 计数器TL0中的内容送AMOVB TH0 计数器TH0中的内容送B本题也可以使用定时器 计数器2工作在捕获方式下进行脉宽测试 注意 T2脉宽测试必须在定时器未溢出的情况下才有效 6 4 2定时器的应用举例 例6 5某应用系统要求通过P1 0和P1 1口分别输出脉冲周期为200 s和400 s的方波 fosc 6MHz 分析 需要两个定时器 可以选择使用定时器 计数器0 设置为定时模式 工作模式3 分成两个8位的定时器 1 计算定时初值 t 256 X 12 fosc初值分别为0CEH和9CH 6 4 2定时器的应用举例 2 C语言程序 includesbitP1 0 P1 0 进行位定义sbitP1 1 P1 1 voidmain TMOD 0 x03 设置T0定时 工作在模式3TL0 0 xce 设置TL0计数初值 产生200 s方波TH0 0 x9c 设置TH0计数初值 产生400 s方波ET0 1 设置定时器0中断允许位 6 4 2定时器的应用举例 ET1 1 设置定时器 计数 器1中断允许位EA 1 设置总中断允许位TR0 1 启动定时器T0TR1 1 启动定时器T1while 1 等待溢出 voidtime0L int void interrupt1 T0中断服务程序TL0 0 xce 定时器重赋初值P1 0 P1 0 产生方波 6 4 2定时器的应用举例 voidtime0H int void interrupt3 T1中断服务程序TH0 0 x9c 定时器重赋初值P1 1 P1 1 产生方波 3 汇编语言程序 主程序 ORG0000HLJMPMAIN 6 4 2定时器的应用举例 ORG000BHLJMPT0SORG001BHLJMPT1SMAIN MOVTMOD 03H 设置T0定时 模式3MOVTL0 0CEH 设置TL0计数初值 产生200 s方波MOVTH0 9CH 设置TH0计数初值 产生400 s方波 6 4 2定时器的应用举例 SETBEA 设置总中断允许位SETBET0 允许定时器0中断SETBET1 允许定时器1中断SETBTR0 启动定时器T0SETBTR1 启动定时器T1T0中断服务程序 T0S MOVTL0 0CEH 重新设置定时初值CPLP1 0 P1 0口的输出取反RETI 6 4 2定时器的应用举例 T1中断服务程序 T1S MOVTH0 9CH 重新设置定时初值CPLP1 1 对P1 0口输出信号取反RETI 中断返回例6 6利用定时器精确定时1s控制LED以秒为单位闪烁 已知fosc 12MHz 分析 定时器 计数器在定时方式下 各个模式最大定时时间分别为 6 4 2定时器应用举例 定时器0 8192 0 12 fosc 8 192ms定时器1 65536 0 12 fosc 65 536ms定时器2 256 0 12 fosc 0 256ms选择模式1 定时时间为10ms 当10ms的定时时间到 TF1 1 连续定时100次 调用亮灯函数 再连续定时100次 调用灭灯函数 循环工作 即达到1s闪烁1次的效果 1 初值计算 256 X 12 fosc 10ms初值X 55536 0D8F0H 6 4 2定时器应用举例 2 程序设计 C语言程序 includesbitLED P1 0 unsignedchari voidmain LED 0 定义灯的初始状态为灭TM

温馨提示

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

评论

0/150

提交评论