8253的工作原理
8253是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。其CLK0~CLK2是计数器0~2的时钟脉冲输入端, GATE0~GATE2是门控脉冲输入端, OUT0~OUT2是输出端及内部结构见下图。
当用8253做外部事件计数器时,在CLK端所加的计数脉冲由外部事件产生,这些脉冲的间隔可以不相等。如果要用它做定时器,则CLK端应输入精确的时钟脉冲。这时, 8253所能实现的定时时间决定于计数脉冲的频率和计数器的初值,即定时时间=时钟脉冲周期tc ×预置的计数初值n8253的控制逻辑由5个控制信号WR、CS、A1和A0组成,对应的操作见表1。
8253编程时,要对其控制字寄存器写入相应的控制字,控制字寄存器格式如表2所示。
其中: SC1, SC0———通道选择位。为00, 01, 10分别表示选择0, 1, 2通道。RL1, RL0——
—读/写操作位。00 表示锁存数据,可随时读取计数器中的计数值; 01 表示只读/写低8位,高8位自动置为0; 10表示只读/写高8位,低8位自动置为0; 11表示读/写16位数据,先低8位,后高8位。M2,M1,M0———工作方式选择位。8253 具有3 个独立的16 位减法计数器,6 种不同的工作方式。方式0 :又称计数结束产生中断工作方式。当程序将工作方式控制字写入控制字寄存器时,计数器的输出端OUT 立即变为低电平。在计数初值写入该计数器后,输出仍将保持为低电平。当门控信号GATE 为高电平时,计数器对输入端CLK的输入脉冲开始作减一计数,当计数器从初值减为0 时,输出端OUT由低电平变为高电平,该输出信号可作为向CPU 发出的中断请求信号。
方式1 :又称可编程单稳态工作方式。功能是在GATE 信号的上升沿作用下,输出端OUT 产生一
个负脉冲信号,负脉冲的宽度可由定时器的计数初值和时钟频率编程确定。方式2 :又称频率发生器工作方式。当程序将工作方式控制字写入控制字寄存器时,计数器的输出端OUT8023的含意立即变为高电平。在写入计数初值后,计数器对输入时钟CLK计数。在计数过程中OUT 保持不变,直到计数器从初值减为1 时,输出OUT 将变低,再经过一个CLK周期,OUT 恢复为高电平,并按已设
定的计数初值重新开始计数。在需要产生某个脉冲信号或将某一个较高频率的脉冲信号分频为较低频率时,可使用8253 的方式2。
方式3 :又称方波发生器工作方式。方式3 的工作类似于方式2 ,不同之处是方式3 的输出OUT
是方波。
方式4 :又称软件触发选通工作方式。其功能是在输出OUT 端隔一定时间产生一价目负脉冲。
与方式0 不同的是,输出脉冲的宽度是固定的,但产生负脉冲所相隔时间是可编程的。
方式5 : 又称硬件触发选通工作方式。方式5的工作类似于方式4 ,不同之处是GATE 信号的作用
不同。方式5 的计数过程由GATE 的上升沿触发,当计数结束时,OUT 将输出一个CLK周期的低电平信号。
其中方式0的工作过程如下:当程序送一控制字将所选的计数器置于所设定的方式后,该计数器
的输出为低;当计数器初值装入被选中的计数器后,在外部输入的门控高电平的控制下,则可通过各自的计数脉冲进行递减计数。此时其输出仍为“低”。当计数器从初始值减到全“0”时,便产生一高电平输出,利用此输出信号向CPU发计数完中断;此中断请求一直保持到程序再次向计数器装入初值为止。
BCD———计数方式选择位。1 表示按十进制计数, 0表示按二进制计数。
8253初始化编程
编程时,可选择计数器1工作在方式0。在8253的方式0工作方式中,从将计数初值写入计数器到开
始减1计数之间,有一个时钟脉冲的延迟。若计数初值为n = 999,那么经过n + 1个即1000个脉冲时计数值减为0,并在OUT1端输出一正跳变,这可以作为中断请求。在中断服务子程序中CPU可以做其他处理,如送下一个包装箱等。设计数初值为1999 (要求一个包装箱内装工件2000) ,按十进制计数,先送低8位,再送高8位,控制字为01110001B。
初始化程序为:
MOV AL, 01110001B
AL, 01110001B
MOV DX, 0356H
OUT DX,AL ;送方式控制字
MOV AL, 99H
MOV DX, 0352H
OUT DX,AL ;向通道1送计数初值低8位
MOV AL, 19H
OUT DX,AL ;向通道1送计数初值高8位
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论