发表于:2004/9/18 17:26:00
#0楼
PC104嵌入式系统主板,AD1674芯片,用以下程序段在TC下测试A/D采样输出值:
#define SELECTPORT 0xF700 选通道号地址
#define ADPORT 0xF400 启动通道地址
main()
{ int ch,k,dly=3000;
int dn,dl,dh;
clrscr();
do{
printf("Please input ch(ch=0---3)");
scanf("%d",&ch);
ch=ch&0xf;
if(ch==0) break;
outportb(SELECTPORT,ch); /*写通道号*/
for(k=0;k<dly;k++);
outportb(ADPORT,0x00); /*启动AD转换*/
for(k=0;K<dly;k++);
dl=inport(ADPORT+1); /*读低8位*/
for(k=0;k<dly;k++);
dh=inportb(ADPORT+2); /*读高4位*/
dn=(dh&15)*256+dl;
printf("CH=%d ouput value=%x",ch,dn); 程序运行后一直显示value=fffff,根本
}while(!kbhit()); 无变化
}
程序应该是没有什么问题吧,系统用的是DOS6.22操作系统,硬件测试AD通道已经选通了工作了,应该是与F400相邻的F401和F402输出AD值,可是怎么没有变化???好些地址都已经试过,没有反应!请高手回答帮助分析一下,谢谢!
#define SELECTPORT 0xF700 选通道号地址
#define ADPORT 0xF400 启动通道地址
main()
{ int ch,k,dly=3000;
int dn,dl,dh;
clrscr();
do{
printf("Please input ch(ch=0---3)");
scanf("%d",&ch);
ch=ch&0xf;
if(ch==0) break;
outportb(SELECTPORT,ch); /*写通道号*/
for(k=0;k<dly;k++);
outportb(ADPORT,0x00); /*启动AD转换*/
for(k=0;K<dly;k++);
dl=inport(ADPORT+1); /*读低8位*/
for(k=0;k<dly;k++);
dh=inportb(ADPORT+2); /*读高4位*/
dn=(dh&15)*256+dl;
printf("CH=%d ouput value=%x",ch,dn); 程序运行后一直显示value=fffff,根本
}while(!kbhit()); 无变化
}
程序应该是没有什么问题吧,系统用的是DOS6.22操作系统,硬件测试AD通道已经选通了工作了,应该是与F400相邻的F401和F402输出AD值,可是怎么没有变化???好些地址都已经试过,没有反应!请高手回答帮助分析一下,谢谢!