地址高8位是P2口,0x7F 地址低8位是P0口,0xF8 因为P2.7控制读写端口WR、RD,0的时候选中芯片,因此必须P2.7必须是0, 因为P0.0、P0.1、P0.2连接的是ADC0809的地址端口ADDA、ADDB、ADDC,当译码选中IN0通道的时候是000 而其他引脚无用,默认是1,因此结果就是 P2 P0=0 111 1111 1111 1 000(0x7FF8)
3.2、 示例采用查询方式
3.2.1、电路原理图
查询方式多了一个译码器。
3.2.2、代码
#include <reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar data ADCDat[8] _at_ 0x30;
uchar i = 0;
uint ADC = 0x7ff8;
sbit EOC = P3^3;
void ADC_Read()
{
ADCDat[i] = XBYTE[ADC] ;
ADC++;
i++;
XBYTE[ADC] = i;
if(i==8)
{
i = 0;
ADC = 0x7f00;
XBYTE[ADC] = i;
}
}
main()
{
XBYTE[ADC] = 0x00;
while(1)
{
if(EOC==1)
{
ADC_Read();
}
P1 = ADCDat[0];
}
}
3.2.3 、效果图
4.多路扫描
void main(){
IT1=1;
IP=0x04;
EA=1;
while(1){
i=0;
XBYTE[0x7ff8+i]=i;
EX=1;
while(EX1!=0);
for(i=0;i<8;i++) disp(i);
void int1() interrupt 2(
a[i]=XBYTE[0x7ff8+i];
i++;
if(i==8) EX1=0;
XBYTE[0x7ff8+i]=i;
5.结束
那些我难以启齿的,不作声响的,暗自消化的各种情绪,才是我真正的生活。 ??? – 德卡先生
本文参考链接:https://blog.csdn.net/weixin_45488643/article/details/107093201
|