1. 实验目的
- 学习理解模数信号转换的基本原理。
- 掌握模数转换芯片ADC0809的使用方法。
2. 实验内容
- 题目:编写试验程序,将DAC单元中提供的0V~5V信号源作为ADC0809的模拟输入量,进行A/D转换,转换结果通过8位LED进行显示。
3. 实验扩展
- 分别使用延时等待,查询和中断三种方式,实现本实验的实验内容。
4. 延时等待A/D转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, 0686H ;8255控制端口地址,选取的IOY2端口 MOV AL, 90H ;8255控制字,90H=10010000B,表示A口输入,B口输出 OUT DX, AL ;将上述控制字写入控制端口 MI: MOV DX, 640H ;启动A/D采样 OUT DX, AL CALL DELAY IN AL, DX ;读A/D采样结果 MOV DX, 0682H OUT DX,AL JMP MI DELAY: ;延时程序 PUSH CX ;保护现场 PUSH AX MOV CX,0FFFFH; L1:LOOP L1 POP AX POP CX RET CODE ENDS END START |
5. 查询方式A/D转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | CODE SEGMENT ASSUME CS:CODE START: MOV DX, 0686H ;8255初始化,同上 MOV AL, 90H OUT DX, AL X3: MOV DX, 0640H ;启动AD采样 OUT DX, AL X1: MOV DX,0680H IN AL,DX ;从8255A口读入EOC状态 TEST AL,80H ;检测EOC是否为高电平 JNZ X1 ;如果不是低电平,表示未开始转换,跳转继续查询 X2: MOV DX,0680H IN AL,DX ;从8255A口读入EOC状态 TEST AL,80H ;检测EOC是否为高电平 JZ X2 ;如果是高电平,表示装换完成 MOV DX,0640H IN AL,DX ;从ADC0809读入转换完成的数据 MOV DX, 0682H OUT DX,AL ;从8255B口输出转换完成的数据 JMP X3 ;循环转换 ;此处对EOC状态的判断详见《微型计算机原理与接口技术》P2274图7.4.8 CODE ENDS END START |
6. 中断方式A/D转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | CODE SEGMENT ASSUME CS:CODE START: MOV AX, 0000H MOV DS, AX MOV DX, 0686H 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 CLI MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL,04H OUT 21H, AL MOV AL, 05H OUT 21H, AL MOV AL, 10111111B OUT 21H, AL STI ;8255与8259初始化,详见实验三 AA1: CLI ;关闭中断 MOV DX, 0640H ;启动AD采样 OUT DX, AL CALL DELAY ;延时一小段时间之后开中断,保证每一次AD转换中断只响应一次 STI JMP AA1 ;此处对中断的操作以及延时的调用原因详见《微型计算机原理与接口技术》P277 MIR6: STI MOV DX,0640H ;读入AD转换之后的值 IN AL,DX MOV DX, 0682H ;从8255B口输出 OUT DX, AL MOV AL, 20H OUT 20H, AL IRET DELAY: PUSH CX PUSH AX MOV CX,0FFFH L1: LOOP L1 POP AX POP CX RET CODE ENDS END START |
0809的abc的接线怎么连啊
😂😂同问
嗯,有道理
啦啦
大神接线怎么办
8255和0809共用D0-D7, eoc要么接8255A要么接mir6
感谢大神。。ps.这个实验的扩展是不是写错了
写错了……马上改
改了吗
改了