第七章-可编程计数器定时器..ppt_第1页
第七章-可编程计数器定时器..ppt_第2页
第七章-可编程计数器定时器..ppt_第3页
第七章-可编程计数器定时器..ppt_第4页
第七章-可编程计数器定时器..ppt_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

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

文档简介

微型计算机原理与接口技术 第16讲 2 8253工作原理 结构 引脚 工作方式8253应用举例 定时功能 计数功能 内容提要 第七章可编程计数器 定时器8253 8254及其应用 3 综述 两大功能 1 定时功能例如 按一定的时间间隔对动态RAM进行刷新 扬声器的发声 在计算机实时控制和处理系统中 对处理对象进行采样 或定时检测某些参数等 2 计数功能对外部事件进行计数等 实现定时功能主要有三种方法 软件定时不可编程的硬件定时可编程的硬件定时 第七章可编程计数器 定时器8253 8254及其应用 例 软件延时 nT 假设T 210ns MOVBL 10 4T 1DELAY0 MOVCX 2801 4T 10DELAY1 LOOPDELAY1 17T 5T 17T 2801 12T 10DECBL 2T 10JNZDELAY0 16T 4T 16T 10 12TRET 20Tn 4 10 4 2801 17 12 2 16 12 20 nT 10ms 4 Intel8253就是一种能完成上述功能的计数器 定时器芯片 被称为可编程间隔定时器 ProgrammableIntervalTimer PIT 可编程计数器 定时器8253 主要功能 3个独立的16位计数器每个计数器都可以按照二进制或BCD码进行计数每个计数器的计数速率可达2MHz 8254 2计数频率可达10MHz 每个计数器有6种不同的工作方式所有的输入输出引脚电平都与TTL电平兼容 5 7 1 18253的内部结构和引脚信号 图7 1 a 8253的内部结构 图7 1 b 8253的引脚 7 18253的工作原理 6 7 1 18253的内部结构和引脚信号 1 数据总线缓冲器 8253与CPU数据总线连接的8位双向三态缓冲器 CPU用输入 输出指令对8253进行读 写操作的所有信息 都经这8条D7 D0传送 包括 CPU在对8253进行初始化编程时 向它写入的控制字 CPU向某一计数器写入的计数初值 CPU从某一个计数器读出的计数值 7 18253的工作原理 7 2 读 写控制逻辑 接收CPU控制总线送来的输入信号 经组合后形成控制信号 对各部分操作进行控制 可接收的信号有 CS片选信号 低电平有效 由地址总线经I O端口译码电路产生 只有当CS为低电平时 CPU才能对8253进行读写操作 RD读信号 低电乎有效 当RD为低电平时 表示CPU正在读取所选定的计数器通道中的内容 WR写信号 低电平有效 当WR为低电平时 表示CPU正在将计数初值写入所选中的计数通道中或者将控制字写入控制字寄存器中 8 A1A0端口选择信号 在8353内部有3个计数器通道 0 2 和一个控制字寄存器端口 当A1A0 00时 选中通道0 A1A0 01时 选中通道1 A1A0 10时 选中通道2 A1A0 11时 选中控制字寄存器端口 注意 8253与8位数据总线的微机 如8088CPU 相连 只要将其A1A0分别与CPU地址总线的最低两位A1A0相连即可 8253与16位数据总线的微机 如8086CPU 相连 则用CPU地址总线中的A2A1实现端口选择 即CPU的A2连8253的A1 CPU的A1连8253的A0 四个端口地址 9 3 计数器0 2 3个完全相同的计数器 定时器通道 对它们的操作完全是独立的 一个8位的控制字寄存器 CPU写入控制字 选定计数器通道的工作方式 读写格式和数制 一个16位的计数初值寄存器 存放由CPU送来的计数初值 构成 每个通道都包含 一个16位的计数器执行部件 减法计数器 其起始值就是初值寄存器的值 该值可由程序设置 一个16位输出锁存器 锁存计数器执行部件的值 供CPU读取 某个时刻计数器的瞬时值 注意 1 计数初值寄存器 计数器执行部件和输出锁存器都是16位寄存器 2 它们均可被分成高8位和低8位两个部分 因此也可作为8位寄存器来使用 10 预置初值 每个通道对输入到CLK引脚上的脉冲按2进制或10进制 BCD码 格式进行计数 倒计数法 需先对计数器预置初值 减计数器 每输入一个时钟脉冲 计数器的值减1 当计数器的值减为0时 便从OUT引脚输出一个脉冲信号 输出信号的波形主要由工作方式决定 同时还受外部GATE门控信号控制 它决定是否允许计数 工作原理 11 8253的3个计数器都各有3个引脚 分别是 CLK0 CLK2 计数器0 2的时钟脉冲输入端 频率不能大于2MHz OUT0 OUT2 计数器0 2的输出端 GATE0 GATE2 计数器0 2的门控脉冲输入端 引脚 外部事件计数器 对CLK脚上的脉冲 由外部事件产生 进行计数 脉冲的间隔可以不相等 定时器 CLK引脚上输入精确的时钟脉冲 定时时间取决于计数脉冲的频率和计数器的初值 即定时时间 时钟脉冲周期tc 预置的计数初值n 12 4 控制字寄存器 13 7 1 2初始化编程步骤和门控信号的功能 1 8253的初始化编程步骤 使用前 必须用程序把编程芯片初始化为所需的特定模式 其过程称为初始化编程 其步骤为 1 写入控制字 2 写入计数初值 用输出指令向控制字寄存器写入一个控制字 以选定计数器通道 规定该计数器的工作方式和计数格式 写入控制字还起到复位作用 使输出端OUT变为规定的初始状态 并使计数器清0 写入控制字 14 写入计数初值用输出指令向选中的计数器端口地址中写入一个计数初值 初值可以是8位数据 也可是16位数据 若是8位数 只要用一条输出指令就可完成初值的设置 若是16位数 则须用两条输出指令来完成 且先送低8位数据 后送高8位数据 注意 计数初值为0时 也要分成两次写入 因为在二进制计数时 它表示65536 BCD计数时 它表示10000 说明 3个计数器通道的编程没有先后顺序 可任意选择某一个计数器通道进行初始化编程 只要符合先写入控制字 后写入计数初值的规定即可 15 7 1 38253的工作方式 Intel8253有6种工作方式 1 方式0 计数结束中断方式 InterruptonTerminalCount 2 方式1 可编程单稳态输出方式 ProgrammableOne short 或硬件再触发单拍脉冲方式 3 方式2 比率 速率 发生器 RateGenerator 4 方式3 方波发生器 SquareWaveGenerator 5 方式4 软件触发选通 SoftwareTriggeredStrobe 6 方式5 硬件触发选通 HardwareTriggeredStrobe 6种工作方式的原理和编程基本类似 重点介绍方式0 16 1 方式0 计数结束中断方式 InterruptonTerminalCount 17 8253方式0波形图 18 当对8253的任一个通道写入控制字 并选定工作于方式0时 输出端OUT立即变为低电平 要使8253能够进行计数 门控信号GATE必须为高电平 若CPU利用输出指令向计数通道写入初值n 4 时 WRn变成低电平 在WRn的上升沿时 n被写入8253内部的计数器初值寄存器 在WRn上升沿后的下一个时钟脉冲的下降沿时 才把n装入通道内的实际计数器中 开始进行减1计数 每从CLK引脚输入一个脉冲 计数器就减1 总共经过个脉冲后 计数器减为0 OUT引脚由低电平变成高电平 这个由低到高的正跳变信号 可以接到8259A的中断请求输入端 向CPU发中断请求信号 工作过程 n 1 从写入计数器初值到开始减1计数之间 有一个时钟脉冲的延迟 19 OUT引脚上的高电平信号 一直保持到对该计数器装入新的计数值 或设置新的工作方式为止 按方式0进行计数时 计数器不会自动重装初值 计数器只计一遍 当计数器计到0时 不会再装入初值重新开始计数 其输出将保持高电平 特殊情况考虑 1 特殊情况1 在计数的过程中 如果GATE变为低电平 则暂停减1计数 计数器保持GATE有效时的值不变 OUT仍为低电平 待GATE回到高电平后 又继续往下计数 2 特殊情况2 如果在计数过程中改变初值 写完初值后 计数器按照新的初值开始计数 工作过程 续 20 8253方式1波形图 2 方式1 可编程单稳态输出方式或硬件再触发单拍脉冲方式 21 特点 1 计数初值为n 则输出的单拍负脉冲宽度为n倍时钟周期 2 当计数到0时 外部触发 GATE由低电平向高电平跳变 可启动新一轮计数 可产生同宽度的单拍脉冲 3 若计数未结束 重新触发 将扩展输出脉冲的宽度 4 在计数过程中改变初值 不影响当前一轮计数 等计数到0 产生单拍脉冲后 如果再有新的触发信号 将以新的初值开始计数 2 方式1 可编程单稳态输出方式或硬件再触发单拍脉冲方式 22 8253方式2波形图 3 方式2 比率 速率 发生器 RateGenerator 23 特点 1 计数到0时 自动重装计数初值 重新开始计数 2 计数过程可由门控信号GATE控制 在计数过程中 当GATE变为低电平时 使OUT变为高电平 禁止计数 当GATE从低电平变为高电平 GATE端产生上升沿 则在下一个时钟脉冲时 把预置的计数初值装入计数器 从初值开始递减计数 并循环进行 3 计数过程中 可改变计数初值 不影响当前计数过程的进行 当计数值减为0时 一个计数周期结束 8253将按新写入的计数值n进行计数 注意 需要产生连续的负脉冲序列信号时 可使8253工作于方式2 3 方式2 比率 速率 发生器 RateGenerator 24 8253方式3波形图 4 方式3 方波发生器 SquareWaveGenerator 25 特点 1 方式3和方式2的工作相类似 但从输出端得到的不是序列负脉冲 而是输出对称的方波或基本对称的矩形波 2 在计数过程中 若GATE变成低电平时 就迫使OUT变为高电平 并禁止计数 当GATE回到高电平时 重新从初值n开始进行计数 3 如果希望改变输出方波的速率 CPU可在任何时侯重新装入新的计数初值 在下一个计数周期就可按新的计数值计数 从而改变方波的速率 注意 当写入的计数初值为偶数时 输出完全对称的方波 写入初值为奇数时 其输出波形的高电平宽度比低电平多一个时钟周期 4 方式3 方波发生器 SquareWaveGenerator 26 8253方式4波形图 5 方式4 软件触发选通 SoftwareTriggeredStrobe 27 特点 1 装入的计数初值n仅一次有效 不重新写入初值 若要继续进行计数 必须重新装入计数初值 2 若在计数过程中写入一个新的计数值 则在现行计数周期内不受影响 但当计数值回0后 将按新的计数初值进行计数 同样也只计一次 3 如果在计数的过程中GATE变为低电平 则停止计数 当GATE变为高电平后 又重新将初值装入计数器 从初值开始计数 直至计数器的值减为0时 从OUT端输出一个负脉冲 5 方式4 软件触发选通 SoftwareTriggeredStrobe 28 8253方式5波形图 6 方式5 硬件触发选通 HardwareTriggeredStrobe 29 特点 1 写完控制字和初值后 要等GATE触发信号 才能在下一个时钟脉冲后沿把计数初值装入执行部件 并开始减1计数 2 计数器回0后 自动重装计数值 但并不开始计数 要等到GATE端输入正跳变触发脉冲信号 3 计数器在计数过程中 不受门控信号GATE电平的影响 但只要计数器未回0 GATE的上升沿却能多次触发计数器 使它重新从计数初值n开始计数 直到计数值减为0时 才输出一个负脉冲 4 在计数过程中写入新的计数值 但GATE端没有触发脉冲 则计数过程不受影响 6 方式5 硬件触发选通 HardwareTriggeredStrobe 30 8253六种工作方式小结 1 输出波形的特点方式0的输出常作为中断源方式1的输出是宽度为N个CLK脉冲的低有效脉冲 单脉冲 计数过程中输出为低 方式2 4 5的输出波形相同 都是宽度为一个CLK周期的负脉冲 但方式2是连续工作 方式4由软件 设置计数值 触发启动 方式5由硬件 门控信号GATE 触发启动方式3的输出是连续的方波或矩形波 2 输出OUT的初始状态只有方式0在写入控制字后输出为低方式1 2 3 4 5等五种方式在写入控制字后输出为高 31 8253六种工作方式小结 3 计数值的设置任一种方式 只有在写入计数值后才能开始计数 不同点在于 方式0 2 3 4都在写入计数值后 计数过程就开始方式1 5需要外部触发启动 才开始计数 32 8253六种工作方式小结 4 门控信号 GATE 的作用与计数器计数到0后的特点 33 8253六种工作方式小结 5 在计数过程中改变计数值8253在不同方式时都可以在计数过程中写入计数值 但作用不同 34 7 2 18253定时功能的应用例子 1 用8253产生各种定时波形 在某个以8086为CPU的系统中使用了一块8253芯片 通道的基地址为310H 所用的时钟脉冲频率为1MHz 要求3个计数通道分别完成以下功能 通道0工作于方式3 输出频率为2kHz的方波 通道1产生宽度为480 s的单脉冲 通道2用硬件方式触发 输出单脉冲 时间常数为26 8253应用的步骤 与系统的连接芯片的初始化编程 7 28253的应用举例 35 36 怎样与系统连接呢 37 通道0 工作于方式3 即构成一个方波发生器 它的控制端GATE0须为高电平 要输出2kHz的连续方波 计算计数初值 通道1 工作于方式1 即构成一个单稳态电路 由GATE1的正跳变触发 输出一个宽度由时间常数决定的负脉冲 此功能一次有效 需要再形成一个脉冲时 不但GATE1脚上要有触发 通道也需重新初始化 要输出宽度为480us的单脉冲时 计算计数初值 通道2 工作于方式5 即由GATE2的正跳变触发减1计数 在计到0时形成一个宽度与时钟周期相同的负脉冲 此后 若GATE2脚上再次出现正跳变 又能产生一个负脉冲 思考 如果某个通道工作于方式0 要求每500个脉冲OUT端输出一个正跳变 则计数初值为 计数初值n 499 因为经过n 1个脉冲后计数器减为0 CNT0 1MHz 2kHz 500 CNT1 480us 1us 480 由题设可知 预置的时间常数已设置为26 38 对3个通道的初始化程序如下 1 通道0初始化程序MOVDX 316H 控制口地址MOVAL 00110111BOUTDX AL 写入方式字MOVDX 310H 通道0口地址MOVAL 00H 低字节OUTDX AL 先写入低字节MOVAL 05H 高字节OUTDX AL 后写入高字节 通道0控制字 先读写低字节 后高字节 方式3 BCD计数 39 2 通道1初始化程序MOVDX 316H 控制口地址MOVAL 01110011BOUTDX AL 写入方式字MOVDX 312H 通道1口地址MOVAL 80H 低字节OUTDX AL 先写入低字节MOVAL 04H 高字节OUTDX AL 后写入高字节 通道1控制字 先读写低字节 后高字节 方式1 BCD计数 续 40 3 通道2初始化程序MOVDX 316H 控制口地址MOVAL 10011011B 通道2控制字 只读写低字节 方式5 BCD计数OUTDX AL 写入方式字MOVDX 314H 通道2口地址MOVAL 26H 低字节OUTDX AL 只写入低字节 续 41 2 控制LED的点亮或熄灭 用8253来控制一个LED发光二极管的点亮和熄灭 要求点亮10秒钟后再让它熄灭10秒钟 并重复上述过程 加上适当的驱动电路后 便可以用在交通红绿灯控制和灯塔等场合 设CPU为8086 8253的各端口地址为81H 83H 85H和87H 42 8253的8根数据线D7 D0与CPU的高8位数据线D15 D8相连 选中奇地址端口 通道1的OUT1与LED相连 当它为高电平时 LED点亮 低电平时LED熄灭 只要对8253编程 使OUT1输出周期为20秒 占空比为1 1的方波 就能使LED交替地点亮和熄灭10秒钟 如果将2MHz时钟信号直接加到CLK1端 则OUT1输出的脉冲周期最大只有0 5us 65536 32 768ms 达不到20秒的要求 用几个通道级连的方案来解决 怎样与系统连接呢 43 将2MHz时钟信号加在CLK0输入端 并让通道0工作于方式2 如果选择计数初值N0 5000 则从OUT0端可得到连续的负脉冲序列信号 其频率为 2MHz 5000 400Hz 周期为2 5ms 把该信号连到CLK1输入端 并使通道1工作于方式3 要使得OUT1输出周期为20秒 频率为1 20 0 05Hz 的方波 计算计数初值N1 400Hz 0 05Hz 8000 N0 N1 2MHz 0 05Hz 4 107 44 初始化程序如下 MOVAL 00110101B 通道0控制字 先读写低字节 后高字节 方式2 BCD计数OUT87H AL 写入方式字MOVAL 00H 低字节OUT81H A

温馨提示

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

评论

0/150

提交评论