“顺问一下单片机往锁存器输出的地址和数据有什么分别,不都是二进制数吗”
虽然都是进制数据,但是意义不一样,而且位置不一样,作为地址时,是作用于芯片做大的地址端的,作为数据时,是作用在数据端的,这里有个时序的问题,就像同一个男教师,对儿子和对学生来说,意义不一样,面对不同的人,在不同的时间,这个男人的角色就不一样。
这个涉及到数电知识,你是大一,估计没学到数电,等你学了,你就明白了。
我简单的讲一下,要想深入了解,你要看数电课本。
51单片机与别的单片机不一样,他的数据端口和地址端碧唯口的低8位是同一个端口,都是P0口,那么,如何区分P0此时是数据还是地址?方法就是引入一个锁存器。
比如说,我向地址 是 0xEE55的地址里写入一个数据 “0xAA"
步骤过程是这个样子的:
1 ALE控制锁存器,允许锁存器跟踪
2 P2和P0口联合输出地址0xEE55,其中P2输出0xEE,P0输出0x55
3 ALE电平翻转,禁止锁存器跟踪,即此时,锁存器的输出端不在发生任何变化,所以,纯慧竖芯片地址不变,依旧是“0xEE55"
4 P0口输出数据 "0xAA",此时,芯片的数据端就出现"0xAA",
经过以上步骤,0xAA就被存入到地址0xEE55里去了。
以上过程是单片机自动进行的,不用程序特意干扰,如果执行:
unsigned char xdata *p = (unsigned char xdata *)0xEE55
*p = 0xAA
单片机自动进行以上4步骤的过程,ALE,P0,P2口都自动变化。
锁存器一般是指单片机外边的,是外接的芯片。从这个电路看,P0控制数码管的段、P2控制数码管的位。
P0、P2是单片机内部的特殊功能寄存器,能够保存数据。
也许有人称呼它们是“片内团弯纳锁存器”?
这个电路,在程序控制下,能够正常的动态显示;
但是从电子技术的理论来说,闹孝这个电路是塌没不合理的,在LED不发光的时候,耗电很大,甚至远远大于LED发光时的电流。
------------------------
楼主补充的程序,和这幅电路图,是不配套的。
------------------------
锁存 和 输出,是使用片内的P0和P2;
但是,P0~P3,不叫锁存器,叫做输出接口,是“特殊功能寄存器”中的四个。
------------------------
按照楼主补充的程序,需要外接两块芯片73LS373,它们才是锁存器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)