51单片机和AD转换器max197的接口 51的P0口与max197的数据口相连 51的P2.0经反相器与max197的/CS相连 (即ADCS)
程序
uchar CH0DataL,CH0DataH;
/* MAX197片外地址定义 */ #define adch0 XBYTE[0x0100]
sbit ADINT = P1^0; // MAX197的中断输出位 sbit HBEN = P1^1; // MAX197数据总线复用控制
main() { EA = 1; EX0 = 1; // 打开外部中断0 /* 无限循环,等待外部中断0启动模数转换 */ while(1); }
/* 外部中断0服务子程序 */ void int0svr(void) interrupt 0 using 1 { EX0 = 0; // 关闭外部中断0
/* 向MAX197的控制字寄存器写入控制字0x40;PD1=0,PD0=1:正常工作,内部时钟模式;ACQMOD=0:内部控制采集;RNG=0,BIP=0:0~5V测量范围;A2=A1=A0=0:测量通道为0号 */ adch0 = 0x40;
/* 查询MAX197的中断输出ADINT,检测是否完成了信号的一次模数转换 */ while (ADINT!=0) { //当转换完成时,先设置HBEN=0,即先读低位 HBEN = 0; }
CH0DataL = adch0;
// 设置HBEN=1,再读高位 HBEN = 1; CH0DataH = adch0; HBEN = 0; EX0 = 1; // 打开外部中断0 }
问题: 1、adch0 (即XBYTE[0x0100])= 0x40;写到P2.0口还是写道P0口的? 2、CH0DATAL=adch0;这个是把哪个口的数据赋到CH0DATAL里? 3、片选/cs要的低电平是通过谁给的? https://bbs.21ic.com/upfiles/img/20078/2007810231717870.jpg
https://bbs.21ic.com/upfiles/img/20078/2007810231434912.jpg
|