8253的工作方式
$ H, x9 F; w- w! J 8253共有6种工作方式,下面分别说明每一种方式的要点。
2 |0 G7 N9 k/ o( W- k1 o" w
1.方式0——计数到终点输出变为高电平
9 K6 O) @6 {- N$ R5 ]4 r
当将某计数器设置成方式0后,其输出OUT变低电平,装入初值后,仍保持低电平。门控为高电平开始计数。每来一个计数脉冲CLK,计数器的值减1,当计数到达终点即计数器的值变成0时,OUT变为高电平。在计数期间可用门控信号暂停计数(即门控为低电平时,计数暂停)。
- O' t& l4 M3 U( x+ }: C2 m
图6.20所示是方式0的波形示意图。其中丽是表示初始化时执行输出指令所发的写信号,CW表示写控制字,LSB表示写计数初值(一般情况下,写初值应有两个负脉冲,第一个送低8位,第二个送高8位。这里是为了波形简洁,只画了一个)。
+ S) X0 M u' I# D5 u& G$ ~ Z, p
|% K8 [/ |+ m0 F0 T
$ q0 P( ?8 n" L% S
6 I% i' M' Q) J: y R0 J( k6 Q; n, F( z' F: W# ?# q# J
( R) H3 I' E7 y# f# B/ p4 o 输出端OUT由低变高可以用来作为中断请求信号(正是由于这种作用,许多教材中称方式0为完成计数时中断),也可作为查询信号,也可直接去控制某个操作,如让某个开关动作。
* k7 e( a/ F7 L* O
2.方式1——可编程单稳
1 ~3 K J8 b8 w
所谓单稳,是指这样的电路,它有两种状态,但只能稳定在一种状态。在一定的外界作用下,它能从这一种状态进入到另一种状态,但经过一定时间后,又自动恢复到原来的状态。
/ V$ v& q0 x! J4 a6 f) Z: E( y! H这个时间参数一般是由外加电阻、电容的值决定的。8253的方式1就是模拟单稳电路,其处于非稳定状态的时间可通过程序进行设置。
" D/ E5 L/ e! d( X) F! N 一旦8253的某计数器被设置成方式1后,其OUT变高电平,装入初值后,仍保持高电平,等待门控上升沿到来。门控为电平高后的第一个CLK下降沿时0UT变低电平,初值又被重新装入一次,并开始计数,每来一个计数脉冲,计数器的值减1。当减到0时OUT变高电平。此后门控的上升沿可再次启动此过程。图6.21方式1的波形如图6.21所示。
7 F8 X, d6 t+ m) O. n& N9 ?
" Y7 ~. _9 I: s3 L( L+ j8 u
1 A( D4 O+ A6 Z3 V/ ~0 I! E; W9 r" ^% U
" c& G* s% {: W
1 F( ~+ v/ a6 o6 @; d/ \5 ]* E3 |
从图中可看出,门控上升沿的到来使得OUT开始输出负脉冲(这种现象叫触发),其宽度为CLK的周期乘以预置值。如果在负脉冲期间,即计数未到达终点,GATE再来一个上升沿,则再次赋初值,重新开始计数。这样做可加宽负脉冲的宽度,如图6.22所示。这种现象叫单稳的再触发。74系列TTL集成电路中就有这样的可再触发单稳,如74LSl23。8253的方式1比硬件电路用起来更灵活、更方便。
5 W3 b7 s/ F0 J0 B6 z* f, {: u _( s) W0 s/ {, Z
# ^/ |7 h# f( s
5 F/ }" k: E% Y3 d1 V
: p2 O8 \. \6 u $ \* J2 d3 c. _ |. g p! m1 `
3.方式2——分频脉冲发生器(分频器)
) {7 ~/ c! ?3 k2 F* K 方式2用来对输入脉冲(即计数脉冲CLK)N分频(N为预置的初值),在输出信号周期中低电平的时间为一个CLK周期。
% j9 m9 N, l1 J/ {
设置此方式后,OUT变高电平,装入初值后便自动开始计数,减到1时OUT变低电平。
4 D' S+ \. D: |2 p6 k7 M; R
经过一个CLK周期,OUT恢复高电平,且计数器又自动装入初值,重新开始计数。如此循环下去。如图6.23所示是工作在方式2的示意图。在上述过程中GATE应一直保持高电平。
" W+ p& D1 S2 T! I若GATE变低电平将禁止计数,并使输出为高电平。在GATE再次变高电平时,计数器将重新装入预置的初值,并开始计数。
) o% u7 a, u( y0 `+ t7 f( K T! R$ B6 }2 n7 {4 c
/ ~, R$ { v/ B( {9 i1 v2 I% p+ ]$ \1 r' J2 m% h5 B
9 }& }+ J( Q) W' k$ Y ! o, S; l- }8 x1 B e9 j& T3 v
4.方式3——方波发生器
' a, w5 ?2 v8 ~6 f6 E方式3类似于方式2,输出是周期性的。不同的是方式3输出方波。如果预置的初值N为偶数,则输出周期中高电平和低电平的宽度相等;如果N为奇数,则输出周期中高电平比低电平多一个CLK周期的时间,当N相当大时,也可认为是方波。当然,一般采用方式3时,置初值为偶数。
3 p+ m8 u$ W- Z& [9 \2 d0 _
设置成方式3后,OUT变高电平,装入初值后便自动开始计数。如初值为偶数,每个CLK使计数器减2,计到终点改变电平。如初值为奇数,则输出为高电平时第一个CLK使计数器减1,随后每个CLK使计数器减2;输出为低电平时第一个CLK使计数器减3,随后每个CLK使计数器减2。每当计数到终点都会改变电平,初值又被重新装入,并开始计数。如此循环下去,如图6.24所示。和方式2一样,GATE变低可暂停计数。
3 u9 P: q& {' [$ T7 p% t# b4 V* V
, r+ c4 q$ R* Q8 t/ @' Y
7 I* e8 L3 c- r; S. A7 U: `" ~" m, y/ r* r9 L, ^
& o s9 v& @3 ~6 @
( v- Z1 p" b8 Y 5.方式4——软件触发选通
- U1 c, X$ M9 g
设置成方式4后,OUT变高电平,写入计数值后自动开始计数(所以称之为软件触发),计数到终点输出一个CLK周期的低电平脉冲。GATE变低可暂停计数,用GATE的上升沿可重新赋初值,并开始计数。
5 w6 J; @8 Y& x8 V( t0 o( C 6.方式5——硬件触发选通
0 T/ l& r# G8 c; h/ Y) @
设置成该方式后,OUT变高电平,写入计数值后需等待GATE上升沿的到来才开始计数(所以称之为硬件触发)。计数到终点也输出一个CLK周期的低电平脉冲。计数过程中不受GATE电平的影响。此后,用GATE的上升沿可重新赋初值,并开始计数。
1 w/ K% Y3 z, P1 {
7.工作方式小结
% ^- a8 a6 N- y. ?4 u- M* v4 J
8253有六种工作方式,每一种方式都有自己的特点。下面简单做一比较,找出它们的共性和个性。
. N1 f& v- P, Y3 p2 V$ c9 [ ①在六种工作方式中,只有方式0在写入控制字后OuT变为低电平,其他5种方式都在写入控制字后OUT输出高电平。
6 g |; Z9 Y/ M7 _ ?& H ②预置值N与输出波形的关系见表6.8。表中有几处“N l”,这里加1是考虑到预置的初值需要一个计数脉冲才能装入。当然,对其他方式初值的装入也都需要一个CLK脉冲,只是这一个CLK在输出中不必加以考虑,因为方式1要考虑的是单稳负脉冲的宽度,而方式2,3初值的装人只影响第一个周期。
: ?5 k- K. K" U. q( o2 v7 b: e* T6 h- [5 y3 _* B% z1 V
( z# u; }. a- E
1 f3 {! `# [ S6 Y1 [; }: P
" K9 k3 i( l4 i: [
N+ u" z3 X) _& C3 Y
③方式2,4,5有相同之处,即计数到终点,都输出宽度为1个CLK周期的低电平脉冲。
( j9 L/ r* K' g d& k$ R
其主要不同点为:方式2为自动启动,重复进行计数及输出低电平脉冲的过程;方式4也为自动启动,但仅输出一个低电平脉冲;方式5需等待GATE上升沿的到来才开始计数,也只输出一个低电平脉冲。
% |( H+ h3 x% y, `$ i0 E
④方式2和方式3也有相同之处,即都输出周期性信号,每当计数到终点,初始化时预置的初值都会被自动重新装入(减1计数器)。
4 G/ Z& [' u! ^, r, w 上面的工作方式说明主要强调了8253的计数功能。实际上,如果计数脉冲的频率是一定的,那么其定时功能也就显而易见了。