A/D转换实验

A/D转换实验
一、实验内容:
编辑、汇编、链接、调试汇编程序。熟练掌握中断法程序的编程
链接传感器与ADC0809模拟输入端,运行程序,用A/D转换实现数据采集
用万用表检测传感器模拟信号值,观测转换数据值,画出A/D转换曲线,确定实测分辨率与理论分辨率的误差,分析相对误差值。
转换结束信号EOC连接LED,检测EOC信号在AD转换过程的状态变化。
二、汇编源代码
DATA SEGMENT
IO0809A EQU 298H
TS1 DB ‘START.’,0DH,0AH,’$’
TS2 DB ‘END.’,0DH,0AH,‘S’
BUF DW 300 DUP(?)
DATA ENDS
STACK SEGMENT
STA DW 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
LEA DX,TS1
MOV AH,9
INT 21H
MOV CX,300 //设置采样数据
CONV:MOV DX,IO0809A //选择模拟信号输入端口
MOV AL,0
OUT DX,AL
CALL ADINT
MOV AX,SI
LEA DI,BUF
MOV [DI],AL
AND AL,0F0H
PUSH CX
MOV CL,4
SHR AL,CL
POP CX
ADD AL,30H
CMP AL,39H
JBE DISPL
ADD AL,07H
DISPL:MOV DL,AL
MOV AH,2
INT 21H
MOV AL,[DI]
INC DI
AND AL,0FH
ADD AL,30H
CMP AL,39H
JBE DISPH
ADD AL,07H
DISPH:
MOV DL,AL
MOV AH,2
INT 21H
MOV DL,20H
MOV AH,2
INT 21H
INT 21H
LOOP CONV
LEA DX,TS2
MOV AH,9
MOV AH,4CH
INT 21H
ADINT PROC NEAR
PUSH AX
PUSH BX
PUSH CX
MOV CX,0FFFFH
DELAY:MOV BX,2FH
DELAY1:DEC BX
CMP BX,0
JNZ DELAY1
LOOP DELAY
MOV DX,IO0809A
IN AL,DX
MOV SI,AX
POP CX
POP BX
POP AX
RET
ADINT ENDP
CODE ENDS
END START

三、流程图

三、实验结果
1.运行结果:

2.数据计算:
左侧为实际实验测量数据,右侧为根据公式计算数据:
其中:
x平均值:2.5 y平均值:130.9091
lxx:27.5 lxy:1395
a=0.9432 b=50.73
y=50.73x+0.9432

根据实验所得散点图及表达式:

设计实验8259中断控制
一、实验目的
1.学习8086/8088 CPU中断系统的知识。
2.学习8259中断控制器的使用。

二、 实验内容

  1. 编写程序,使 8255 的 A 口控制 LED 灯。CPU 执行主程序时四个绿灯亮。用脉冲信号作为 8259 的 IR3 的输入信号,向 CPU 请求中断。CPU 在中断服务程序中熄灭绿灯,并使 4 个红灯亮。中断服务程序结束,又返回主程序,再使绿灯亮。
  2. 编写程序,使 8255 的 A 口控制 LED 灯。CPU 执行主程序时四个绿灯亮。用脉冲信号作为 8259 的 IR3 的输入信号,向 CPU 请求中断。CPU 在中断服务程序中每中断一次,使 4 个红色 LED 灯中每次只亮一个灯,并随每一次中断逐次移动一个灯的位置,中断服务程序结束,又返回主程序,再使绿灯亮。

三、实验区域电路连接图

(1) 8259的INT连8088的INTR(Xl5);
(2) 8259的INTA连8088的INTA(Xl2);
(3) “”插孔和8259的3号中断IR3插孔相连;(单脉冲与时钟单元);
(4)8259的CS端接EX1(60H);
(5)连JX4→JX17。
(6)IOWR→IOWR;
(7)IORD→IORD;

四、流程图
1.

五、实验步骤
(1)8259 的 INT 连 8088 的 INTR(Xl5);
(2)8259 的 INTA 连 8088 的 INTA(Xl2);
(3)单脉冲插孔和 8259 的 3 号中断 IR3 插孔相连;
(单脉冲与时钟单元);
(4)8259 的 CS 端接 EX1(60H);
(5)连 JX4→JX17。
(6)IOWR→IOWR;
(7)IORD→IORD;
(8)A0→A0;
(9) PA0…PA3→L2,L6,L10,L14; PA4…PA7→L3,L7,L11,L15。

