在调试一个AD转换电路,系统是用单片机外接MAX197电路实现的,89C51出来接74LS373地址锁存和MAX197,硬件连接如附件所示,有所不同的是MAX197的SHDN端接高电平,REF和REFADJ分别通过0.47uF,0.01uF的电容接地. 连接电路后想看转换结果是否正确就将转换的高四位通过串口输出,用串口调试程序观察发现无论输入的模拟电压是多少,结果总是0xFF.请高手指教.程序如下: #include <reg52.h> // 引用标准库的头文件 #include <absacc.h>
#define uchar unsigned char
uchar CH0DataL,CH0DataH,a;
/* MAX197片外地址定义 */
sbit ADINT = P3^2; // MAX197的中断输出位 sbit HBEN = P0^0; // MAX197数据总线复用控制 sbit cs=P2^7; #define INT0H XBYTE[0x7FFF] #define INT0L XBYTE[0x7FFE]
void main() { uchar *ad_adrL; uchar *ad_adrH; ad_adrL=&INT0L; ad_adrH=&INT0H; TMOD=0x20; // 设置波特率为9600的定时器1方式和初值 TL1=0xfd; TH1=0xfd; SCON=0xd8; //串口方式 PCON=0x00; TR1=1; EA = 1; //EX0 = 1; while(1) { *ad_adrH= 0x40; //给MAX写状态字 while(ADINT!=0) { HBEN = 1;} a =*ad_adrH ES=1; SBUF=a; //通过串口发送数据低八位 while(TI==0); TI=0; ES=0; } } 相关链接:https://bbs.21ic.com/upfiles/img/200710/2007109193215407.pdf |