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