六、实验程序
1.
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0060H
INTPORT2 EQU 0061H
INTQ3 EQU INTREEUP3
INTCNT DB ? ORG 1200H
START:CLD
MOV DX,0FF2BH
MOV AL,80H ;设置8255方式字:A口输出
OUT DX,AL
CALL WRINTVER ;WRITE INTRRUPT
MOV AL,13H ;ICW1=00010011B,边沿触发、单8259、需ICW4
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H ;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOI
OUT DX,AL
MOV AL,0F7H ;OCW1=11110111B
OUT DX,AL
MOV INTCNT,01H ;延时
STI
WATING:
MOV DX,0FF28H;主程序绿灯亮(低四位为0则绿灯亮,高四位为1故红灯灭) MOV AL,0F0H
OUT DX,AL
JMP WATING
WRINTVER:
MOV AX,0H
MOV ES,AX
MOV DI,002CH ;中断向量地址2CH=0BH4
LEA AX,INTQ3
STOSW ;送偏移地址
MOV AX,0000h
STOSW ;送段地址
RET
INTREEUP3:CLI ;中断服务子程序开始
PUSH DX
PUSH AX
MOV DX,0FF28H ;中断服务子程序执行红灯亮
MOV AL,0FH ;低四位为1则绿灯灭,高四位为0故红灯亮
OUT DX,AL
CALL DELAY1S
MOV AL,20H ;OCW2=00100000B非特殊EOI命令,结束命令,用于完全嵌套方式的中断结束
MOV DX,INTPORT1
OUT DX,AL STI ;开系统中断
POP AX
POP DX
IRET
DELAY1S:
MOV CX,0FFFFH
MOV BX,5
L:
DEC CX
JNZ L
DEC BX
JNZ L
RET
END START
2.
CODE SEGMENT
ASSUME CS:CODE
ORG 1200H
INTCNT DB 0EFH ;全局变量INTCNT=11101111B
START:
MOV DX,0FF2BH
MOV AL,80H ;设置8255方式字:A口出
OUT DX,AL
MOV AL,0FFH
MOV DX,0FF28H
OUT DX,AL
CALL Y2
MOV AL,13H; ICW1=00010011B,边沿触发、单8259、需ICW4
MOV DX,60H
OUT DX,AL
MOV AL,08H ; ICW2=00001000B,IR3(ICW2低两位自动跳变为11,即00001011B)进入则中断号=0BH
MOV DX,61H
OUT DX,AL
MOV AL,09H ;ICW4=00001001B,非特殊全嵌套方式、缓冲/从、正常EOI
OUT DX,AL
MOV AL,0F7H;OCW1=11110111B
OUT DX,AL
MOV INTCNT,0EFH
STI
Y1:
MOV DX,0FF28H ;主程序绿灯亮(低四位为0则绿灯亮,高四位为1故红灯灭)MOV AL,0F0H ;D7…D4=1111,D3…D0=0000
OUT DX,AL
JMP Y1 ;循环
Y2:
MOV AX,0H
MOV ES,AX
MOV DI,002CH ;中断向量地址2CH=0BH
4
LEA AX,INTREEUP3
STOSW ;送偏移地址
MOV AX,0000H
STOSW ;送段地址
RET
INTREEUP3: CLI
PUSH AX ;保护现场
PUSH DX
PUSH CX
MOV DX,0FF28H ;中断服务子程序执行红灯亮
MOV AL,INTCNT OUT DX,AL
ROL INTCNT,1 ;循环左移一位
JC Y4
MOV INTCNT,0EFH
Y4:
MOV AX,10H ;延时服务程序
INTRE0:
MOV CX,10000
LOOP $ DEC AX ;AX=AX-1
JNZ INTRE0
INTER2: ;设置OCW2
MOV AL,20H ;D5=EOI=1,发送EOI指令结束中断
MOV DX,60H
OUT DX,AL
POP CX ;现场恢复
POP DX
POP AX
STI ;开系统中断
IRET
CODE ENDS
END START

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值