adc0809程序 求一个八路通道的分时转换汇编程序 !!!汇编语言编写的!!

2024-12-24 17:32:36
推荐回答(1个)
回答1:

8086的,设ADC0809的8个端口地址为260H~267H,试编制采用延时等待的方式采集数据的程序段(包括数据段定义)。要求对8路通道进行循环采集,各采集100个数据分别存入8个数据区中。
解:假设延时程序可调用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