接口实验报告

更新时间:2023-10-02 06:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

接口实验报告

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验内容

将接口实验包中所带的EX-138.DSN文件用ISIS 7打开。如图2-1-1所示。

图2-1-1 138实验图

其中74LS273是一种带清除功能的8D触发器, D0~D7为数据输入端,Q0~Q7为数据输出端,在本8086的实验中用作地址锁存器。第一脚MR:主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0;第11脚CLK:触发端,上升沿触发,即当CLK从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存,D0~D7的数据不变。

1. 连接AD4~AD9等几根线,使得138译码器Y0#~Y7#译码出的地址依次分别是Y0#:

200H~20FH; Y1#:210H~21FH;??;Y7#:270h~27FH

2. 利用Source->Add/Remove Source files中添加源程序EX-138.ASM(在实验包中已

提供),该程序向240H端口写任意数据。如果是第一次运行,Source Code Filename

这一项选New来调入源程序。如图2-1-2所示

图2-1-2 添加源程序

3. 在Source菜单下点击“Build All”,汇编源代码(全部编译);执行程序,查看Y0~Y7

中是否Y4#脚输出为有效(管脚出的有颜色的小方块为红色是高电平,蓝色为低电平),如图2-1-3所示。

图2-1-3 输出结果

4. 改变程序中的输出地址,使得Y0#, Y1#,Y6#,Y7#分别有效。 .8086

.MODEL SMALL .stack .data

address word 260h //使Y6#有效,Y1#有效为210h,Y7#有效为270h,Y0#有效为200h

.code start:

mov ax,@data mov ds,ax

mov dx,address mov al,0 out dx,al jmp $

END start

5. 改变A9~A3的接线方法,从而得到Y0;388H~38FH;Y1:398H~39FH; ??;

Y7:3F8H~3FFH。并修改上一问的程序,以同样使得Y4#有效。 address 改为3CH,Y4#即能显示

实验二 可编程中断控制器8259

一、实验目的

1. 掌握8259的基本工作原理和编程方法。

2. 深入了解中断的概念和实地址模式下中断处理程序的编写方法。

二、实验内容

将接口实验包中所带的EX-8259.DSN文件用ISIS 7打开。

1. 按图2-2-1,添加相关电路到所打开的电路中。其中包含的电阻(RES),开关(SWITCH),8259A,电源(POWER),地(GROUND)等元件在打开的文件的对象选择器窗口中都有,大家直接选取使用。注意,由于模拟器软件的问题,因此所有接口实验的端口地址都必须是偶数地址,即系统地址线的A1线接接口芯片的A0线,系统线的A0线不接。以后的实验均遵循这一规定。

图2-2-1 8259A的电路 中断处理程序 .8086

.model small .stack .data

come BYTE 00000000B .code start:

mov ax,@data mov ds,ax cli

mov ax,0 ; init interrupt vector TABLE mov es,ax

mov si,0 ; mov cx,255

l: mov ax,offset int0 mov es:[si],ax mov ax,seg int0 mov es:[si+2],ax add si,4 loop l

mov ax,offset int0 mov es:[si],ax mov ax,seg int0 mov es:[si+2],ax mov ax,2562h int 21h

mov ax,@data mov ds,ax

mov al,00010011b ; init 8259 mov dx,210h

out dx,al ; ICW1 mov al,60h mov dx,212h

out dx,al ; ICW2 mov ax,00000001h

out dx,al ; ICW4 mov ax,0

out dx,al ; OCW1 sti jmp $ int0 proc

push ax push dx push ds

mov al, come ; inc al

mov come, al

mov al,20h ; mov dx,210h out dx,al pop ds pop dx pop ax iret int0 endp END start

2. 汇编好程序后,在中断处理程序的第一条指令处设置断点(如图2-2-2所示),然后执行

程序,用鼠标左键按接在8259A上的按钮,观察没按一次,进入中断处理程序中的现象,并通过查看内存或AX寄存器,来观察计数器COME每次中断加1 在inc al 处设置断点

下面是AX值的变化,表明中断进入,加1

实验三 可编程定时器计数器8253

一、实验目的

掌握8253的基本工作原理、编程方法及其应用。 二、实验内容 信号发生器

1. 将接口实验包中所带的EX-8253-2.DSN文件用ISIS 7打开,图中除了8086基本实验系统和一

