




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
定时器 计数器及其应用 2 定时器 计数器及其应用 定时器 计数器的应用场合 定时或延时控制 对外部事件的检测 计数等 MCS 51系列8031 8051单片机有两个16位定时器 计数器 即T0和T1 8032 8052单片机有3个16位定时器 计数器 即T0 T1和T2 3 定时器 计数器及其应用 所谓计数器就是对外部输入脉冲的计数 所谓定时器也是对脉冲进行计数完成的 计数的是MCS 51内部产生的标准脉冲 通过计数脉冲个数实现定时 所以 定时器和计数器本质上是一致的 在以后的叙述中将定时器 计数器笼统称为定时器 4 5 第5章定时器 计数器及其应用 5 1定时器的结构及工作原理5 2定时器的TMOD和TCON寄存器5 3定时器的工作方式5 3 1方式05 3 2方式15 3 3方式25 3 4方式35 4定时器的编程和应用 6 第5章定时器 计数器及其应用 5 1定时器的结构及工作原理 7 5 1定时器的结构及工作原理 组成 两个16位的定时器T0和T1 以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成 内部通过总线与CPU相连 定时器T0和T1各由两个8位特殊功能寄存器TH0 TL0 TH1 TL1构成 工作方式寄存器TMOD 用于设置定时器的工作模式和工作方式 控制寄存器TCON 用于启动和停止定时器的计数 并控制定时器的状态 单片机复位时 两个寄存器的所有位都被清0 8051定时器内部结构框图 8 5 1定时器的结构及工作原理 两个可编程的定时器 计数器T1 T0 每个定时器内部结构实际上就是一个可编程的加法计数器 由编程来设置它工作在定时状态还是计数状态 两种工作模式 1 计数器工作模式就是对外部事件进行计数 计数脉冲来自相应的外部输入引脚T0 P3 4 或T1 P3 5 当输入信号发生由1至0的负跳变 下降沿 时 计数器 TH0 TL0或TH1 TL1 的值增1 计数的最高频率一般为振荡频率的1 24 Why 2 定时器工作模式也是通过计数实现的 计数脉冲来自内部时钟脉冲 每个机器周期计数值增1 每个机器周期 12个振荡周期 因此计数频率为振荡频率的1 12 所以定时时间 计数值 机器周期 4种工作方式 方式0 方式3 9 5 1定时器的结构及工作原理 当控制信号定时器工作在定时方式 加1计数器对脉冲f进行计数 每来一个脉冲 计数器加1 直到计时器计满溢出 因为 即一个计数脉冲的周期就是一个机器周期 计数器计数的是机器周期脉冲个数 从而实现定时 当控制信号定时器工作在计数方式 加1计数器对来自输入引脚T0 P3 4 和T1 P3 5 的外信号脉冲进行计数 每来一个脉冲 计数器加1 直到计时器计满溢出 10 控制信号K可以控制计数器的 启动 和 停止 11 振荡周期 是振荡脉冲的周期 也成为 拍 用P表示 就是晶体振荡器的周期 或外部振荡脉冲的周期 是MCS 51单片机的最小时序单位 时钟周期 是振荡源信号经二分频后形成的时钟脉冲信号 用S表示 每个时钟周期分成P1 P2两个节拍 又被称为一个状态 是MCS 51单片机的最基本的时序单位 机器周期 通常将完成一个基本操作所需的时间称为机器周期 由6个状态 12拍 组成 所以一个机器周期可以依次表示为S1P1 S2P2 S6P1 S6P2 通常算术逻辑操作发生在节拍P1期间 而内部寄存器到寄存器的传送发生在节拍P2期间 指令周期 是指CPU执行一条指令所需要的时间 是MCS 51单片机的最大的时序单位 由若干个振荡周期组成 一个指令周期通常含有1 4个机器周期 MCS 51典型的指令周期为一个机器周期 振荡周期 时钟周期 机器周期和指令周期 12 5 1定时器的结构及工作原理 在每个机器周期的S5P2期间采样检测引脚输入电平 若前一个机器周期采样值为 1 后一个机器周期采样值为 0 则计数器加1 新的计数值在检测到输入引脚电平发生 1 到 0 的负跳变 下降沿 后 于下一个机器周期的S3P1期间装入计数器中 由于CPU需要两个机器周期来识别一个 1 到 0 的跳变信号 所以最高的计数频率为振荡周期的1 24 13 5 1定时器的结构及工作原理 定时 计数器对输入信号的要求外部计数脉冲的最高频率为系统振荡器频率的1 24 例如选用12MHz频率的晶体 则可输入500KHz的外部脉冲 输入信号的高 低电平至少要分别保持一个机器周期 如图所示 图中Tcy为机器周期 14 可编程定时器的工作方式 启动 停止 溢出标志 计数器等都是可编程的 通过设置寄存器TMOD TCON TH0 TL0 TH1和TL1实现 当设置了定时器的工作方式并启动定时器工作后 定时器就按被设定好的工作方式独立工作 不再占用CPU 只有在计数器计满溢出时才向CPU申请中断 占用CPU 由此可见 定时器是单片机中工作效率高且应用灵活的部件 5 1定时器的结构及工作原理 15 第5章定时器 计数器及其应用 5 2定时器的TMOD和TCON寄存器 16 5 2定时器的TMOD和TCON寄存器 8051单片机定时器主要有几个特殊功能寄存器组成 TMOD TCON TH0 TL0 TH1 TL1 TMOD 设置定时器的工作方式 TCON 控制定时器的启动和停止 TH0和TL0 存放定时器T0的初值或计数结果 TH0存放高8位 TL0存放低8位 TH1和TL1 存放定时器T1的初值或计数结果 TH1存放高8位 TL1存放低8位 17 5 2 1工作方式控制寄存器TMOD 8位分为两组 高4位控制T1 低4位控制T0 1 GATE 门控位0 以TRX X 0 1 来启动定时器 计数器运行 1 用外中断引脚 INT0 或INT1 上的高电平和TRX来启动定时器 计数器运行 2 M1 M0 工作方式选择位M1M0工作方式00方式0 13位定时器 计数器 01方式1 16位定时器 计数器 10方式2 8位常数自动重新装载11方式3 仅适用于T0 T0分成两个8位计数器 T1停止计数 3 C T 计数器模式和定时器模式选择位0 定时器模式 1 计数器模式 4 TMOD无位地址 不能位寻址 5 复位时 TMOD所有位均为 0 18 低4位与外部中断有关 后面介绍 高4位的功能如下 1 TF1 TF0 计数溢出标志位定时器T0或T1计数溢出时 由硬件自动将此位置 1 TFx可以由程序查询 也是定时中断的请求源 2 TR1 TR0 计数运行控制位TRx 1 启动定时器 计数器工作TRx 0 停止定时器 计数器工作 5 2 2控制寄存器TCON 19 20 5 2 3定时 计数器的初始化 MCS 51单片机的定时器 计数器是可编程的 但在进行定时或计数之前要对程序进行初始化 具体步骤如下 1 对TMOD赋值 以确定定时器的工作模式 2 置定时 计数器初值 直接将初值写入寄存器的TH0 TL0或TH1 TL1 3 根据需要 对IE置初值 开放定时器中断 4 对TCON寄存器中的TR0或TR1置位 启动定时 计数器 置位以后 计数器即按规定的工作模式和初值进行计数或开始定时 21 5 2 3定时 计数器的初始化 初值计算 设计数器的最大值为M 则置入的初值X为 计数方式 X M 计数值定时方式 由 M X T 定时值 得X M 定时值 TT为计数周期 是单片机的机器周期 模式0 M为213 模式1 M为216 模式2和3 M为28 例如 机器周期为1 s时 若工作在模式0 则最大定时值为 213 1 s 8 192ms若工作在模式1 则最大定时值为 216 1 s 65 536ms 22 第5章定时器 计数器及其应用 5 3定时器的工作方式 23 MCS 51的定时器T0有4种工作方式 即 方式0 方式1 方式2 方式3 MCS 51的定时器T1有3种工作方式 即 方式0 方式1 方式2 5 3定时器的工作方式 24 5 2 1方式0M1 M0设置为00 为13位计数器 以T1为例 其框图如下 5 3定时器的工作方式 方式0 计数脉冲输入 加1计数器 25 5 3定时器的工作方式 方式0 在这种方式下 16位寄存器TH1和TL1只用13位 由TH1的8位和TL1的低5位组成 TL1的高3位不定 当TL1的低5位计数溢出时 向TH1进位 而TH1计数溢出时 则向中断标志位TF1进位 即硬件将TF1置1 并请求中断 可通过查询TF1是否置 1 或考察中断是否发生来判定定时器T1的操作完成与否 26 5 3定时器的工作方式 方式0 当C T 0时 为定时工作模式 开关接到振荡器的12分频器输出上 计数器对机器周期脉冲计数 其定时时间为 213 初值 振荡周期 12例如 若晶振频率为12MHz 则最长的定时时间为 213 0 1 12 12us 8 191ms当C T 1时 为计数工作模式 开关与外部引脚T1 P3 5 接通 计数器对来自外部引脚的输入脉冲计数 当外部信号发生负跳变时计数器加1 27 5 3定时器的工作方式 方式0 GATE控制定时器Tx T1或T0 的条件 1 当GATE 0时 或门 输出恒为1 与门 的输出信号K由TRx决定 即此时K TRx 定时器不受INTx输入电平的影响 由TRx直接控制定时器的启动和停止 TRx 1 计数启动 TRx 0 计数停止 2 当GATE 1时 与门 的输出信号K由INTx输入电平和TRx位的状态一起决定 即此时K TRx INTx 当且仅当TRx 1且INTx 1 高电平 时 计数启动 否则 计数停止 返回 28 5 3 2方式1M1 M0 01 为16位的计数器 除位数外 其他与方式0相同 其定时时间为 216 初值 振荡周期 12例如 若晶振频率为12MHz 则最长的定时时间为 216 0 1 12 12us 65 536ms 5 3定时器的工作方式 方式1 29 5 3 3方式2M1 M0 10 为自动恢复初值的8位计数器 等效框图如下 TLx作为8位计数器 THx作为重置初值的缓冲器 5 3定时器的工作方式 方式2 THx作为常数缓冲器 当TLx计数溢出时 在置 1 溢出标志TFx的同时 还自动的将THx中的初值送至TLx 使TLx从初值开始重新计数 定时器 计数器的方式2工作过程如图 x 0 1 30 优点 方式0和方式1用于循环重复定时或计数时 在每次计数器挤满溢出后 计数器复0 若要进行新一轮的计数 就得重新装入计数初值 这样一来不仅造成编程麻烦 而且影响定时精度 而方式2具有初值自动装入的功能 避免了这个缺点 可实现精确的定时 缺点 只有8位计数器 定时时间短 计数范围小 其定时时间为 28 初值 振荡周期 12若晶振频率为12MHz 则最长的定时时间为 28 0 1 12 12us 0 256ms 5 3定时器的工作方式 方式2 方式2工作过程图 x 0 1 31 5 3 4方式3只适用于定时器 计数器T0 T1不能工作在方式3 如果将T1置为方式3 则相当于TR1 0 停止计数 此时T1可用来作串行口波特率产生器 1 工作方式3下的T0T0在方式3时被拆成两个独立的8位计数器 TH0和TL0 8位计数器TL0使用T0的状态控制位C T GATE TR0 INT0 它既可以工作在定时方式 也可以工作在计数方式 8位定时器TH0被固定为一个8位定时器 不能作外部计数模式 并使用定时器T1的状态控制位TR1 同时占用定时器T1的中断请求源TF1 此时 定时器TH0的启动或停止只受TR1控制 TR1 1时 启动TH0的计数 TR1 0时 停止TH0的计数 5 3定时器的工作方式 方式3 32 5 3定时器的工作方式 各引脚与T0的逻辑关系如图所示 33 2 T0工作在方式3下T1的各种工作方式注意 当T0处于方式3时 T1仍可设置为方式0 方式1和方式2 当时由于TR1 TF1和T1的中断源都已被定时器T0 中的TH0 占用 所以定时器T1仅有控制位C T来决定其工作在定时方式或计数方式 当计数器计满溢出时 不能置位 TF1 而只能将输出送往串口 所以 此时定时器T1一般用作串口的波特率发生器 或不需要中断的场合 1 T1工作在方式0 5 3定时器的工作方式 34 2 T1工作在方式1 3 T1工作在方式2 5 3定时器的工作方式 35 第5章定时器 计数器及其应用 5 4定时器的编程和应用 36 5 4定时器的编程和应用 编程说明MCS 51单片机的定时器是可编程的 但在进行定时或计数之前要对程序进行初始化 具体步骤如下 1 确定工作方式字 对TMOD寄存器正确赋值 2 确定定时初值 计算初值 直接将初值写入寄存器的TH0 TL0或TH1 TL1 初值计算 设计数器的最大值为M 则置入的初值X为 计数方式 X M 计数值定时方式 由 M X T 定时值 得X M 定时值 TT为计数周期 是单片机的机器周期 模式0M为213 模式1M为216 模式2和3M为28 3 根据需要 对IE置初值 开放定时器中断 4 启动定时 计数器 对TCON寄存器中的TR0或TR1置位 置位以后 计数器即按规定的工作模式和初值进行计数或开始定时 37 5 4定时器的编程和应用 例5 1要在P1 0上输出一个周期为2ms的方波 假设系统振荡频率采用12MHz 利用T0方式0产生1ms的定时方波的周期用T0来确定 让T0每隔1ms计数溢出1次 即TF0 1 查询到TF0 1则CPU对P1 0取反 即要使P1 0每隔1ms取反一次 38 5 4定时器的编程和应用 第一步 确定工作方式字方式0 13位 最长可定时8 192ms 方式1 16位 最长可定时65 536ms 方式2 8位 最长可定时256 s T0为方式0 M1M0 00定时工作状态 C T 0GATE 0 不受INT0控制 T1不用全部取 0 值 故TMOD 00H 39 5 4定时器的编程和应用 第二步 计算1ms定时的初值X设初值为X 则有 213 X 12 10 6 1 12 1 10 3可求得 X 8192 1000 7192X化为16进制 即X 1C18H 1 1100 0001 1000B 所以 T0的初值为 TH0 E0HTL0 18H 40 第三步 程序设计采用查询TF0的状态来控制P1 0的输出 同时要重新装入初值 5 4定时器的编程和应用 41 参考程序 ORG0100HMAIN MOVTMOD 00H 设置T0为方式0MOVTL0 18H 送计数初值MOVTH0 0E0H 送计数初值SETBTR0 启动T0LOOP JBCTF0 NEXT 查询定时时间到 转NEXT 同时清TF0SJMPLOOP 重复循环NEXT MOVTL0 18H T0重置初值MOVTH0 0E0H T0重置初值CPLP1 0 P1 0的状态取反SJMPLOOP 重复循环END 42 例5 2将 例5 1 中的输出方波周期改为1秒 分析 周期为1s的方波要求500ms的定时 1 T0工作方式的确定因定时时间较长 采用哪一种工作方式 由各种工作方式的特性 可计算出 方式0 13位 最长可定时8 192ms 方式1 16位 最长可定时65 536ms 方式2 8位 最长可定时256 s 所以采用定时器定时加软件计数的方法来实现延长定时 选方式1 定时50ms 软件计数10次 50ms 10 500ms 所以 TMOD 01H 5 4定时器的编程和应用 以上各方式都不满足要求 43 2 计算计数初值因为 216 X 12 10 6 1 12 50 10 3所以 X 15536 3CB0H因此 TH0 3CH TL0 B0H 3 10次计数的实现设计一个软件计数器 初始值设为10 每隔50ms定时时间到 产生溢出标志TF0 程序查询到TF0 1 则软件计数器减1 这样减到0时就获得了500ms的定时 5 4定时器的编程和应用 44 4 程序设计 参考程序 MAIN MOVTMOD 01H 设T0工作在方式1MOVTL0 0B0H 给T0设初值MOVTH0 3CHMOVR7 10 软件计数器初值SETBTR0 启动T0LOOP JBCTF0 NEXT 查询定时时间到 转NEXT 同时清TF0SJMPLOOPNEXT DJNZR7 EXIT R7不等于0 则不对P1 0取反CPLP1 0MOVR7 10 重置软件计数器初值EXIT MOVTL0 0B0H T0中断子程序 重装初值MOVTH0 3CHSJMPLOOPEND 45 以上的定时程序中 程序都要重置计时器初值 这样从定时器溢出发出溢出标志 到重装完定时器初值 在开始计数 之间总会有一段时间间隔 使定时时间增加了若干微秒 造成定时不够精确 为了减小这种定时误差 单片机中设置了工作方式2 自动重装初值 则可避免上述因素 省去程序中重装初值的指令 实现精确定时 但是工作方式2的缺点是只有8位计数器 定时时间受到很大限制 5 4定时器的编程和应用 46 例5 3利用T0方式2产生250us的定时 在P1 0引脚上输出周期为500us的方波 要求精确定时 设系统振荡为12MHz 1 工作方式选择实现精确定时 采用方式2 对于12MHz晶振 方式2的最大计数时间为28 256us 所以可实现250us的精确定时 故 设置TMOD 02H 2 计算初值设初值为X 则 28 X 12 10 6 1 12 250 10 6X 28 250 6 06H 3 程序设计采用查询TF0的状态来控制P1 0的输出 5 4定时器的编程和应用 47 4 参考程序MAIN MOVTMOD 02H 置T0方式2MOVTH0 06H 送计数初值MOVTL0 06HSETBTR0 启动T0LOOP JBCTF0 NEXT 查询定时时间到 转NEXT 同时清TF0SJMPLOOPNEXT CPLP1 0 输出取反SJMPLOOP 重复循环END 5 4定时器的编程和应用 48 GATE门可使定时器Tx T0或T1 的启动计数受INTx 的控制 可测量引脚INTx P3 2或P3 3 上正脉冲的宽度 机器周期数 以T1为例 门控制位GATE的应用 测量脉冲宽度 回顾 当GATE 1时 K TRx INTx K 49 例5 4利用T1门控位GATE测试INT1 P3 3 引脚上出现的正脉冲的宽度 分析 根据设计要求 将T1设定为定时工作模式 方式1 GATE 1 当TR1 1时 一旦INT1 P3 3 引脚上出现高电平就开始计数 直到出现低电平为止 然后读取TH1 TL1中的计数值 分别送到寄存器A和B中 由于T1工作在定时方式 计数器计数的是机器周期的脉冲数 将脉冲数转化成时间 就可得到正脉冲的宽度 门控制位GATE的应用 测量脉冲宽度 50 ORG0100HMAIN MOVTMOD 90H T1为方式1定时控制字MOVTL1 00H 计数器初值为0MOVTH1 00HLOOP JBP3 3 LOOP 等待INT1 低SETBTR1 如INT1 为低 启动T1LOOP1 JNBP3 3 LOOP1 等待INT1 升高 开始计数LOOP2 JBP3 3 LOOP2 等待INT1 降低 停止计数CLRTR1 停止T1计数MOVA TL1 T1计数值的低8位送AMOVB TH1 T1计数值的高8位送B 由于定时器最长为16位计数器 因此被测脉冲高电平的宽度不能超过65536个机器周期 参考程序 51 例5 5当T0 P3 4 引脚上发生负跳变时 从P1 0引脚上输出一个周期为1ms的方波 如图所示 系统振荡为6MHz 两个计数器同时使用 5 4定时器的编程和应用 52 1 工作方式选择T0为方式1计数 初值0FFFFH 即外部计数输入端T0 P3 4 发生一次负跳变时 T0加1且溢出 溢出标志TF0置 1 发中断请求 在进入T0中断程序后 把F0标志置 1 说明T0引脚上已接收了负跳变信号 T1定义为方式2定时 在T0引脚产生一次负跳变后 启动T1每500 s产生一次中断 在中断服务程序中对P1 0求反 使P1 0产生周期1ms的方波 TMOD 0010 0101 25H 2 计算T1初值设T1的初值为X 则 28 X 2 10 6 5 10 4X 28 250 6 06H 5 4定时器的编程和应用 53 MAIN MOVTMOD 25H 初始化 T1为方式2定时 T0为方式1计数MOVTL0 0FFH T0置初值MOVTH0 0FFHSETBTR0 启动T0MOVTL1 06H T1置初值MOVTH1 06HLOOP0 JBCTF0 NEXT0 查询T0有无负跳变 有则转到NEXT0SJMPLOOP0NETX0 CPLP1 0 P1 0取反SETBTR1 启动T1LOOP1 JBCTF1 NEXT1 查询T1定时时间到否 到则转到NEXT1SJMPLOOP1NEXT1 CPLP1 0 P1 0取反SJMPLOOP1END 3 程序设计 54 5 4定时器的编程和应用 T0方式3时 TL0和TH0被分成两个独立的8位定时器 计数器 其中 TL0 8位定时器 计数器 TH0 8位定时器 当T1作串行口波特率发生器时 T0才设置为方式3 55 以上例题均采用查询的方法 这种方法很简单 但是在定时器整个计数的过程中 CPU要不断地查询溢出标志TFx的状态 很难执行其他操作 占用了CPU的工作时间 使得CPU的工作效率不高 若采用中断的方式来实现 可大大提高CPU的工作效率 我们下一章学习中断 学习完之后再返回来分析和比较两者的区别与特点 5 4定时器的编程和应用 56 本章结束 57 5 4定时器的编程和应用 例5 6假设某MCS 51应用系统的两个外中断源已被占用 设置T1工作在方式2 作波特率发生器用 现要求增加一个外部中断源 并控制P1 0引脚输出一个5kHz的方波 设系统振荡为6MHz 58 1 选择工作方式TL0为方式3计数 把T0引脚 P3 4 作附加的外中断输入端 TL0初值设为0FFH 当检测到T0引脚电平出现负跳变时 TL0溢出 申请中断 这相当于跳沿触发的外部中断源 TH0为8位方式3定时 控制P1 0输出5kHz的方波信号 如图所示 5 4 3方式3的应用 59 2 初值计算TL0的初值设为0FFH 5kHz的方波的周期为200 s TH0的定时时间为100 s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鞍山市中储粮2025秋招笔试模拟题及答案
- 中山市中石油2025秋招笔试模拟题含答案法律与合规岗
- 湘潭市中储粮2025秋招面试专业追问题库机电维修岗
- 中国广电深圳市2025秋招计算机类专业追问清单及参考回答
- 张家口市中石油2025秋招笔试模拟题含答案炼油设备技术岗
- 国家能源太原市2025秋招机械工程类面试追问及参考回答
- 自贡市中石化2025秋招面试半结构化模拟题及答案油品分析质检岗
- 中国联通眉山市2025秋招面试典型题目及答案
- 国家能源大连市2025秋招面试典型题目及答案
- 南京市中石油2025秋招面试半结构化模拟题及答案油田勘探开发岗
- 2025-2030中国基建投资拉动下工程机械需求预测与市场分析
- 胰岛素泵专家共识课件
- 电梯自行检测合规指南
- 人教版(2024)八年级上册数学全册教案
- 2025年住院医师规培-新疆-新疆住院医师规培(胸心外科)历年参考题库典型考点含答案解析
- 2025年低压电工证考试题库及答案
- 足球大单元教学计划
- 智慧酒店AI大模型数字化平台规划设计方案
- 公路应急抢险管理办法
- 广东省实验中学2025届七年级数学第一学期期末经典试题含解析
- 知识产权代持协议示范文本
评论
0/150
提交评论