利用Delphi 3.0开发微机数据采集与处理软件系统
置1。
·写:向该寄存器写任何值清除中断请求。在实际中断服务程序中,在开中断前应先清中断,再利用控制寄存器(基址+9)开中断。
⑾控制寄存器(基址+9)
·0~1位:控制启动A/D的触发源。
·2位:为1,DMA方式有效;为0,DMA方式无效。
·4~6位:选择中断级别。(PC机8259中断控制器管理的中断中,中断2系统未用,一般选2级中断)
⑿定时器控制寄存器(基址+10,写)
·0位:若为1,表示AX5412板上8254计数器中由计数器1和计数器2串联成的定时器触发起作用;否则,不起作用。
⒀增益控制寄存器(基址+11,读/写):低4位组合表示增益。
㈡、编程实例
以下程序均以AX5412为例。
1、软件启动,查询管理
·A/D轮换:
设有一模拟输入信号单端输入,输入10通道,现对其进行A/D转换,输入计算机。
{...}
var
constBasea:Word=$300;//AX5412默认基地址为300H
{...}
procedureAdc:Integer;//A/D转换
var
state:Byte;//读取A/D转换完成位
al:Byte;//A/D转换低4位
ah:Byte;//A/D转换高8位
adval:Integer;//A/D转换结果
begin
withmyPortdo
begin
Port[Basea+2]:=$AAH;//10通道单通道连续采样,170D=AAH
Port[Basea+11]:=0;//增益为1
Port[Basea+9]:=0;//软件启动A/D转换
Port[Basea]:=0;//开始A/D转换
repeat
state:=Port[Basea+8];
untilband$80=$80;//检测A/D转换完成情况
al:=Port[Basea];//读A/D转换值低4位
ah:=Port[Basea+1];//读A/D转换值高8位
adval:=(al/16)or(ah*16);//计算12位A/D转换结果
Adc:=adval;//返回值
end;
end;
·D/A转换:
设将一模拟控制电压Volt从D/A1通道输出,控制某一对象。
说明:AX5412数字量输出满量程(即12位均为1时,数字值为4095D)时输出的模拟电压为5伏。
procedureDac(Volt:Float);//D/A转换
var
al:Integ 《利用Delphi 3.0开发微机数据采集与处理软件系统(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/140500.html
·写:向该寄存器写任何值清除中断请求。在实际中断服务程序中,在开中断前应先清中断,再利用控制寄存器(基址+9)开中断。
⑾控制寄存器(基址+9)
·0~1位:控制启动A/D的触发源。
·2位:为1,DMA方式有效;为0,DMA方式无效。
·4~6位:选择中断级别。(PC机8259中断控制器管理的中断中,中断2系统未用,一般选2级中断)
⑿定时器控制寄存器(基址+10,写)
·0位:若为1,表示AX5412板上8254计数器中由计数器1和计数器2串联成的定时器触发起作用;否则,不起作用。
⒀增益控制寄存器(基址+11,读/写):低4位组合表示增益。
㈡、编程实例
以下程序均以AX5412为例。
1、软件启动,查询管理
·A/D轮换:
设有一模拟输入信号单端输入,输入10通道,现对其进行A/D转换,输入计算机。
{...}
var
constBasea:Word=$300;//AX5412默认基地址为300H
{...}
procedureAdc:Integer;//A/D转换
var
state:Byte;//读取A/D转换完成位
al:Byte;//A/D转换低4位
ah:Byte;//A/D转换高8位
adval:Integer;//A/D转换结果
begin
withmyPortdo
begin
Port[Basea+2]:=$AAH;//10通道单通道连续采样,170D=AAH
Port[Basea+11]:=0;//增益为1
Port[Basea+9]:=0;//软件启动A/D转换
Port[Basea]:=0;//开始A/D转换
repeat
state:=Port[Basea+8];
untilband$80=$80;//检测A/D转换完成情况
al:=Port[Basea];//读A/D转换值低4位
ah:=Port[Basea+1];//读A/D转换值高8位
adval:=(al/16)or(ah*16);//计算12位A/D转换结果
Adc:=adval;//返回值
end;
end;
·D/A转换:
设将一模拟控制电压Volt从D/A1通道输出,控制某一对象。
说明:AX5412数字量输出满量程(即12位均为1时,数字值为4095D)时输出的模拟电压为5伏。
procedureDac(Volt:Float);//D/A转换
var
al:Integ 《利用Delphi 3.0开发微机数据采集与处理软件系统(第4页)》