答:
阁下要搞清楚锁存器是干吗的,锁存的是什么。
同时要明白 片外的数据存储器、程序存储器读写的原理、过程、时序关系,才能彻底搞明白这个问题。
你看看单片机教科书里关于数据存储器、程序存储器扩展的部分,就知道p0口的作用是传送地址和数据,有时候还要做其它的IO口用。那么,这些复杂的数据传递岂不乱套?这些就要锁存器把它们隔离开了。
一般来说,P0口进行数据存储器、程序存储器扩展,必须加锁存器。
p0口做IO口时,如果各个IO口在时序上不发生冲突,可以不加锁存器。如果有冲突,就要加。
参考答案:
http://z.baidu.com/question/89165972.html 用8255扩展IO,书上用了373锁存,但是我想可不可以这样:P0不锁存,而是用P2口的随便两个引脚直接连8255的地址引脚。这样P0口送出的数据就不需要锁存了,直接接8255的数据口了。小弟初学单片机,还望各位能不吝赐教。
完全可以。CS是片选,这个也要接在p2的一个引脚的,或者接地。看你电路设计了。
8255的D0--D7是数据线啊!这个接P0口。
这样可以的话,低八位地址(P0口)应该是?是不是随便给个0到255之间的数可以? DPTR包括了P0和P2的地址,既然8255地址可以由P2给出,那P0地址如何处理?
从你的这个问话来看,你对单片机的概念很模糊。片外的地址是16位,p2p0共同决定,缺一不可的。我刚才说的方法是把8255当做IO口扩展的,不是当片外数据存储器用的。p0口接8255的D0--D7。所以这个根本用不到DPTR。
假如你按照片外数据存储器扩展,就必须用74LS373了。8255的A1A0可以由74LS373接P0,在p0送地址第八位时选通A1A0.这时p2反而不重要了,因为不连在8255上也是可以的。