Hello everyone!今天看了一个ad转换的程序,有几个不理解的地方,希望大家能给我解释下。
1. 里面有个#define AD XBYTE [0x7FF8]这样的ad转换的地址定义(查资料得知是P0和P2口的作为地址线的原因),我把它改成了其他的地址,有的就行有的就不行了,这是怎么回事?ad转换器作为一个外部存储器的地址是人为定义的吗?
2. 在ad转换结束之后,外部数据输入到P0口中,程序中是将刚刚定义的ad转换器的地址里面的值直接赋值给了data(程序中定义的一个char型变量),然后直接送入数码管显示,那为什么直接data=P0就不行呢?(我的意思不知道大家可能理解)
(注:图片引用他处)
我还想问下:1.所有连接在地址总线上的器件,都必须有一个…那这样的话,刚刚定义的ad的地址是0x7ff8,而单片机片内的ram就00h-ffh,而仿真图中也没有片外的ram,那0x7ff8的地址在什么位置呢? 2.我本身是这样想的(上面有仿真),当ad转换之后,转换的结果直接会在out端口上然后也就直接传到了P0口,所以我讲就是data=P0,这样的想法估计是有问题的?谢谢!
追答1、/RD和P2.7配合,只有两个信号同时为低时,74LS02或非门输出高电平,ADC器件OE端高电平有效,才能完成对器件读操作,P2.7为低电平的情况是使用0000H--->7FFFH地址区间,上图中ADC的8路AD转换器,是通过/ALE和/WR经过74LS02或非门输出高电平(器件ALE高电平有效),完成对器件8路转换器地址输入的,它由低3位地址线决定选择哪一路。(xxx0h-->xxx7h或者xxx8h--->xxxfh都可以)。
所以用0000H--->7FFFH中任意一个地址都可以,当你使用MOVX A,@DPTR 指令的时,P2.7输出低电平。不能用8000H--->FFFFH地址。
为了不影响显示效果,在操作ADC0808时,根据LED的驱动电平,应该P2口低4位给定相反电平,即不显示,y0xxH或者yFxxH。y选择8以下。
2、因为还需要对ADC0808输入地址,所以不能把ADC0808的OE端直接连接高电平。
谢谢你详细的回答,我大致了解了!谢谢!