急!!!!!!!!!!51单片机与ADC0809相连的问题

51单片机与ADC0809相连时,A,B,C三个引脚能直接P2口相连吗,然后D0到D7也能直接接到单片机的P2口吗?

如果你没有其他外设,也没有扩展外部RAM,可以用P2接A,B,C引脚,
如果有外设或外部RAM,还要用P2口,就要保证不和他们冲突
标准的办法是将A,B,C接到地址译码器之后,给予8个地址
变通的办法是用P1口接A,B,C这样也比用P2口稳定
至于D0-D7应当接到P0口,用WR,RD读写,
极端情况,用P2口连接D0-D7时,不能再用P2口接A,B,C,因为ABC是通道选择,和数据线连在一起,会乱套的。追问

74ls373是地址锁存器吗

追答

继续回答:
1。74LS373是地址锁存器,因51P0口兼地址低8位、数据线8、指令的传输,不是像P2口专用于地址高8位,所以在输出地址低8位——ALE有效时,用373锁存住,地址就不会乱套了。
2。据我的记忆(目前手头没有0809的资料),0809中的“地址译码”仅仅是对A,B,C端的不同组合“译”出8种状态,控制8个输入的哪一个与AD转换相接。
而单片机的“地址译码器”是将整个0809作为一个设备,分配一个地址,通过与这个地址交换信息取得AD转换后的结果。两者工作范围不同。

一个试例:ABC接到P1.0-P1.2,ST接P1.3,EOC接P1.4,EO接P1.5
程序开始,设好ABC,(此例选3#011),ST=1,EOC=1,E0=0,(另外P1.6=P1.7=1)
MOV P1,#11011011B
CLR P1.3 ;开始转换
JNB $ ;等转换结束
SETB P1.5 ;允许输出结果
MOVX A,@R0 ;因无外设,也无外RAM,故读任意地址均为AD转换结果
SETB P1.3 ;关闭转换,
CLR P1.5 ;关闭输出
; 。。。。。。将ACC中结果送“有关部门”处理

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-20
可以的,难道你考虑到的是I/O的驱动能力的问题?我记得51除了P0口没有内部上拉电阻,其他都有吧。还有数据口,也是直连单片机的,没有问题。
第2个回答  2012-11-21
应该不能吧。ABC是选择通道的,而P2口传输的数据是在不断变化的
相似回答