2015年(29)
分类: 嵌入式
2015-04-12 22:11:07
首先,说明锁存器有什么用。根据字面意思,锁存器的作用就是锁住数据。
还记得宋丹丹的一个小品中问赵本山:把大象装进冰箱需要几步?答:3步,打开冰箱,把大象塞进去,关上冰箱。那锁住数据需要几步?答:3步,打开锁存器,将数据输入,将数据锁上。
我们拿个具体的芯片来所以下,就拿74LS373来说吧。
下图为74LS373的逻辑图:
如果/OE为1时,下面8个三态门为高阻态,无论D0-D7为多少,LE为什么状态,都没有输出。
如果/OE为0,三态门为输出状态。上面的施密特触发器有一个G端,G端应该为gate的意思,G为低电平有效,G有效,/Q就能输出,即O0-O7与D0-D7一致,在LE为高电平时,G有效;在LE为低电平时,G无效,D端无论怎么变,/Q都保持上一状态。用下面的真值表表示为:
/OE LE DX OX
1 X X Z
0 1 0 0
0 1 1 1
0 0 X Q0
Q0表示上一状态的输出;
如下图为74LS373的封装图:
以51单片机P0为例,P0^0~P0^7分别接D0-D7,可以进行如下编程:
实现要使冰箱有用:
OE = 0;
第一步:打开冰箱
LE = 1;
第二步:装入大象
P0 = data;
第三步:关闭冰箱
LE = 0;
OK,完成了,就是这么简单。
当然第一步和第二步的数据可以换一下。你可以想象,先做第二步,你使劲的把大象往冰箱里推,但是门没开,这之后,冰箱打开,大象就顺利推进去了,最后做第三步,这也是可以的。
那锁存到底有什么用呢?
就是为了实现端口的分时复用。