实验4、A/D转换实验

实验内容
基础部分:
1编写实验程序,将DAC单元中提供的0V~5V信号源作为ADC0809的模拟输入量,进行A/D转换,转换结果通过8位LED进行显示。
拓展部分:
2分别用延时、查询和中断三种方式实现本实验的实验内容。

代码
基础

采用下面的一种方式即可

延时

A8255 EQU 0600H
B8255 EQU 0602H
C8255 EQU 0604H
CON8255 EQU 0606H  

A0809 EQU 0640H
B0809 EQU 0642H
 
CODE SEGMENT
    ASSUME CS:CODE
 
START: 
    MOV DX, CON8255  
    MOV AL, 90H    ;A--IN,B--OUT
    OUT DX, AL     
 
MI:
	MOV DX,B0809
    MOV AL,01H
    OUT DX,AL      ;启动1通道
	
    MOV DX, A0809   ;启动A/D采样
    OUT DX, AL
 
    CALL DELAY
    IN AL, DX      ;读A/D采样结果
 
    MOV DX, B8255
    OUT DX,AL      ;送入8255B口
    JMP MI
 
DELAY:             
    PUSH CX        
    PUSH AX
    MOV CX,0FFFFH;
L1: LOOP L1    
    POP AX
    POP CX 
    RET
 
CODE ENDS 
    END START

查询

A8255 EQU 0600H
B8255 EQU 0602H
C8255 EQU 0604H
CON8255 EQU 0606H  
;0809使用IOY1片选信号
A0809 EQU 0640H
B0809 EQU 0642H

CODE SEGMENT
    ASSUME CS:CODE
START:	  
    MOV DX, CON8255  
    MOV AL, 90H      ;A--IN,B--OUT
    OUT DX, AL
 
X3: 
	MOV DX,B0809
    MOV AL,01H
    OUT DX,AL      ;启动1通道	
    MOV DX, A0809  
    OUT DX, AL     ;启动AD采样
X1: 
    MOV DX,A8255
    IN AL,DX       ;8255A口读入EOC状态
    TEST AL,80H    ;如果是不是高电平,表示未完成转换
    JNZ X1         
X2:
    MOV DX,A8255
    IN AL,DX       ;8255A口读入EOC状态   
    TEST AL,80H    
    JZ X2          ;如果是高电平,表示装换未完成
 
    MOV DX,A0809
    IN AL,DX       ;从ADC0809读入转换完成的数据
    MOV DX, B8255
    OUT DX,AL      ;8255B口输出转换完成的数据
    JMP X3         ;循环转换
CODE ENDS 
    END START

中断

A8255 EQU 0600H
B8255 EQU 0602H
C8255 EQU 0604H
CON8255 EQU 0606H  

A0809 EQU 0640H
B0809 EQU 0642H

CODE SEGMENT
    ASSUME CS:CODE
START: 
    MOV DX, CON8255
    MOV AL, 90H
    OUT DX, AL
    ;设置中断向量
    MOV AX, OFFSET MIR6 ;ADC0809的EOC引脚连接MIR6
    MOV SI, 0038H
    MOV [SI], AX
    MOV AX,CS
    MOV SI,003AH
    MOV [SI], AX
    ;设置ICW1~ICW4和OCW1
    CLI
    MOV AL, 11H
    OUT 20H, AL
    MOV AL, 08H
    OUT 21H, AL
    MOV AL,04H
    OUT 21H, AL
    MOV AL, 07H
    OUT 21H, AL
    MOV AL, 2FH
    OUT 21H, AL
    STI
AA1:
    CLI            ;关中断
	MOV DX,B0809
    MOV AL,01H
    OUT DX,AL      ;启动1通道	
    MOV DX, A0809  ;启动AD采样
    OUT DX, AL
    CALL DELAY     ;延时一小段时间之后开中断,保证每一次AD转换中断只响应一次
    STI
    JMP AA1
    
MIR6:
    ;STI
    MOV DX,A0809   ;读入AD转换之后的值
    IN AL,DX
    MOV DX, B8255  ;8255B口输出
    OUT DX, AL
    IRET
    
DELAY:
    PUSH CX
    PUSH AX
    MOV CX,0FFFH
L1:	LOOP L1
    POP AX
    POP CX
    RET
 
CODE ENDS
    END START
  • 18
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值