- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机计时技术
8.1 概述 定时/计数器的用途 可以实现定时与计数两个功能,可用于 系统时钟 DRAM刷新定时 定时采样 实时控制 脉冲的计数 . . . . . . 如何实现定时和计数? 1. 完全硬件定时 用数字电路中的分频器将系统时钟进行适当的分频产生需要的定时信号; 2. 完全软件定时 利用CPU执行指令都需要几个固定的指令周期的原理,运用软件编程的方式进行定时。 3. 可编程的器定时/计数器 可编程定时/计数器是一个具有计数和定时功能的专用芯片。 8.2 可编程定时计数器8253 3个结构完全相同的16位减计数器,分别是0#、1#和2#。 每个计数器可独立工作,二进制计数器和十进制计数器。 每个计数器有六种工作方式。 按二进制或十进制(BCD码)计数 计数器结构示意图 8.2.2 引脚信号 1. 与处理器接口 D0 ~ D7数据线 A0 ~ A1地址线 RD*读信号 WR*写信号 CS*片选信号 2.与外部设备的接口信号 CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1 GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型 OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号 8.2.3 计数启动方式和计数结束方式 软件启动计数方式: GATE=1,写入计数初值后,开始减计数 硬件启动计数方式:由计数控制端GATE加一个从低电平到高电平变化的上跳沿控制开始减计数。 一次性计数方式:减计数单元减至0后不能自动将原计数初值寄存器中的初值装入减计数单元,不能重新开始新的一轮计数。 自动重装方式:如减计数单元减至0后,能自动将原初值寄存器中的初值自动装入减计数单元,并重新开始新一轮计数。 8.2.4 8253的工作方式 8253有6种工作方式,由方式控制字确定 熟悉每种工作方式的特点才能根据实际应用问题,选择正确的工作方式 每种工作方式的过程类似: ⑴ 设定工作方式 ⑵ 设定计数初值 〔 ⑶ 硬件启动 〕 ⑷ 计数初值进入减1计数器 ⑸ 每输入一个时钟计数器减1的计数过程 ⑹ 计数过程结束 方式0 计数结束中断方式 方式1 可编程单稳态触发器 方式2 频率发生器(分频器) 方式3 方波发生器 方式4 软件触发选通信号 方式5 硬件触发选通信号 各种工作方式的输出波形 计数开始的时刻 需要注意: 处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。 从第二个CLK信号的下降沿,计数器才真正开始减1计数。 实验1 实验2 问题讨论 通过本例,请大家 思考理论(原理)与实践(工程)的关系 体会教学实践环节(上机、实验)的重要性 同时,还请大家注意 大学的常规教学侧重理论(原理)的掌握 大家需要加强实践(实验)、积累实际经验 你还能提供这样的实例吗? 8.2.5 8253的方式控制字 8253加电后的工作方式不确定 8253必须初始化编程,才能正常工作 写入控制字 写入计数初值 读取计数值 8254新增读回命令 1 写入方式控制字 2 写入计数值 选择二进制时 计数值范围:0000H~FFFFH 0000H是最大值,代表65536 选择十进制(BCD码) 计数值范围:0000~9999 0000代表最大值10000 3 读取计数值 对8位数据线,读取16位计数值需分两次 计数在不断进行,应该将当前计数值先行锁存,然后读取: 向控制字I/O地址:给8253写入锁存命令 从计数器I/O地址:读取锁存的计数值 8.3.2 8253的实际应用 (教材251页) 例1:设频率为10kHz,采用定时中断方式每隔10ms完成一次扫描键盘的工作。 解:采用8253定时器的通道0来实现8253的端口地址为10H~13H。 (1)选择工作方式:选用方式2来实现 (2)确定计数初值 己知 fCLK0=10kHz,则TCLK0=0.1ms N=TOUT0/TCLK0=10ms/0.1ms=100(64H) (3)初始化编程 初始化程序段如下: 方式控制字,即14H。 MOV AL, 14H;通道0,写入初值低8位,高8位置0, 方式2,二进制计数 OUT 13H, AL;写入方式到控制字寄存器 MOV AL, 64H; OUT 10H, AL;写入计数初值低8位到通道0 2.8253计数功能的应用 (教材252页)例2: (1)8253通道0记录外部事件的发生次数,
文档评论(0)