解:假设延时程序可调用DELAY,时间足以保证一次A/D转换结束。
DATA SEGMENT
BUF0 DB 100(?)
BUF1 DB 100(?)
BUF2 DB 100(?)
BUF3 DB 100(?)
BUF4 DB 100(?)
BUF5 DB 100(?)
BUF6 DB 100(?)
BUF7 DB 100(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS,AX
MOV CX,100 设置采集次数
MOV SI,0000H
AA: MOV BX,OFFSET,BUF0
MOV DX,0260H
OUT DX,AL 启动IN0通道
CALL DELAY
IN AL,DX 读取IN0通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF1
OUT DX,AL 启动IN1通道
CALL DELAY
IN AL,DX 读取IN1通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF2
OUT DX,AL 启动IN2通道
CALL DELAY
IN AL,DX 读取IN2通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF3
OUT DX,AL 启动IN3通道
CALL DELAY
IN AL,DX 读取IN3通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF4
OUT DX,AL 启动IN4通道
CALL DELAY
IN AL,DX 读取IN4通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF5
OUT DX,AL 启动IN5通道
CALL DELAY
IN AL,DX 读取IN5通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF6
OUT DX,AL 启动IN6通道
CALL DELAY
IN AL,DX 读取IN6通道转换结果
MOV [BX+SI],AL 存结果
INC DX
MOV BX,OFFSET BUF7
OUT DX,AL 启动IN7通道
CALL DELAY
IN AL,DX 读取IN7通道转换结果
MOV [BX+SI],AL 存结果
INC SI
LOOP AA 采集次数未到循环
MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN
我刚好写完 完全可以显示正确的数值复制给你:
//初始化ADC12
P6SEL |= 0x01// 使能ADC通道
ADC12CTL0 = ADC12ON+SHT0_8+MSC// 打开ADC,设置采样时间
// ADC12CTL0|= REFON+REF2_5V;
// ADC12MCTL0|=SREF_1//选择内部参考电压源
ADC12CTL1 = SHP+CONSEQ_2// 使用采样定时器
ADC12IE = 0x01 // 使能ADC中断
ADC12CTL0 |= ENC// 使能转换
ADC12CTL0 |= ADC12SC// 开始转换
#pragma vector=ADC_VECTOR
__interrupt void conversion()
{
uint buffer[32]
static uint index=0
buffer[index++]=ADC12MEM0
if(index==32)
{
index=0
uchar i
unsigned long sum=0
for(i=0i<32i++)
sum+=buffer[i]
sum=sum/32
}
}
得到的sum就是平滑滤波得到的数值,
你想用他来干什么就看你的程序了。
首先进入编辑方式,按功能键PROG,在按软键OPRT,按菜单继续键(是软键最右边的小三角形)按软键EX-EDT,确认被复制的程序被选中并按软键COPY按软键ALL,在输入新的程序号并按INPUT键,按软键EXEC就可以了。1、首先打开“机床控制”面板的“参数化”界面,并确保将I/O路径设置为“4”. 2、设置方法:将写参数更改为1,将I/O通道参数更改为4,然后将写参数设置为0。 3、切换控制面板,返回主界面并打开DNC命令。 当面板上DNC旁边的指示灯亮起时,DNC控制就会打开。 4、单击动作面板中的“Prog”命令,选择软件磁盘面板中的左移和右移键5、调用“List”选项卡,然后选择“Operation-Device-M-F Card”以查看卡中的程序。 命令按钮在界面中.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)