保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

PC/104模块Diamond-MM-AT的原理与应用


下面是以PC/104作处理器和Diamond-MM-AT模块进行组合,以对检测的模拟量信号进行A/D转换的读写程序及对各控制寄存器的配置方法。笔者已在实践中对该程序进行了测试,并已成

功运用到某测试工程设计中。

#define Base 0x300

Main Void{

union ?{ unsigned int m; unsigned char n[2];}T;

int dat[3000];?

int i, cd;

int freq=2000;  // 设定采样频率为2kHz;

outportb(Base+9, 0x83); // 允许中断,由计数器触发;

outportb(Base+10, 0x08);? // 计数器1产生1MHz方波

outportb(Base+11, 0x05);? // A/D输入范围为0~5V

T.m=(int)(500000/ freq); // 0.5MHz/Freq求写入记数器值;

outportb(Base+15,0x54); // 设定计数器1读/写低字节;

outportb(Base+13,0x01);? // 向计数器1写低字节(二分频);

outportb(Base+15,0xb4);? // 设定计数器2先读/写低字节,再读/写高字节;

outportb(Base+14,T.n[0]);? // 向计数器2写低字节;

outportb(Base+14,T.n[1]);??// 向计数器2写高字节;

outportb(Base+2,0xcc);   // 设定测取通道为C通道(即第12通道);

for(i=0;i<3000;i++)  // 循环采集3000个数据;

{

outportb(Base+1,0xff);? // 清除FIFO;

outportb(?Base+8,0xff); // 设定中断寄存器8,等计数器触发;

while((inportb(Base+8)&0x10)==0x00);   // 等待A/D转换结束;

cd=inportb(Base+0))// 读取低八位数据;

cd=cd/16;    // 数据右移四位,除去右四位的通道标志;

dat[i]=inportb(Base+1); // 读取高八位数据;

dat[i]=dat[i]*16; // 高八位数据左移四位;

dat[i]=dat[i]+cd;  // 高八位与低四位相加即得A/D转换结果12位数据;

}

……

《PC/104模块Diamond-MM-AT的原理与应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/153670.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。