ToC
实验内容
将 DAC
单元旋钮提供的 0-5V
信号源作为 ADC 0809
的输入。
旋转旋钮,通过 LED
显示单元的小灯显示 A/D
转换的结果。
实验接线
XD0-XD7
接 A/D
转换单元的 D0-D7
和 8255
的 D0-D7
,#IOW
和 #IOR
需要同时与 A/D
转换单元和 8266
连接。
A/D
转换单元的 CS
与 IOY1
连接,8255
的 CS
与 IOY0
连接。ABC
接地(GND
)。如下图所示:
![晋西北都乱成了一锅粥](https://static.mmf.moe/wp/2020/10/IMG_20201005_141753.jpg)
代码
1;; ADC0809 IOY02;; BASE OFFSET: 0600H3A0809 EQU 0600H4B0809 EQU 0602H5
6;; 8255 IOY17;; BASE OFFSET: 0640H8A8255 EQU 0640H9B8255 EQU 0642H10C8255 EQU 0644H11CON8255 EQU 0646H12
13CODE SEGMENT14ASSUME CS:CODE15
16START:17 MOV DX, CON825518 MOV AL, 90H ;; A IN, B OUT19 OUT DX, AL20
21LL:22 MOV DX, A080923 OUT DX, AL24
25 CALL DELAY26 IN AL, DX27
28 MOV DX, B8255 ;; OUTPUT TO 8255B29 OUT DX, AL30 JMP LL31
32 MOV AX, 4C00H33 INT 21H34
35DELAY PROC NEAR36 MOV CX, 0FFFFH37 LOOP $38 RET39DELAY ENDP40
41CODE ENDS42END START
选做实验-查询方式
实验过程中使用的是延时等待方式。要使用查询方式,需要将 A/D
转换单元的 EOC
与 8255
的 PA7
相连。
根据 EOC
的时序,我们知道:在 A/D
转换开始前,EOC
为高电平;在 A/D
转换进行过程中,EOC
为低电平。当 EOC
重新回到高电平时,表示转换完成。由此编写代码即可。
接线
增加了一条 EOC
的接线。
![8255 下方的黄线,因为不知道该怎么接所以反过来了(](https://static.mmf.moe/wp/2020/10/IMG_20201005_143208.jpg)
代码
1;; ADC0809 IOY02;; BASE OFFSET: 0600H3A0809 EQU 0600H4B0809 EQU 0602H5
6;; 8255 IOY17;; BASE OFFSET: 0640H8A8255 EQU 0640H9B8255 EQU 0642H10C8255 EQU 0644H11CON8255 EQU 0646H12
13CODE SEGMENT14ASSUME CS:CODE15
16START:17 MOV DX, CON825518 MOV AL, 90H ;; A IN, B OUT19 OUT DX, AL20
21LL:22 MOV DX, A080923 OUT DX, AL ;; START ADC080924
25WAIT_AD_START:26 MOV DX, A825527 IN AL, DX28 TEST AL, 80H29 JNZ WAIT_AD_START30
31WAIT_AD2_FINISH:32 MOV DX, A825533 IN AL, DX34 TEST AL, 80H35 JZ WAIT_AD_FINISH36
37 MOV DX, A080938 IN AL, DX39 MOV DX, B8255 ;; OUTPUT TO 8255B40 OUT DX, AL41 JMP LL42
43 MOV AX, 4C00H44 INT 21H45
46CODE ENDS47END START
选做实验-中断方式
中断方式下,中断即可表示 A/D
转换完成。只需要将 EOC
与 MIR6
相连,复用上次实验中断相关的代码即可。
接线
![A/D 转换单元最左边的绿线](https://static.mmf.moe/wp/2020/10/IMG_20201005_143430_1.jpg)
代码
1;; ADC0809 IOY02;; BASE OFFSET: 0600H3A0809 EQU 0600H4B0809 EQU 0602H5
6;; 8255 IOY17;; BASE OFFSET: 0640H8A8255 EQU 0640H9B8255 EQU 0642H10C8255 EQU 0644H11CON8255 EQU 0646H12
13CODE SEGMENT14ASSUME CS:CODE15
16START:17 MOV DX, CON825518 MOV AL, 90H ;; A IN, B OUT19 OUT DX, AL20
21 ;; MIR622 MOV AX, OFFSET MIR623 MOV SI, 38H24 MOV [SI], AX25 MOV AX, CS26 MOV SI, 3AH27 MOV [SI], AX28
29 ;; --------------------------------------------------30 ;; INIT 825931 CLI32 MOV AL, 11H33 OUT 20H, AL34 MOV AL, 08H35 OUT 21H, AL36 MOV AL, 04H37 OUT 21H, AL38 MOV AL, 07H39 OUT 21H, AL40 MOV AL, 2FH41 OUT 21H, AL42 STI43 ;; --------------------------------------------------44
45LL:46 CLI47 MOV DX, A080948 OUT DX, AL ;; START ADC080949 CALL DELAY50 STI51 JMP LL52
53MIR6:54 MOV DX, A080955 IN AL, DX56 MOV DX, B825557 OUT DX, AL58 IRET59
60DELAY PROC NEAR61 MOV CX, 0FFFFH62 LOOP $63 RET64DELAY ENDP65
66CODE ENDS67END START