发表于:2004-08-14 12:16:00
楼主
AD卡的读写:
1)选通道控制字:通道0:10H,通道1:11H,通道2:12H,通道3:13H,通道地址:22CH
2)启动AD转换:(1)控制字1:30 H;地址:22BH(2)控制字1:10H;地址:228H(3)控制字1:00;地址:228H
3)延时50微秒
4)从AD卡读数据:(1)读12位低8位数据:地址:220H(2)读12位高4位数据:地址:221H(取该字节的低4位数据)
程序如下:
#include<conio.h>
#include<stdlib.h>
int adin(int ch)
{
int i,a,b ,data;
outportb(0x22C,ch);
outportb(0x22B,0x30);
outportb(0x228,0x10);
outportb(0x228,0x00);
for(i=0;i<650;i++); //延时50微秒
a=inportb(0x220);
b=inportb(0x221);
data=(b&0x0f)*256+a;
return(data);
}
main()
{
int ch;
float da[4];
while(!kbhit())
{
for(ch=0x10;ch<0x14;ch++)
{
da[ch]=adin(ch);
printf("da[ch=%d]=%f\n",ch-16,da[ch]);
}
}
}
这程序读得的结果根本就不对,请问问题出在那里,怎么解决,谢谢