8253的工作原理简介8253可编程计数器定时器的工作频率为0~2MHz它有3个独立编程的计数器每个计数器有三个引脚分别为时钟CLK门控GATE计数器和计时结束输出OUT每个计数器分别有6种工作方式下面针对使用到的两种工作方式方式1和方式2的工作原理1进行简述方式1可编程单稳即由外部硬件产生的门控信号GATE触发8253而输出单稳脉冲计数器装入计数初值后在门控信号GATE由低电平变高电平并保持时计数器开始计数此时输出端变成低电平并开始单稳过程当计数结束时输出端OUT转变成高电平单稳过程结束OUT端输出一个单稳脉冲在硬件再次触发OUT端可再次输出一个同样的单稳脉冲单稳脉冲的宽度由装入计数器的计数初值决定在WR信号的上升沿CPU写控制字之后输出端OUT保持高电平若OUT原为低电平则变为高电平CPU写入计数值后计数器并不马上开始计数而要等到门控信号GATE启动之后的下一个CLK的下降沿才开始在整个计数过程中输出端OUT保持低电平直至计数值至0OUT变为高电平为止方式2速率发生器其功能如同一个N分频计数器其输出是将输入时钟按照N计数值分频后得到的一个连续脉冲在该方式下当计数器装入初始值开始工作后输出端OUT将不断地输出负脉冲其宽度为一个时钟周期的时间而两个负脉冲间的时间脉冲个数等于计数器装入的计数初值若计数初值为N则每N个输入脉冲输出一个脉冲当CPU写完控制字后输出端OUT转变成高电平计数器将立即自动开始对输入CLK时钟计数在计数过程中OUT端始终保持高电平直至计数器的计数值减到1时OUT端才变为低电平其保持的宽度为一个输入CLK时钟周期的时间然后输出端OUT恢复高电平计数器重新开始计数8253控制字格式为其中SC1SC0为计数器选择位RL1RL0为计数器读写操作选择位以确定计数器进行装入或读出是单字节还是双字节M2M1M0为计数器工作方式选择位BCD表示计数器计数方式选择位8253的内部结构框图如图101所示引脚如图102所示
8253内部可分为6个模块每个模块的功能如下
f1数据总线缓冲器及数据总线D0~D7这是8253与CPU数据总线连接的8位双向三态缓冲器是8253内部总线与CPU系统的8位数据总线之间的接口通过它写方式控制字到控制字寄存器CPU写计数初值到计数通道读取计数通道的当前计数值即数据总线缓冲器有三个基本功能通过编程向8253写入确定8253工作方式的命令向计数寄存器装入计数初值读出当前计数值2读写控制逻辑及控制引脚这是8253内部操作的控制部分r