- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.4可编程计数定时器82538254
* 第8章 输入/输出方法及常用的接口电路 8.4 可编程计数/定时器8253/8254 8.4.1 8253的组成与功能 图 8.19 8253/8254内部结构框图及引脚图 (a) 结构框图; (b) 引脚图 1. 3 个独立的16位计数器 图 8.20 8253/8254计数器内部逻辑框图 2. 控制命令寄存器 此寄存器用来保存来自CPU送入的控制字。每个计数器都有一个控制命令寄存器,用于保存该计数器的控制信息。 控制字将决定计数器的工作方式、计数形式及输出方式,亦能决定应如何装入计数器初值。 8253的 3 个控制寄存器只占用一个地址号,而靠控制字中最高二位来指定当前的控制字是发给哪个计数器的。 控制寄存器只能写入,不能读出。 3. 读/写逻辑 读/写逻辑的任务是接收来自CPU的控制信号,完成对8253各计数寄存器的读/写操作。这些控制信号包括读信号RD、写信号WR、片选信号和片内寄存器寻址信号A0、A1。 4. 数据总线缓冲器 这是一个双向、三态8位缓冲器。它用于8253和系统数据总线连接。CPU通过数据总线缓冲器将控制命令字和计数值写入8253计数器,或者从8253计数器中读取当前计数值。 8253的8位数据线D0~D7通常与系统数据总线D0~D7相连。 8253共占用4个I/O地址。当A1A0=00时,为计数器0中的CR和OL寄存器的共用地址。同时,当A1A0=01和10时,分别为计数器1和2的CR和OL的共用地址。当A1A0=11时,是3个计数器内的3个控制寄存器的共用的地址号。但CPU给哪一个计数器送控制字,这由控制字格式中最高两位(计数器选择位)SC1、SC0的编码来决定。 表 8.4 8253端口的地址分配 8.4.2 8253的控制字、 读/写操作和初始化编程 1. 8253的控制字格式 图8.21 8253控制字格式 2. 8253的读/写操作 (1) 读操作。 所谓读操作是指读出某计数器的计数值至CPU中。 有两种读数方法。 ① 先使计数器停止计数(在GATE端加低电平或关闭CLK脉冲): 根据送入的控制字中RL1、RL0的状态,用一条或两条输入IN指令读CE的内容,通常第一次读低字节(LSB),第二次读出高字节。实际上,CPU是通过输出锁存器OL中读出的,因为在计数过程中OL的内容是跟随CE内容变化的。此时由于CE不再计数, 故可稳定地读出OL(即CE)的内容。 ② 在计数过程中不影响CE的计数而读取计数值: 这称为“飞读”方法。为达此目的,应先对8253写入一个具有锁存功能的控制字,即D5D4位(RL1、RL0)应取00,而其余位不变。这样就可将当前的CE内容锁存入OL中,然后再用两条输入指令将OL中的内容取到CPU中,从而实现“飞读”。当CPU读取了计数值后,或对计数器重新初始编程后8253会自动解除锁存状态, OL中的值又随计数器CE值变化。 (2) 写操作。 所谓写操作是指CPU对8253写入控制字或写入计数初值。 8253中3个计数器的控制寄存器地址号是共用的,并由控制字中D7D6位(SC1、SC0)的状态来确定是哪一个计数器的控制字, 从而计数初值会分别写入各对应的端口计数器CR中。 8253投入工作之前,CPU要对它进行初始化编程。初始化编程的步骤为: ① 写入计数器的控制字, 规定其工作方式及相应功能; ② 写入计数初值。当计数初值为8位,则控制字中RL1,RL0应取01,只写入CR的低8位,CR的高8位会自动置0;若是16位计数,而低8位是0,则应取RL1、RL0为10,只写入高8位, 低8位会自动置0。若是16位的计数初值,则LR1,LR0=11,应分两次写入初值,先写低8位,再写入高8位。由于计数器采用递减方式计数,因此如果计数初值为0000H,则是最大的计数初值。 若选择0计数器,工作在方式3,计数初值为2354H,十进制计数方式;或选择1#计数器,工作在方式2,计数初值为18H, 二进制计数方式。并设8253端口地址为40~43H。 则根据上述各计数器的功能, 其初始化编程如下: ;对0#计数器初始化编程 MOV AL,37H ; 对0#计数器送控制字。 OUT 43H, AL MOV AL, 54H ; 送初值的低8位。 OUT 40H, AL MOV AL, 23H ; 送初值的
文档评论(0)