实验题目 8253定时/计数器实验
一、实验目的与要求:
1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容:
1、实验原理
本实验原理图如图1所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表1所示。8253A的片选地址为48H~ 4FH。 因此, 本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地("0"电平)或甩空("1"电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。
2、 实验线路连接
(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。
(2) 8253A的GATE0接+5V。
3、 实验步骤
(1) 按图1连好实验线路
(2) 运行实验程序
1.按“调试”按钮
2。选“窗口”“进入示波器窗口”,然后最小化
3.按“运行按钮”
4.将模拟示波器窗口打开,选择“串行口2”,再按
ctrl+F2 按钮即可看到波形 图1
显示“8253-1”用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的 方波输出,幅值0~4V
三 、实验代码:
CODE SEGMENT
ASSUME CS:CODE
TCONTRO EQU 004BH
TCON2 EQU 004AH
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA1 EQU 0500H
START: JMP TCONT
TCONT: CALL FORMAT
CALL LEDDISP
MOV DX,TCONTRO
MOV AL,0B6H ;要使用方式2,0B6H要改为0B4H
OUT DX,AL
MOV DX,TCON2
MOV AL,00 ;输入频率(即时间常数)
OUT DX,AL ;要修改频率,只需更改送给AL的值(注意先送低8位,
MOV AL,10H ;后送高8位)
OUT DX,AL
HLT
LEDDISP:MOV AL,90H ;显示数据方式命令字送8279控制字
MOV DX,CONTPORT ;8279命令状态口
OUT DX,AL
MOV BYTE PTR DS:[0600H],00 ;置显示位数初值为0
LED1: CMP BYTE PTR DS:[0600H],07H ;判断显示位数满8为否?
JA LED2 ;满8位转子程序返回
MOV BL,DS:[0600H] ;未满8位从数据区取数
MOV BH,0H
MOV AL,CS:[BX+DATA1]
MOV DX,DATAPORT ;8279数据口
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H ;显示位数加1
JNZ LED1
LED2: RET ;子程序返回
FORMAT: MOV BX,0 ;显示8253---1
MOV WORD PTR DS:[BX+0500H],4006H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D4FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7F5BH
RET
CODE ENDS
END START
四、思考题
若改用方式2,并改变时间常数,如何编写程序。
答:
,若使用方式2,根据8253控制字原理,控制字必须设置为B4H,相应的修改在代码中在上述代码中,修改时间常数的方法也在程序中注明。
实验题目 8255并行接口实验
一、实验目的与要求
1. 掌握8255A和微机接口方法。
2. 掌握8255A的工作方式和编程原理
二、实验内容
1、实验原理
如实验原理图1所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
2、实验线路连接
(1)8255A芯片PC0~ PC7插孔依次接K1~ K8。
(2)8255A芯片PB0~PB7插孔依次接L1 ~ L8。
(3)8255A的CS插孔接译码输出070H-07FH插孔。
3.实验主要仪器设备和材料
PC机、DVCC-8086JH实验系统及连接导线
4、实验步骤
(1) 按图1连好线路。
(2) 运行实验程序。1。按“调试”按钮
2.按“运行”按钮
在DVCC-8086JH数码管上显示“8255-1”,同时拨动K1~K8,L1~L8会跟着亮灭
三、实验程序
CODE SEGMENT
ASSUME CS:CODE
IOCONPT EQU 0073H
IOCPT EQU 0072H
IOBPT EQU 0071H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA1 EQU 0500H
START: JMP IOLED
IOLED: CALL FORMAT
CALL LEDDISP
MOV AL,89H
MOV DX,IOCONPT
OUT DX,AL
NOP
NOP
NOP
IOLED1: MOV DX,IOCPT
IN AL,DX
MOV DX,IOBPT
OUT DX,AL
MOV CX,0FFFFH
DELAY: LOOP DELAY
JMP IOLED1
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+DATA1]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],4006H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D6DH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7F5BH
RET
CODE ENDS
END START
四、思考题
试将B口与C口的功能对调(连线对调),如何编写程序
答:
把IOLED段的89H改为82H,把IOLED1段中的IOCPT和IOBPT对换。82H(1000 0010)表示用B口输入,C口输出,均使用方式0.IOCPT和IOBPT分别对应B、C口的地址。
程序代码如下:
CODE SEGMENT
ASSUME CS:CODE
TCONTRO EQU 004BH
TCON2 EQU 004AH
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA1 EQU 0500H
START: JMP TCONT
TCONT: CALL FORMAT
CALL LEDDISP
MOV DX,TCONTRO ;将控制口地址给DX
MOV AL,10110101B ;选通道二,先写低字节,后高字节,方式2,数字控制用BCD码
OUT DX,AL ;写控制字
MOV DX,TCON2 ;计数器二的地址给DX
MOV AX,10D ;计数初值为10(十进制)
OUT DX,AL ;写低字节
MOV AL,AH
OUT DX,AL ;写高字节
HLT ;停机
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+DATA1]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],4006H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D4FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7F5BH
RET
CODE ENDS
END START
按实验要求,修改后的实验程序如上。在思考题实验中,用了方式二控制计数端口二,计数初值设为10,即当用CLK(1MHz)进行计数时,每次当计完十个时钟周期,OUT输入端就由高电平变为低电平,就是先有十个周期的高电平,接着低电平出现的只有一个时钟周期,比较短;实现将1MHz的CLK转化为1KHz的信号;
实验题目 数字式时钟(电子钟)
一、实验目的与要求
1.学习8253编程定时/计数器的工作方式
2.掌握终端控制器8259A与微处理机接口的原理和方法
3.掌握中断控制器8259A的综合应用编程
二、实验内容和要求
1.实验原理
用8253和8259实现数码管显示时钟。利用8253的定时器功能。8253有三个端口地址为48H,49H,4AH,本实验采用8253的通道2,工作在方式3(方波发生器方式)输入CLK2为1MHZ。先给8253的初始值0C350H,循环计数。即一次记数完后,自动装入初始值。输出OUT2作为8259的输入脉冲。8259有两个口地址,本实验为20H和21H,其中2H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,采用3号中断源,即IR3和8253输出口OUT2相连,每过1/20秒接收到一个中断,向8259发出中断请求信号,如果电平信号不符合要求,则自动转到7号中断,显示"ERR",CPU响应后,在中断处理程序中,对终端次数进行记数,记满20次,把时间缓冲区中的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。记数初值的计算:1/1000000*X=1/20X=50000D=0C350H(用1MHZ信号产生1/20秒方波).
2.实验线路连接
(1)8253A芯片的CLK2引出插孔连分频输出插孔IMHZ
(2)8253A的GATE2接+5V
(3)8259A的IR3插孔和8253A的OUT2插孔相连
图1
3.实验主要仪器设备和材料
PC机、DVCC-8086JH实验系统及连接导线
4.实验步骤
1、按图1连好线路
2、打开DVCC86H目录下的CLOCK子目录中的Eclock.asm
3、运行实验程序:?按“调试”按钮
?按“运行”按钮
在DVCC-8086JH数码管上显示器“00-00-00”,然后开始计时
三、实验程序
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0020H
INTPORT2 EQU 0021H
INTQ3 EQU INTREEUP3
INTQ7 EQU INTREEUP7
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA0 EQU 0580H
DATA1 EQU 0500H
DATA2 EQU 0508H
DATA3 EQU 0518H
DATA4 EQU 0520H
ORG 1800H
START: JMP Tint1
Tint1: CALL FORMAT
CLD
MOV DI,DATA0
MOV CX,08H
XOR AX,AX
REP STOSW
MOV SI,DATA3
CALL LEDDISP
MOV AX,0H
MOV DS,AX
CALL WRINTVER
MOV AL,13H ;写初始化命令字ICW1为13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H ;写初始化命令字ICW2为08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H ;写初始化命令字ICW4为09H
OUT DX,AL
MOV AL,0F7H ;写操作控制字OCW1为F7H,即IR3开放,其他IR屏蔽
OUT DX,AL
MOV BYTE PTR DS:[0601H],01H
STI
WATING: JMP WATING
WRINTVER:MOV AX,0H
MOV ES,AX
MOV DI,002CH ;使用3号中断源 中断矢量地址为2CH~2FH
LEA AX,INTQ3
STOSW
MOV AX,CS
STOSW
MOV DI,003CH
LEA AX,INTQ7
STOSW
MOV AX,CS
STOSW
RET
INTREEUP3:CLI
MOV AL,DS:[0601H]
CALL CONVERS
MOV SI,DATA0
CALL LEDDISPD
MOV AL,20H ;写操作命令字OCW2为20H,选择中断结束方式
MOV DX,INTPORT1
OUT DX,AL
ADD BYTE PTR DS:[0601H],01H
CMP BYTE PTR DS:[0601H],06H
JNA INTRE1
MOV SI,DATA4
CALL LEDDISP
INTRE3: JMP INTRE3
CONVERS:MOV BH,0H
AND AL,0FH
MOV BL,AL
MOV AL,CS:[BX+DATA2]
MOV BX,DATA0
MOV DS:[BX],AL
RET
INTRE1: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
STI
IRET
INTREEUP7: CLI
MOV SI,DATA1
CALL LEDDISP
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
IRET
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+SI]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
LEDDISPD:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LEDD1: CMP BYTE PTR DS:[0600H],07H
JA LEDD2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,DS:[BX+SI]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LEDD1
LEDD2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],5050H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],0079H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],0000H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],0000H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],063FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D66H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],077DH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6F7FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7C77H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],5E39H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7179H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4006H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D6FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],3F5EH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],5C3FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D6FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7F5BH
RET
CODE ENDS
END START
四、思考题
查看程序中的SI寄存器是如何传递要显示的数据的。
答:将原程序中WRINTVER子程序中的
MOV DI,002CH ;使用3号中断源 中断矢量地址为2CH~2FH
改为 MOV DI,0028H ;使用2号中断源 中断矢量地址为28H~2BH
并将Tint1:子程序中的
MOV AL,0F7H ;写操作控制字OCW1为F7H,即IR3开放,其他IR屏蔽
改为 MOV AL,0FBH ;写操作控制字OCW1为FBH,即IR2开放,其他IR屏蔽。
此外,在MOV SI,DATA4中将时间显示缓冲区的起始地址发给SI,然后调用显示子程序,从而显示出时间。再将时间变化,再显示。
五、实验体会
通过这次实验,使我进一步对中断的使用有了更深一层的了解,对芯片的端口选择、控制字的确定和写入有了进一步的了解,对SI寄存器传递显示的数据和数码管的使用有了初步的映象,我更加了解8253、8259芯片原理的应用。经过编写程序成功运行后实现了数字时钟,实验之初,出现的问题还比较多。主要是因为预习的时候对实验原理还不是理解的很透彻,但通过后来自己的多次实践还有老师的帮助下,最终还是完成了任务。这些遇到的问题也让我意识到预习实验时,要认真思考。此次实验,同时让我进一步理解了计算机和各种外设通讯的很多原理和技术。自己的动手能力也明显增强了,通过实验,更进一步理解了课本的知识。
实验题目 D/A(数/模)转换实验
一、实验目的与要求
熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法。
二、实验内容
1、实验原理
实验原理如图 1所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与 8088CPU 总线直接接口。图中是只有一路模拟量输出, 且为单极型电压输出。DAC0832工作于单缓冲方式,它的ILE接+5V,/CS和/XFER相接后作为0832芯片的片选0832CS。这样, 对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。
2、 实验线路的连接
将0832片选信号0832CS插孔和译码输出070H~07FH插孔相连。
3、 实验软件编程提示
? 显示方波
本实验要求在AOUT端输出方波信号,方波信号的周期由延时时间常数确定。 根据Vout =-〔VREF×(输入数字量的十进制数)〕/256,当数字量的十进制数为256(FFH)时,由于VREF =-5V,Vout = +5V。当数字量的十进制数为0(00H) 时, 由于VREF = - 5V,Vout = 0V。因此,只要将上述数字量写入DAC0832端口地址时,模拟电压就从AOUT 端输出 。
?显示锯齿波
本实验在AOUT端输出锯齿波。根据VouT=-(VERFEX(输入数字量的十进制))/256即可知道,只要将数字量0-256(00H-FFH)从0开始逐渐加1递增直至256为止,不断循环,在AOUT端会输出连续不断的锯齿波。
4、 实验主要一起设备和材料
PC机,DVCC-8086JH实验系统及连接导线
5、实验步骤
(1) 根据原理图正确连接好实验线路
(2) 正确理解实验原理
(3) 运行实验程序:1.按“调试”按钮
2.选“窗口”下拉菜单里的“进入示波器窗口”然后将其最小化
3.按“运行”按钮
4.将模拟示波器窗口打开,选择“串行口2”,再按“Ctrl+F2”即 可看到波形
在DVCC-8086JH数码管上显示“0832-1(0832-2)”,用真示波器测量DAC0832下AOUT插孔,应有方波(锯齿波)输出
三、实验代码
(方波代码)
CODE SEGMENT
ASSUME CS:CODE
DAPORT EQU 0070H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA EQU 0500H
START: JMP DACONTORL
DACONTORL:CALL FORMAT
CALL LEDDISP
MOV DX,DAPORT
MOV AL,00H
DACON1: OUT DX,AL
MOV CX,0400H
DACON2: LOOP DACON2
NOT AL
JMP DACON1
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+DATA]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],4006H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],3F7FH
ADD BX,2
RET
CODE ENDS
END START
(锯齿波代码)
CODE SEGMENT
ASSUME CS:CODE
DAPORT EQU 0070H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA EQU 0500H
START: JMP DACONTORL
DACONTORL:CALL FORMAT
CALL LEDDISP
MOV DX,DAPORT
MOV AL,00H
DACON1: OUT DX,AL
INC AL
MOV CX,08H
DACON2: LOOP DACON2
JMP DACON1
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+DATA]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],405BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],3F7FH
RET
CODE ENDS
END START
四.思考题
编写一个三角波的程序,并对程序写注释。其中三角波的最高点为0FFH,最低点为00H,步长为1(即每次加1)
答:CODE SEGMENT
ASSUME CS:CODE
DAPORT EQU 0070H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA EQU 0500H
START: JMP DACONTORL
DACONTORL:CALL FORMAT
CALL LEDDISP
MOV DX,DAPORT ;将DAC0832的地址给DX
MOV AL,00H ;设置转换的数字量为最小,转换后的电平为0V
DACON1: OUT DX,AL ;启动数模转换
INC AL ;将输入的数字量加一,输出的电平增加256分之一
MOV CX,08H ;设置循环重复次数
DACON2: LOOP DACON2 ;循环延时
CMP AL,FFH ;比较AL和FFH
JL DACON3 ;当AL的值为FFH(最大)时,转移指令
JMP DACON1 ;循环加一转换输出,当增加到FFH时加一自动归零
DACON3:OUT DX,AL ;启动转换
DEC AL ;AL值减一,输出的电平减少256分之一
JMP DACON3 ;循环减一转换输入对应模拟量
CMP AL 00H ;比较AL和00H
JL DACON1 ;当AL减少到00H时,表示已经输出一个三角波,循环
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,CS:[BX+DATA]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],405BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4040H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],3F7FH
RET
CODE ENDS
END START
改变延时即MOV CX,08H改变MOV后面的数字量。改变步长即将INC AL和DEC AL的步骤重复多几次即可;当改变了延时或是步长,很表示的三角波形状也就是底长会相应变化,高度不变。
____
实验题目 A/D(模/数)转换实验
一、实验目的与要求
加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。
二、实验内容
1 、实验原理
本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。ADC0809的转换结束信号EOC未接, 如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C 接系统数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、 06H、07H。
启动本A/D转换只需如下三条命令:
MOV DX,ADPORT ;ADPORT为ADC0809端口地址。
MOV AL,DATA ;DATA为通道值。
MOV DX, AL ; 通道值送端口。
读取A/D转换结果用下面二条指令:
MOV DX,ADPORT
IN AL,DX
2、实验线路的连接
在原理图中,粗黑线是学生需要连接的线, 粗黑线两端是需连接的信号名称。
(1)IN0插孔连W1的输出V1插孔。
(2)0809CS连译码输出060H~06FH插孔。
4、实验方法、步骤及结果测试
1.正确连接好实验线路
2.理解实验原理
3.打开原程序,仔细阅读,弄懂实验程序
4.运行实验程序:1)按“调试”按钮 2)按“运行”按钮
在DVCC-8086JH实验箱上应显示“0809-XX”
5.调节电位器W1,以改变模拟电压值,显示器上会不断显示新的A/D转换结果。用ADC0809做A/D转换,其模拟量与数字量对应关系的典型值为+5V-FFH,2.5V-80H,0V-00H。
三、实验程序
CODE SEGMENT
ASSUME CS:CODE
ADPORT EQU 0060H
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
START: JMP ADCONTORL
DATA1 EQU 0580H
DATA2 EQU 0500H
ADCONTORL:CALL FORMAT
MOV AX,0H
MOV DS,AX
MOV BX,DATA1
MOV DS:[BX],AL
ADD BX,01H
MOV DS:[BX],AL
ADD BX,01H
MOV AL,40H
MOV DS:[BX],AL
ADD BX,01H
MOV AL,40H
MOV DS:[BX],AL
ADD BX,01H
MOV AL,6fH
MOV DS:[BX],AL
ADD BX,01H
MOV AL,3fH
MOV DS:[BX],AL
ADD BX,01H
MOV AL,7fH
MOV DS:[BX],AL
MOV AL,3fH
ADD BX,01H
MOV DS:[BX],AL
ADCON: MOV AX,00
MOV DX,ADPORT
OUT DX,AL
MOV CX,0500H
DELAY: LOOP DELAY
MOV DX,ADPORT
IN AL,DX
MOV CL,AL
CALL CONVERS
CALL LEDDISP
JMP ADCON
CONVERS:MOV BH,0H
AND AL,0FH
MOV BL,AL
MOV AL,CS:[BX+DATA2]
MOV BX,DATA1
MOV DS:[BX],AL
INC BX
PUSH BX
MOV AL,CL
MOV CL,04H
SHR AL,CL
MOV BL,AL
MOV BH,0H
MOV AL,CS:[BX+DATA2]
POP BX
MOV DS:[BX],AL
RET
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,DS:[BX+DATA1]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],063FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D66H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],077DH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6F7FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7C77H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],5E39H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7179H
RET
CODE ENDS
END START
四、思考题
若以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。并在中断服务程序里读取A/D转换值。应如何编写程序?
答:以中断方式完成实验,修改后的实验程序如下:
CODE SEGMENT
ASSUME CS:CODE
ADPORT EQU 0060H
CONTPORT EQU 00DFH
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA0 EQU 0580H
DATA1 EQU 0500H
INTPORT1 EQU 0020H
INTPORT2 EQU 0021H
INTQ EQU INTREEUP
ORG 1800H
START: JMP ADCONTORL
ADCONTORL:CALL FORMAT
MOV AX,0H ;显示0809--XX
MOV DS,AX
MOV BX,DATA0
MOV DS:[BX],AL
ADD BX,01H
MOV DS:[BX],AL
ADD BX,01H
MOV AL,40H
MOV DS:[BX],AL
ADD BX,01H
MOV AL,40H
MOV DS:[BX],AL
ADD BX,01H
MOV AL,6fH
MOV DS:[BX],AL
ADD BX,01H
MOV AL,3fH
MOV DS:[BX],AL
ADD BX,01H
MOV AL,7fH
MOV DS:[BX],AL
MOV AL,3fH
ADD BX,01H
MOV DS:[BX],AL
ADCON: MOV AX,00 ;启动AD转换
MOV DX,ADPORT
OUT DX,AL
INITIALIZATION: MOV AX,0H ;8259初始化
MOV DS,AX
CALL WRINTVER
MOV AL,13H ;写ICW1控制字
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H ;写ICW2 ICW4控制字
MOV DX,INTPORT2
OUT DX,AL
MOV AL,0BH
OUT DX,AL ;选择IR3作为中断源输出
MOV AL,0F7H
OUT DX,AL
WAITING: STI ;开中断
JMP WAITING
WRINTVER:MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ
STOSW
MOV AX,CS
STOSW
RET
INTREEUP:CLI ;关中断 中断服务子程序
MOV DX,ADPORT ;读取AD转换
IN AL,DX
MOV CL,AL
CALL CONVERS ;结果显示代码
CALL LEDDISP
MOV DX,ADPORT ;启动AD转换
MOV AL,00h
OUT DX,AL
STI ;开中断
IRET ;中断返回
CONVERS:MOV BH,0H
AND AL,0FH
MOV BL,AL
MOV AL,CS:[BX+DATA1]
MOV BX,DATA0
MOV DS:[BX],AL
INC BX
PUSH BX
MOV AL,CL
MOV CL,04H
SHR AL,CL
MOV BL,AL
MOV BH,0H
MOV AL,CS:[BX+DATA1]
POP BX
MOV DS:[BX],AL
RET
LEDDISP:MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H
JA LED2
MOV BL,DS:[0600H]
MOV BH,0H
MOV AL,DS:[BX+DATA0]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[0600H],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+0500H],063FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6D66H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],077DH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],6F7FH
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7C77H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],5E39H
ADD BX,2
MOV WORD PTR DS:[BX+0500H],7179H
RET
CODE ENDS
END START
程序框图如下:
微机原理与接口技术实验指导书班级学号099074姓名安徽工业大学计算机学院实验一存贮器读写实验一实验内容对指定地址区间的RAM40…
实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理…
微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编…
微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开…
大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大…
微机原理与应用课程实验报告实验分工报告人同组人实验时间20xx1210课程设计一题目要求1在数据段首址为0100H开始的内存区1按…
21显示程序实验1实验目的1掌握在PC机上以十六进制形式显示数据的方法2掌握部分DOS功能调用使用方法3熟悉Windows集成操作…
姓名:XXX学号:XXXXXX指导教师:XXX实验一Debug命令及汇编指令和寻址的应用一、实验内容1、设堆栈段指针SP=1000…
计算机学院微机接口实验报告专业计算机科学与技术班级姓名学号实验一汇编语言程序设计实验一实验目的熟悉汇编语言程序设计及TDPITE8…
洛阳理工学院实验报告12345洛阳理工学院实验报告678洛阳理工学院实验报告9101112洛阳理工学院实验报告1314洛阳理工学院…
实验一Debug命令及汇编指令和寻址的应用一、实验目的:1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序;2、掌握8…