个8253外,还提供了一个1MHz的时钟给CLK0,另外还放置了一个数字示波器。要求做一个波形发生器,利用1MHz的时钟和8253的三个定时/计数器产生三个波形:1)1秒为周期,占空比1:2的方波,从示波器A通道输出;2)5秒为周期,占空比为2:5的方波,从示波器B通道输出; 3)5秒为周期的波形,其中前2秒频率为1KHz的方波,后3秒为低电

平(需要加上一些基本门电路),从示波器C通道输出。如图2-3-3所示。

2. 根据上述题目,连接好电路图,必要的时候增加基本的门电路。

3.编写程序EX-8253-2.ASM,完成波形发生器的软件部分将8253计数器0设置为方式0,计数器初值设置为N(N≤10)。 .8086 .model small .code start:

mov al,00110111B mov dx,226h out dx,al

mov ax,1000h mov dx,220h out dx,al mov al,ah out dx,al

mov al,01110111B mov dx,226h out dx,al mov dx,222h mov ax,1000h out dx,al mov al,ah out dx,al

mov al,10010111B mov dx,226h out dx,al mov dx,224h mov al,05h out dx,al jmp $ end start

4.运行程序,调整示波器的相关旋钮,观察波形。

实验五 七段数码管实验

一、实验目的

掌握数码管显示数字的原理,进一步复习8255的应用。

二、实验内容

1. 动态显示。将接口实验包中所带的EX-8255-2.DSN文件用ISIS 7打开,将8255的A口

PA0~PA6分别与七段数码管的段码驱动输入端a~g相连(方式0),位码驱动输入端S2、S1接8255 C口的PB1、PB0。PC0~0C7分别接开关K1~K8, 开关合上为0,断开为1,在七段数码管上显示开关K8-K1八位二进制数的十六进制形式。

三)编程提示

1. 模拟器中我们给大家选择的七段数码管为共阴型,段码采用同相驱动,输入端

加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中,S2=1选中十位,S1=1选中个位。

2. 七段数码管的字型代码表如表2-5-1:

表2-5-1 共阴型七段数码管字符表

显示字形 g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5bh 3 1 0 0 1 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 0 1 6dh 6 1 1 1 1 1 0 1 7dh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh 9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h B 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h D 1 0 1 1 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h

3. 对于两位数码管的控制流程如图16所示。

两位数码管输出十位数的段码 显示模块 S2<=1 延迟0.01秒 S2<=0 输出个位数的段码 S1<=1 延迟0.01秒 S1<=0 N

图16

三、解决方案 电路图:

代码: .8086

.model small .stack .data

data1 BYTE 3fh,06h,5bh,4fh,66h,6dh,

7dh,07h,7fh,6fh,77h,7ch, 39h,5eh,79h,71h data2 BYTE ? .code

start:

mov ax,@data mov ds,ax

mov al,10001001B mov dx,206h out dx,al ;SHIWEI A:

mov dx,204h in al,dx

mov data2,al AND al,0F0H shr ax,1 shr ax,1 shr ax,1

shr ax,1

mov bx,offset data1 xlat

mov bl,al

mov al,02h ;choose shiwei mov dx,202h out dx,al mov dx,200h mov al,bl out dx,al ;yanchi mov cl,64h loop $

;GEWEI

mov al,data2 and al,0fh

mov bx,offset data1 xlat

mov bl,al

mov al,01h ;choose gewei mov dx,202h out dx,al mov al,bl mov dx,200h out dx,al ;yanchi mov cl,64h loop $

jmp A jmp $ end start

运行结果:

mov al,00010011B;ICW1 mov dx,210h out dx,al

mov al,00001000B;ICW2,08h mov dx,212h

out dx,al ;ICW4,08H mov al,01h out dx,al cli

mov ax,0 ; init interrupt vector TABLE mov es,ax

mov si,0 ; mov cx,255

l: mov ax,offset int0 mov es:[si],ax mov ax,seg int0 mov es:[si+2],ax add si,4 loop l

mov ax,offset int0 mov es:[si],ax mov ax,seg int0 mov es:[si+2],ax

mov ax,@data mov ds,ax sti jmp $ end start 运行结果:

本文来源:https://www.bwwdw.com/article/245d.html

Top