接口技术实验大纲

更新时间:2024-03-11 04:29:02 阅读量: 综合文库 文档下载

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

《汇编语言与接口技术》

实验指导

河南大学计算机与信息工程学院

概 述

学习微机接口技术,实践是非常重要的环节。我们学习微型计算机不仅要掌握其基本原理、基本概念、基本方法,更重要的是学以致用。目前,微型计算机已经是各行各业中十分重要又十分普遍的工具,我们要用它来解决科技进步中各类专业中的许多问题,以促进各行各业的进一步发展。

要学会应用,实践是十分重要的手段。《汇编语言与接口技术》课程的实验部分包括汇编程序语言设计和硬件芯片应用实验两个方面。对于汇编语言程序设计来说,只有多看例程、多做习题,从基本的方法和方面着手,积累汇编语言程序设计的典型例子,才能掌握汇编语言,学会用汇编语言编程的方法和技巧,逐步能得心应手地使用汇编语言。在各种芯片实验中,汇编语言又是不可缺少的实验工具,通过汇编语言的对各类芯片的编程使用才能更好地了解各芯片的功能和用法。

本书实现整个实践环节的一体化,加强系统观念,注重相关内容整体化,使学生从理论到实践对微型计算机的内部结构和工作原理有一个比较清楚的认识,加深与巩固对微机原理基本概念和规律的认识。通过对学生实际动手能力的培养,可以使学生受到基本知识、基本方法和基本技能方面较系统的教育与训练。

Dais十六位教学实验系统介绍

接口技术实验是在Dais十六位教学实验系统上完成的。Dais系列单片机微机仿真实验系统采用多CPU兼容技术,选择高速度大规模可编程器件作系统的主控芯片,高速通用、适配灵活,具有完善的硬件断点、无限制暂停,支持汇编与C语言的语句调试、矢量调试及全符号过程调试,并按微机接口课程设置的要求系统地扩展了通用实验模块,形成了仿真开发与教学实验相结合的多用途仿真实验开发系统。

一.系统组成

Dais系列单片机微机仿真实验系统的8088/8086微机接口实验由管理CPU 89C52单元、目标CPU 8088/8086单元、接口实验单元和内置稳压电源组成,通过RS232C串行接口与PC微机相连,系统硬件主要内容如下:

系统管理 系统存储器 管理CPU 89C52(控制板/内置仿真器)、目标CPU 8088 监控在89C52片内E2PROM(8K)、RAM 6264、RAM 61256一片(32K)、BPRAM 61256(32K) 接口芯片及单元实验 8253、8255、8259、ADC0809、ADC0832、6264、164、273、244、393分频、电子发声单元、电机控制单元,开关及发光二极管、单脉冲触发器、继电器控制、16?16点阵、8155扩展3?3键盘及四位LED显示、以及8251、8250串行通信等。 外设接口 打印接口、RS232C串口、D/A驱动接口、步进电机驱动接口、音频驱动接口、PC总线接口、2?16LCD液晶显示接口 显示输出 键盘 EPROM操作 系统电源 6位/8位LED、双通道虚拟PC示波器 32键自定义键盘 对EPROM 2764、27128快速读出 +5V/2A、±12V/0.5A

二.系统功能与特点

1. 自带键盘、显示器,能独立运行,也可以PC微机为操作平台。两种工作方式任意选择,全面支持《汇编语言与接口技术》、《微机原理与接口》、《微机控制应用》等课程的实验教学。

2. 系统采用紧耦合多CPU技术,用89C52作为系统管理CPU,8088/8086作为目标机接口扩展实验CPU。

3. 目标CPU 8088/8086采用主频为14.3818MHz,系统以最小工作方式构成系统。

4. 系统配有1片6264构成系统的8K基本内存,地址范围为0F000:0000H~07FFH,作为监控程序区和数据区;另配1片61C256(32K)作为实验程序空间,地址从0000:0000H~FFFFH(其中0~003FFH作为目标机中断向量区),还配一片61C256(32K)作为用户设置的断点区(BPRAM)。

5.实验项目完整丰富,与课程教学紧密结合,同时配有机电、音响等实验对象,可支持控制应用类综合实验。

6.系统接口实验电路为单元电路方式,电路简洁明快,8位数据总线以排线或8芯扁平线形式引出,这样既减轻繁琐的连线工作,又提高学生的实验工作能力。

7.通过RS232通信接口,在Windows/DOS集成软件的支持下,利用上位机丰富的软件硬件资源,实现用户程序的编辑、编译、调试运行,提高实验效率。

8.具有丰富的调试手段,系统全面支持硬件断点,可无限制设置断点,同时具有单步、宏单步、连续运行及无限制暂停等功能。

9.集EPROM操作功能,可对2764/27128快速读出(实验的代码文件)。 10.具有示波器功能,做到一机多用。

三.通用外围电路

1.逻辑电平开关电路

实验仪上有9个开关K1~K9,与之相对应的K1~K9引线孔为逻辑电平输出端。开关上拨,相应插孔输出低电平“0”;开关下拨,相应插孔输出高电平“1”。

2.发光二极管显示电路

实验仪上装有12个发光二极管,L1~L12为相应发光二极管驱动信号输入端,该输入端为低电平“0”时,发光二极管点亮。

3.脉冲发生器电路

实验仪上提供一个频率为4.9152MHz的脉冲源。 4.脉冲分频电路

该电路由1片74LS393组成,T为脉冲输入端(已连接脉冲源4.9152MHz),T0~T7为分频输出插孔,输出脉冲依次为2.4576MHz、1.2288MHz、614.4KHz、307.2KHz、153.6KHz、76.8KHz、38.4Hz、19.2Hz。

5.单脉冲电路

实验仪采用RS触发器产生正负脉冲。每按一次AN按钮,即可以从SP或/SP输出端上得到一个正脉冲或负脉冲,以供中断、定时计数器等实验使用。

6.译码电路

实验仪上配有一片74LS138译码器,其引脚用插孔全部引出,使用时可根据教学需要自行定义Y0~Y7的寻址范围。系统实用程序中对译码器的定义为:使能控制端G的有效寻址范围为0FFE0H~0FFFFH,译码器地址输入端A、B、C受地址线A2、A3、A4控制,其译码输出端Y0~Y7的有效寻址范围分别为0FFE0H、0FFE4H、0FFE8H、0FFECH、0FFF0H、0FFF4H、0FFF8H和0FFFCH。

7.CPU选择开关

系统中设有3×2 CPU选择开关,通常在开机前应正确地选择当前CPU类型,当开关拨到最左侧“96”时,表示选择MCS-196KB/KC;当开关拨到中间“88”时,表示选择8088/8086;当开关拨到最右侧“51”时,表示选择MCS-8032/8052。在通电状态下,亦可拨动选择开关改变当前CPU类型,但在改变当前CPU类型后,要用RESET系统复位命令加以确认,否则会引发死机。

8.串行口选择及通信波特率选择开关

对于串行选择开关,当开关拨到左边时,表示选择8251芯片,进行串口通信实验;右边两位表示系统在联机方式下与PC机通信波特率选择位,其中中间位表示采用9600的波特率,右侧位表示采用57600的波特率。在Windows环境或PC机能承受的情况下,一般以选择57600为宜。

四.系统资源分配

实验系统寻址范围定义如下:

系统数据区 系统堆栈区 系统程序区 用户程序/数据区 用户堆栈区 中断向量区 系统已定义的端口地址如下:

接口芯片 74LS273 74LS273 74LS245 8255 端口地址 FFDDH FFDCH FFDEH 0FFD8~0FFDBH 用途 字位口 字形口 键入口 F000:0000~00FFH F000:0100~01FFH F000:0200~07FFH 0000:1000~7FFFH 0000:0400~0600H 0000:0000~03FFH 五.系统工作

系统正常工作时,打开电源开关,系统的6位LED显示器上显示闪动的“P.”,处于待命状态;否则按下RESET键,重启,若仍不显示,则应立即切断电源,重新检查硬件。

本系统具有自检功能,具体执行如下:在闪动的“P.”状态下按键[MOVE]?[1000]?[STEP]?[EXEC],系统将连续运行“8”字循环移位程序,若6位LED显示器上出现循环移位显示的“8”,则说明系统已进入正常工作状态,可按RESET键返回“P.”待命。

实验指导

一.实验步骤

1、连接实验仪与微机

使用随实验仪配备的通信/电源线,将RS232-9芯插头插入DVCC8086实验仪的CZ1插座,红鳄鱼夹接微机电源的+5V,黑鳄鱼夹接微机电源地。在做D/A实验时,将蓝线接微机电源的+12V,黄线接微机电源的-12V。在做串行通信时,将RS232-9的另一个插头和PC机的COM1口相连。

2、预习当次实验

启动微机,双击桌面上的“Intel8088 微机实验系统”程序图标

,选

择实验仪与微机的连接通信端口(串口1或串口2)和通信波特率(9600或57600),单击“确认”按钮进入实验系统。注意:在进入实验系统之前必须将实验仪打开,否则会显示通信端口连接失败的提示信息。若单击“取消”,则会进入软件模拟操作状态。

在实验系统中选择“实验指导”菜单,如右图,在硬件项目中选中对应的实验,然后分别选择相应的指导内容进行查看。其中程序流程——当前实验的流程框图,实验电路——实验原理的硬件连接图(粗线表示需要手工连接的,细线表示系统中已完成连接的),实验连线——动态

地看到当前实验中需要使用到的芯片,以及需要连接的每一条线路,实验程序——当前实验的源程序,可在联机实验中使用。

3、完成脱机实验,观察实验结果

根据实验指导中的实验步骤(连接实验元件,再输入程序地址开始执行),在脱机方式下(仅用实验仪而不用微机,直接使用实验仪上的键盘控制输入)完成实验,观察结果。脱机实验仅限实验系统的实验指导中包含的实验内容,即在实验仪中固化的实验。本实验指导书中的部分实验没有脱机实验内容。

4、进行联机实验,填写实验报告

在将实验元件连接完毕的情况下,打开微机和实验仪,运行实验系统,或在实验系统的“设置”菜单中选择连接方式,使微机和实验仪建立通信连接,即联机环境下开始实验。所谓联机操作指的是使用微机的输入、输出设备编辑实验程序,运行时将微机中编辑好的可执行程序通过串口的连接传送到实验仪的内存中,并由实验仪的CPU执行。

1.编写实验程序:选择“文件”菜单中的“新文件”或“打开文件”,编辑新的实验源程序,或将系统中固化有的实验程序打开修改;

2.编译实验程序并装载:将编写的实验源程序经编译连接后生成可执行文件,并通过串口将可执行文件传送到实验仪的内存中;

3.执行实验程序并查看实验结果:使用实验系统中的快捷按钮,连续或断点执行实验程序,查看对应的实验结果;

4.记录实验结果并思考相关问题。

二.实验报告书写规范

1.使用专用的实验报告纸,每个实验一份,字迹工整,内容清晰,注意填写必要的信息(如:姓名、学号、班级、辅导教师、同实验者);

2.填写实验题目、实验目的;实验器材一栏中填写本次实验所用的元器件;原理部分要求简明描述本次实验原理(如:芯片的功能,使用方法等),画出必要的原理图;实验步骤按实际情况分步描述;数据记录和计算中填写所观察到的实验结果;最后在问题讨论中解释相关问题及实验中所出现的故障原因。

三.实验注意事项

1.实验仪上均为各种裸露的芯片,为保证芯片不发生以外损坏,请在实验过程中不要用手直接触摸芯片,也不要将无用的导线或测试笔放置于实验板上,插线时应小心。

2.每次连线的时候都要关掉电源,不要带电插拔,避免损坏芯片。 3.每次实验结束,请将实验连线去除,实验仪和微机关闭,凳子复位。

实验一 8255A并行口实验(一)

一.实验目的

掌握可编程并行接口芯片8255A的原理,熟悉对8255A的初始化编程方法。

二.实验内容

本实验要求利用8255A的数据端口A、B、C口输出方波。

三.实验原理

本实验是对8255A方式0的简单应用,即利用编程的方式使A、B、C口交替输出高低电平,从而实现方波的输出。

1.硬件线路连接

8255A芯片本身的片选等连接在实验仪中已经确定,不需要再重复连接,可在程序运行时直接使用逻辑示波器测试各数据输出端口的输出状态。

2.编程提示

本实验中8255A芯片的A、B、C口均工作于方式0下,为无条件的数据传送方式,在完成8255A的初始化后,可依次对三个数据端口输出相应的数据,以实现方波。

四.实验步骤

1.脱机实验

(1)在实验仪的命令提示符“P.”下,输入程序的固化地址32C0,按EXEC键;

(2)实验仪的显示器上显示“┏”表示程序已运行,此时用实验系统中的逻辑示波器测试8255A的各输出端(PA0~PA7、PB0~PB7、PC0~PC7),观察是否有方波产生。

2.联机实验

在C:\\Dais\\asm88路径下可以找到本实验的源程序HE1.asm,当然也可以自行编写。将源程序编译、连接后传送至实验仪,执行。

五.思考问题

1.试使用C口置复位命令字对某个PC位进行置复位操作,查看是否能够达到同样的效果,产生方波?

2.若将数据端口A、B、C口的某位输出至发光二极管,则看到什么效果?请思考原因。若想利用程序控制发光二极管闪动,应如何修改程序?

六.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 32C0H H1: JMP STARTP1 PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH STARTP1:MOV DX,PCTL MOV AL,80H OUT DX,AL MOV AL,55H P11: MOV DX,PA OUT DX,AL INC DX OUT DX,AL INC DX OUT DX,AL

MOV CX,0800H LOOP $ NOT AL JMP P11 CODE ENDS END H1

;------由A口输出数据,点亮和熄灭二级发光管(闪动显示)------- CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 32C0H H1: JMP STARTP1 PA EQU 0FFD8H PCTL EQU 0FFDBH STARTP1:MOV DX,PCTL MOV AL,80H OUT DX,AL P11: MOV AL,00H MOV DX,PA OUT DX,AL MOV CX,8000H LL: LOOP LL MOV AL,0FFH OUT DX,AL MOV CX,8000H LLL: LOOP LLL JMP P11 CODE ENDS END H1

实验二 8255A并行口实验(二)

一.实验目的

掌握8255A芯片和微机的接口方法,以及8255A的简单工作方式和编程原理。

二.实验内容

本实验要求利用8255A将逻辑电平开关K1~K8的开关状态反映在实验仪的发光二极管上。

三.实验原理

本实验是对8255A方式0的简单应用,即将逻辑电平开关K1~K8的状态通过8255A的A口输入,并由B口输出至实验仪的发光二极管上。

1.硬件线路连接

(1) 8255A芯片A口的PA0~PA7依次和开关量输入端K1~K8相连; (2) 8255A芯片B口的PB0~PB7依次和发光二极管L1~L8。 2.编程提示

(1) 实验仪上的逻辑电平开关K1~K9,其开关上拨,输出低电平“0”;开关下拨,输出高电平“1”。

(2) 实验仪上的发光二极管L1~L12显示时,其输入端为低电平“0”时,发光二极管点亮;其输入端为高电平“1”时,发光二极管熄灭。

四.实验步骤

1.连好实验硬件线路; 2.脱机实验

(1)在实验仪的命令提示符“P.”下,输入程序的固化地址32E0,按EXEC键;

(2)实验仪的显示器上显示“┏”表示程序已运行,拨动开关,发光二极管也会随着亮灭。

2.联机实验

在C:\\Dais\\asm88路径下可以找到本实验的源程序HE2.asm,当然也可以自行编写。将源程序编译、连接后传送至实验仪,执行。

五.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 32E0H PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH H2: MOV DX,PCTL MOV AL,90H OUT DX,AL P2: MOV DX,PA IN AL,DX INC DX OUT DX,AL JMP P2 CODE ENDS END H2

实验三 定时器/计数器(一)

一.实验目的

掌握8253芯片方式1(硬件可重复触发的单脉冲发生器)的工作原理和编程方法。

二.实验内容

本实验要求通过硬件连接和软件编程的配合,使8253芯片的通道2工作于方式1下,验证其工作过程并观察实验结果。

三.实验原理

方式1是硬件可重复触发的单脉冲发生器,初始化设置完毕后,当GATE2端出现上升沿的触发脉冲时,计数开始,同时输出变为低电平,一次计数结束后,输出恢复高电平,直到下次触发脉冲的到来。

本实验以AN按钮的SP提供的上升沿脉冲作为计数触发信号,当按下AN按钮时,计数通道开始计数,同时可在输出端的示波器上看到实验结果。

1.硬件线路连接:

(1) 8253的GATE2接AN按钮的SP插孔,用于提供计数激励脉冲。 (2) 8253的CLK2接实验仪上的分频器74LS393的T2输出端。

分频器74LS393(U47)的作用是将系统提供的时钟频率降低,以满足实验需要。它有两类引脚:一是脉冲输入端A,接系统提供的4.9152MHz的时钟;二是8个输出T0~T7,不同的输出得到的分频结果也不同,下标越大分频倍率越大,也就是说从T3孔输出的频率比T2输出的小。

(3) 8253的OUT2接示波器或逻辑示波器,以观察输出结果。 (4) 8253的CS片选端连接译码器的Y0输出。

(5) 8253的数据总线D0~D7连于系统总线的D0~D7的数据接口。 (6) 74LS138译码器的地址输入ABC端分别与系统地址总线的A2A3A4连接。

(7) 74LS138译码器的使能信号G与系统总线旁的G端连接。 2.编程提示:

8253计数通道的初始化编程包括两个内容:一个是设置工作方式控制字,一个是设置计数初值。计数初值可以自己设置(例如1000H),要注意:该计数初值要设置得合适,如果太大的话,会导致输出低电平的时间太长,不利于观察;当然反之计数初值设置太小也是不恰当的,具体数据可以在做实验时尝试改变。

本实验中以8253的通道2为例,使之工作于方式1,产生负脉冲。当然也可以使用计数通道0。但不能使用通道1,实验仪上通道1的GATE1和CLK1引脚都已连接,其中GATE1接高电平,CLK1接1.8432MHz的时钟,该通道用于8251串口实验中提供数据的收发时钟,用户若使用则不可更改输入端的连接,只能使用其固定的输出。通道0和通道2用户可以自由使用。

3.实验结果:

当该实验程序运行时,实验仪的LED显示器上有“┏”的显示,注意,这并不实验所要的结果,它只是为了标示实验类型而在程序中通过显示子程序来完成的部分。实验真正的结果是要观察连在OUT2端的示波器的显示情况,可以看到OUT2端输出产生一个指定宽度的负脉冲(宽度由计数初值决定)。

4.实验程序流程框图:

开 始 初始化8253的通道2(设置命令字和计数初值) 硬件启动8253 观察输出 注意:本实验所使用的方式1为硬件触发的计数方式,不要将GATE2接+5V,而要接系统的触发脉冲。

四.实验步骤

1.连接好实验线路。

2.本实验没有脱机实验部分。 3.联机实验

联机环境下自行编写源程序,并将源程序编译、连接后传送至实验仪,执行。

五.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3490H START: MOV DX,0FFE3H MOV AL,0B2H OUT DX,AL MOV DX,0FFE2H MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL JMP $ CODE ENDS

END START

实验四 定时器/计数器(二)

一.实验目的

理解和掌握8253芯片方式3(方波发生器)的工作原理和编程方法。

二.实验内容

本实验要求通过硬件连接和软件编程的配合,使8253芯片的通道0工作于方式3下,验证其工作过程并观察其输出波形。

三.实验原理

方式3是方波发生器,由于本实验中门控信号GATE0始终接高电平,则在完成计数通道0的初始化操作后,即可以在示波器上看到方波的输出,具体方波的频率取决于初始化设置中的计数初值。

1.硬件线路连接

(1)8253的GATE0接+5V。

(2)8253的CLK0接实验仪上的分频器74LS393的T2输出端。 (3)8253的OUT0接示波器,查看结果。 (4)8253的CS片选端连接译码器的Y0输出。

(5)8253的数据总线D0~D7连于系统总线的D0~D7的数据接口。 (6)74LS138译码器的地址输入ABC端分别与系统地址总线的A2A3A4连接。 (7)74LS138译码器的使能信号G与系统总线旁的G端连接。 2.编程提示

8253初始化编程包括两个内容:一个是设置工作方式控制字,一个是设置计数初值。计数初值可以自己设置(例如1000H),要注意:该计数初值要设置得合适,如果太小或太小,会影响实验结果的观察。

本实验也可以使用计数通道2。

3.实验流程框图如右图

开 始 初始化8253的通道0 (设置命令字和计数初值) 观察结果 四.实验步骤

1.连接好实验线路。 2.脱机实验

(1)在实验仪的命令提示符“P.”下,输入程序的固化地址3490,按EXEC键;

(2)实验仪的显示器上显示“┏”表示程序已运行,此时用实验系统中的逻辑示波器测试8253的OUT0输出端观察是否有方波产生。

3.联机实验

在C:\\Dais\\asm88路径下可以找到本实验的源程序ha9.asm,当然也可以自行编写。将源程序编译、连接后传送至实验仪,执行。

五.思考问题

如果GATE0不是固定地接高电平,则会对当前计数过程有何影响?试用其他信号,比如开关K的输出或通道2的某种工作方式下的输出等,作为当前计数的GATE0信号,观察实验结果。

六.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3490H

START: MOV DX,0FFE3H MOV AL,036h OUT DX,AL MOV DX,0FFE0H MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL JMP $ CODE ENDS END START

实验五 定时器/计数器(三)

一.实验目的

进一步理解和掌握8253芯片各种方式的工作原理和编程方法,并能灵活运用于实际。

二.实验内容

本实验要利用8253设计一个可以输出连续波形的定时器,要求连续波形中每5秒钟输出一个负脉冲。

三.实验原理

实验要求的连续波形中每5秒输出一个负脉冲,需要计数通道采用方式2工作,且输出波形周期为5秒。当前实验环境提供的外部时钟频率分频器T2的输出,其频率为614.4KHz,则可以计算计数初值为307200,这样的初值远远大于16位计数通道所能计数的最大值65536,因此,本实验中的定时器需要采用两级计数的方式,即采用两个计数通道,通道0工作于方式3,用于降低系统时钟频率;通道2工作于方式2,用于产生最终的输出波形。

1.硬件线路连接:

(1) 8253的GATE0端和GATE2端接+5V。 (2) 8253的CLK0端接分频器的T2输出端。 (3) 8253的OUT0端接CLK2端。 (4) 8253的OUT2端接示波器。

(5) 8253的CS片选端连接译码器的Y0输出。 (6) 8253的数据总线D0~D7连于系统总线的D0~D7的数据接口。

(7) 74LS138译码器的地址输入ABC端分别与系统地址总线的A2A3A4连接。 (8) 74LS138译码器的使能信号G与系统总线旁的G端连接。

2.编程提示:

实验程序中需要分别初始化8253的通道0和通道2,对于这两个通道进行工作方式命令字的设置和计数初值的装入。前面已经知道,原始的外部时钟频率为614.4KHz,最终要产生的是5秒周期的连续波形,则不论采用几级计数,最终输出波形的每个周期(每个5秒)中必定包含5× fCLK=5 ×614.4× 103=3.072×106个原始的时钟周期。这里采用两级计数,只是将3.072×106个原始的时钟周期分作两部分计数,设通道0的计数初值为N0、通道2的计数初值为N2,则N0×N2=3.072×106,由此式可以得出N0和N2的各种不同取值,本实验取N0=30,720,N2=100。

3.实验结果:

本实验的实验结果是示波器上的波形显示,本实验的结果要仔细观察,实验程序运行时可以看到输出保持高电平,每隔5秒出现一个负脉冲。

4.实验流程框图:

开 始 初始化8253的通道0(工作方式字和计数初值) 初始化8253的通道2(工作方式字和计数初值) 观察结果 结 束 四.实验步骤

1.连接好实验线路。

2.本实验没有脱机实验部分。 3.联机实验

联机环境下自行编写源程序,并将源程序编译、连接后传送至实验仪,执行。

五.思考问题

1. 通道0和通道2的计数初值如果改变,会不会影响本实验的结果?如果会,则会产生什么样的影响?

2. 如何使实验结果更容易观察?

六.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3490H START: MOV DX,0FFE3H MOV AL,036H OUT DX,AL MOV DX,0FFE0H MOV AX,30720 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0FFE3H MOV AL,094H OUT DX,AL MOV DX,0FFE2H MOV AL,100 OUT DX,AL JMP $ CODE ENDS END START

实验六 中断控制器8259A单级中断

一.实验目的

理解和掌握8259A中断控制器的单片使用,单级中断时的工作原理和编程应用方法。

二.实验内容

本实验采用8259A的IR7中断,以边沿触发的方式,将AN按钮的SP所产生的上升沿作为中断源,每按一次AN按钮产生一次中断,在实验仪的LED显示器上显示“7”,当中断满7次时,显示“P.”。

三.实验原理

1.硬件线路连接

(1) 8259A的7号中断IR7插孔与AN按钮的SP插孔相连。 (2) 8259A的CS#端连于138译码器的Y0#。

(3) 74LS138译码器的地址输入ABC端分别与系统地址总线的A2A3A4连接。 (4) 74LS138译码器的使能信号G与系统总线旁的G端连接。

(5) 8259A的单元总线接口D0~D7与数据总线单元D0~D7的任一接口相连。 2.编程提示

(1) 系统硬件连接所决定的中断向量地址与中断源引脚之间的关系如下表:

中断源引脚 向量地址 IR0 20H IR1 IR2 24H 28H IR3 2CH IR4 30H IR5 34H IR6 38H IR7 3CH (2) 在进行8259A的应用编程时,需要写的是主程序和中断服务程序两部分。主程序主要完成8259A的初始化和中断向量、开中断、等待中断等工作,而中断服务程序是要完成特定的工作,比如在本实验中需要进行显示中断次数,判断中断次数是否到达要求的工作。

(3) 主程序中,要写IR7的中断向量,即将中断服务程序的段地址和偏移地址写到中断向量表的适当位置上。由前面的中断源和中断向量地址的关系表中可以看到,本实验中所需要使用的7号中断(IR7)的中断向量地址是3CH,故中断向量需要写入中断向量表的3CH~3FH这四个单元中。

(4) 主程序中初始化8259A需要设置IR7的ICW1、ICW2、ICW4以及OCW1四个命令字。其中ICW2用于设置对应中断源的中断类型号n的高5位。该实验仪并没有说明中断源与中断类型号n的关系,如何来设置ICW2呢?前面表中可以得到中断源IR7的中断向量地址为3CH,而中断类型号n和中断向量地址的关系是:n*4=中断向量地址。故n*4=3CH,则n=0FH,由此可以得到ICW2应设置为08H。在完成IR7的ICW1、ICW2、ICW4设置后,只需设置一个OCW1,用于表示当前8259A所连接中断源的情况,将IR7中断允许,其他的引脚屏蔽。

(5) 中断服务程序的最后要有IRET指令以执行中断返回。而且在中断返回之前一定要使用命令字OCW2向8259A发回中断结束EOI命令,以清除ISR中的相应位,这里可以使用一般E0I命令方式,也可以采用特殊EOI命令方式。

(6) LED显示器上的数据显示问题。该实验仪上的七段数码管显示管是共阳极的,也就是0点亮,1熄灭。向数码管的数据端送入对应的显示代码即可完成数据的显示。

程序的数据段中有LED数据表的定义,其中

0C0H,0F9H,0A4H,0B0H,

初始显示“P.” 关中断 主程序

99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H,它们分别是“0”~“F”、“”(不显示)、“P.”、“┌”、“┘”的显示代码。程序中需要LED显示时,通过查表的方式获取显示代码。

3.实验主程序框图如右图所示

设置IR7的中断向量 初始化8259A 开中断,等待中断

四.实验步骤

1.连接好实验硬件线路; 2.脱机实验:

在系统处于命令提示符“P.”状态下,输入3400,按EXEC键显示“P.”,按动AN按钮,LED数码管从最高位开始依次显示“7”,显示满六位后,最高位显示“P.”继续等待中断。

3.联机实验:

在C:\\Dais\\asm88路径下可以找到本实验的源程序he8.asm,当然也可以自行编写。将源程序编译、连接后传送至实验仪,执行。

五.思考问题

1.若将8259A的片选CS#端连接在138译码器的Y0#输出端,则应如何更改程序?

2.若将中断源改为IR5,则如何更改连接和程序才能实现同样的功能?

六.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH ZWK EQU 0FFDDH ;显示代码数据区

LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,? Port0 EQU 0FFE0H Port1 EQU 0FFE1H

;字形口 ;字位口

;存放显示数据 ;8259A的端口地址

;主程序 P8259: CLI

CALL WP ;初始化显示“P.” MOV AX,OFFSET INT8259 ;设置中断向量 MOV BX,003CH MOV [BX],AX MOV BX,003EH MOV AX,0000H MOV [BX],AX CALL FOR8259 mov si,0000h STI

CON8: CALL DIS JMP CON8 ;中断服务程序 INT8259:cli

MOV BX,OFFSET BUF

MOV BYTE PTR [BX+SI],07H INC SI CMP SI,0007H JZ X59

XX59: MOV AL,20H

MOV DX,Port0 OUT DX,AL mov cx,0050h xxx59: push cx call dis pop cx loop xxx59

的初始化设置 设置计数值为0 开中断

关中断

将显示数据存放于BUF

若满7次,则转向X59 未满7次,则发EOI命令

延时,调用显示程序,显示“7”;;;8259A;;;;;

pop cx mov cx,3438h push cx STI IRET

X59: MOV SI,0000H CALL WP JMP XX59

;============================== FOR8259:MOV AL,13H MOV DX,Port0 OUT DX,AL MOV AL,08H MOV DX,Port1 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,7FH OUT DX,AL RET

;---------------------------

WP: MOV BUF,11H ;初始化显示“P.” MOV BUF+1,10H MOV BUF+2,10H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RET ;显示子程序

;OCW1

;ICW4

;ICW2

;ICW1

;调用WP,显示“P.”

DIS: MOV CL,20H MOV BX,OFFSET BUF DIS1: MOV AL,[BX] PUSH BX

MOV BX,OFFSET LED XLAT

POP BX MOV DX,ZXK OUT DX,AL MOV AL,CL MOV DX,ZWK OUT DX,AL

PUSH CX MOV CX,0100H

DELAY: LOOP $ POP CX CMP CL,01H JZ EXIT INC BX SHR CL,1 JMP DIS1 EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RET

;-------------------------- CODE ENDS END H8

;从LED中获取显示字形

;显示字位,从最高位开始显示

;延时

实验七 8255A与8259A综合控制实验

一.实验目的

进一步熟悉8255A和8259A的使用方法,并能综合应用于各种领域。

二.实验内容

本实验要求以中断的方式点亮发光二极管,其中脉冲发生器AN按钮产生的SP上升沿作为中断源,由8259A管理中断,在中断服务程序中由8255A输出并行数据以点亮发光二极管。

三.实验原理

本实验将8255A和单片8259A配合使用,使8259A管理中断,进行中断操作,并利用8255A的并行数据传送端口控制发光二极管的点亮。这里任意选取1个逻辑电平开关作为IR7的中断源。采用上升沿触发的中断请求方式;当有中断请求时,经过8259A判断处理决定响应该一中断,则执行其对应的中断服务程序,在中断服务程序中使发光二极管闪烁(即点亮-熄灭的循环)16次,然后中断返回。

1.硬件线路连接:

(1) 8259A的7号中断IR7插孔与AN按钮的SP插孔相连。 (2) 8259A的CS#端连于138译码器的Y0#。

(3) 74LS138译码器的地址输入ABC端分别与系统地址总线的A2A3A4连接。 (4) 74LS138译码器的使能信号G与系统总线旁的G端连接。

(5) 8259A的单元总线接口D0~D7与数据总线单元D0~D7的任一接口相连。 (6) 8255A的PA0接某发光二极管。 2.编程提示:

(1) 本实验程序应该包括主程序和IR7中断服务程序。主程序完成中断向量的设置、8255A和8259A的初始化、开中断、等待中断等工作;中断服务程序中完成发光二极管的闪烁工作。

(2) 中断服务程序的中断返回之前,一定要使用OCW2发回EOI命令,否则IR7的中断服务只能执行一次。可以使用一般EOI命令,也可以使用特殊EOI命令来复位8259A芯片内部的中断服务寄存器ISR中的对应位。

四.实验步骤

1.连好实验硬件线路;

2.由于本实验是自设计使用,没有脱机运行程序;

3.进入联机工作环境,自行编写实验源程序,编译、连接后传送至实验仪,执行、调试。

五.思考问题

1. 若采用两个中断源,则应如何修改该实验的硬件连接和软件编程?并观察中断嵌套现象。

2. 试使用8255A方式1下的INTR请求作为中断源完成该实验,观察是否能够达到同样的实验效果?

六.参考实验程序清单

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 Port0 EQU 0FFE0H Port1 EQU 0FFE1H PA EQU 0FFD8H PCTL EQU 0FFDBH P8259: CLI

MOV AX,OFFSET INT7 MOV BX,003CH

MOV [BX],AX MOV BX,003EH MOV AX,0000H MOV [BX],AX CALL FOR8259 STI CON8: JMP CON8 ;IR7的中断服务程序 INT7: cli MOV BX,10H P11: MOV AL,00H MOV DX, PA OUT DX,AL MOV CX,8000H LL: LOOP LL MOV AL,0FFH OUT DX,AL MOV CX,8000H LL1: loop LL1 DEC BX JNZ P11 MOV DX,PORT0 MOV AL,20H OUT DX,AL STI IRET

;8255A和8259A的初始化程序 FOR8259:

MOV DX, PCTL

MOV AL,80H OUT DX,AL MOV AL,13H MOV DX,Port0 OUT DX,AL MOV AL,08H MOV DX,Port1 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,7FH OUT DX,AL RET CODE ENDS END H8

;8255A与8259A的配合使用,采用两个中断源,观察中断嵌套现象 ;增加IR5的中断源,使用逻辑开关作为中断源,逻辑开关由下拨到上产生上升沿,IR5的中断服务程序中控制由PB0控制不同颜色的发光二极管点亮。

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 Port0 EQU 0FFE0H Port1 EQU 0FFE1H PA EQU 0FFD8H PB EQU 0FFD9H PCTL EQU 0FFDBH P8259: CLI

MOV AX,OFFSET INT7 MOV BX,003CH MOV [BX],AX MOV BX,003EH MOV AX,0000H MOV [BX],AX

MOV AX,OFFSET INT5 MOV BX,0034H MOV [BX],AX MOV BX,0036H MOV AX,0000H MOV [BX],AX CALL FOR8259 CON8: STI JMP CON8 ;IR7的中断服务程序 INT7:

PUSH BX PUSH CX PUSH AX PUSH DX STI MOV BX,10H P11: MOV AL,00H MOV DX,PA OUT DX,AL MOV CX,8000H LL: LOOP LL MOV AL,0FFH

;IR7的中断向量设置

;IR5的中断向量设置

OUT DX,AL MOV CX,8000H LL1: LOOP LL1 DEC BX JNZ P11 MOV DX,PORT0 MOV AL,67H OUT DX,AL POP DX POP AX POP CX POP BX IRET ;IR5的中断服务程序 INT5: STI PUSH BX PUSH CX PUSH AX PUSH DX MOV BX,10H P111: MOV AL,00H MOV DX,PB OUT DX,AL MOV CX,8000H LL12: LOOP LL12 MOV AL,0FFH OUT DX,AL MOV CX,8000H LL11: LOOP LL11

DEC BX JNZ P111 MOV DX,PORT0 MOV AL,65H OUT DX,AL POP DX POP AX POP CX POP BX IRET

;============================== FOR8259:

MOV DX,PCTL MOV AL,80H OUT DX,AL MOV AL,13H MOV DX,Port0 OUT DX,AL MOV AL,08H MOV DX,Port1 OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,5FH OUT DX,AL RET CODE ENDS END H8

实验八 8253与8259A的模拟时钟实验

一.实验目的

理解和掌握8259A与8253配合使用的工作原理和编程应用方法。

二.实验内容

本实验使用8253工作于方式2,设定周期为1秒,输出连续的脉冲信号作为8259A的中断源,每次中断更新LED显示器的数据显示,以1秒为单位轮流显示1~6,不断重复。

三.实验原理

1.硬件线路连接

(1)8253的GATE0接+5V。

(2)8253的CLK0接实验仪上的分频器74LS393的某输出端。 (3)8253的OUT0接8259A的5号中断IR5插孔。 (4)8253的CS#片选端连接译码器的Y0#输出。 (5)8259A的CS#片选端连接译码器的Y1#输出。

(6)8253的数据总线D0~D7连于系统总线的D0~D7的数据接口。 (7)8259A的数据总线D0~D7连于系统总线的D0~D7的数据接口。 (8)74LS138译码器地址输入ABC端分别与系统地址总线的A2A3A4连接。 (9)74LS138译码器的使能信号G与系统总线旁的G端连接。 2.编程提示

(1) 主程序中要完成8259A、8253的初始化和中断向量、开中断、等待中断等工作;中断服务程序要完成时间的显示,时间变量的刷新,及相关的8259A操作。

(2) 要求8253输出的连续脉冲的周期为1秒,若要简化定时,则可使用分频器的T6(38.4Hz)输出作为其时钟输入,则计数初值为38400。

(3) 时间的显示,可以设置时间变量time,初始值为0,在中断服务程序中对该值进行判断,决定是否要归零或加1显示。使用该时间变量查LED显示代码表,获取对应的显示代码,送LED显示器显示。

四.实验步骤

1.连接好实验硬件线路; 2.联机实验:

在微机实验环境中自行编写源程序,编译、连接后传送至实验仪,执行,查看实现效果。

五.思考问题

试用8255A增加对计时启停的控制功能。

提示:假定采用PA0连接逻辑开关,PB0连接8253的GATE门控端,在实验程序中增加对8255A的控制部分。在实验程序运行时,当逻辑电平开关下拨,为高电平时,LED数码管显示器上开始循环显示1~6的计时结果;当逻辑电平开关上拨,为低电平时,LED数码管显示器上的时间显示不再改变,停止计时。

六.参考实验程序清单

代码1:未作启停控制的源代码 CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH ZWK EQU 0FFDDH

LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,?

time db 0

;时间显示变量 ;8259端口地址

Port0 EQU 0FFE4H Port1 EQU 0FFE5H P8259: CLI

CALL WP ;初始化显示“P.”

MOV AX,OFFSET INT8259 ;设置中断向量 MOV BX,0034H MOV [BX],AX MOV BX,0036H MOV AX,0000H MOV [BX],AX CALL FOR825953 mov si,0000h STI CON8: CALL DIS JMP CON8

;------------------------------------ INT8259:cli

cmp time,7 jne ll mov time,0 ll: inc time

;显示不归0,则加1

;判断是否要重新循环显示

;初始化8259A和8253芯片

MOV BX,OFFSET BUF mov al,time

MOV BYTE PTR [BX+SI],al INC SI CMP SI,0007H JZ X59 XX59: MOV AL,20H

;EOI命令

MOV DX,Port0 OUT DX,AL mov cx,0050h xxx59: push cx MOV CL,20H call dis pop cx loop xxx59 pop cx mov cx,3438h push cx STI IRET

X59: MOV SI,0000H CALL WP JMP XX59

;============================== FOR825953:

MOV AL,13H MOV DX,Port0 OUT DX,AL

MOV AL,08H MOV DX,Port1 OUT DX,AL

MOV AL,09H OUT DX,AL

MOV AL,0dFH OUT DX,AL

MOV DX,0FFE3H

初始化8253

;OCW1 ;

;ICW4

;ICW2

;ICW1

MOV AL,36H OUT DX,AL MOV DX,0FFE0H MOV AX,38400 OUT DX,AL MOV AL,AH OUT DX,AL RET

;---------------------------

WP: MOV BUF,11H ;初始化显示“P.” MOV BUF+1,10H MOV BUF+2,10H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RET

;-------------------------------- DIS: MOV CL,20H MOV BX,OFFSET BUF DIS1: MOV AL,[BX] PUSH BX

MOV BX,OFFSET LED XLAT POP BX MOV DX,ZXK OUT DX,AL MOV AL,CL MOV DX,ZWK OUT DX,AL

PUSH CX MOV CX,0100H DELAY: LOOP $ POP CX CMP CL,01H JZ EXIT INC BX SHR CL,1 JMP DIS1 EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RET

;-------------------------- CODE ENDS END H8

代码2:加上启停控制的源代码 CODE SEGMENT

ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH ZWK EQU 0FFDDH

LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,? time db 0

;时间显示变量 ;8259端口地址

Port0 EQU 0FFE4H

Port1 EQU 0FFE5H PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH P8259: CLI

CALL WP

;初始化显示\

;8255端口地址

MOV AX,OFFSET INT8259 ;设置中断向量 MOV BX,0034H MOV [BX],AX MOV BX,0036H MOV AX,0000H MOV [BX],AX CALL FOR825953 mov si,0000h STI CON8: CALL DIS mov dx,pa in al,dx inc dx out dx,al JMP CON8

;------------------------------------ INT8259:cli

cmp time,7 jne ll mov time,0 ll: inc time

;显示不归0,则加1

;判断是否要重新循环显示

;初始化8259A、8253、8255芯片

MOV BX,OFFSET BUF

mov al,time

MOV BYTE PTR [BX+SI],al INC SI CMP SI,0007H JZ X59 XX59: MOV AL,20H

MOV DX,Port0 OUT DX,AL mov cx,0050h xxx59: push cx MOV CL,20H call dis pop cx loop xxx59 pop cx mov cx,3438h push cx STI IRET

X59: MOV SI,0000H CALL WP JMP XX59

;============================== FOR825953:

MOV AL,13H MOV DX,Port0 OUT DX,AL

MOV AL,08H MOV DX,Port1

;EOI命令

;ICW1

OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0dFH OUT DX,AL

;ICW2

;ICW4

;OCW1 ;初始化8253

MOV DX,0FFE3H MOV AL,36H OUT DX,AL MOV DX,0FFE0H MOV AX,38400 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,PCTL MOV AL,90H OUT DX,AL RET

;初始化8255

;---------------------------

WP: MOV BUF,0H ;初始化显示\ MOV BUF+1,10H MOV BUF+2,10H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RET

;-------------------------------- DIS: MOV CL,20H MOV BX,OFFSET BUF DIS1: MOV AL,[BX]

PUSH BX

MOV BX,OFFSET LED XLAT POP BX MOV DX,ZXK OUT DX,AL MOV AL,CL MOV DX,ZWK OUT DX,AL PUSH CX MOV CX,0100H DELAY: LOOP $ POP CX CMP CL,01H JZ EXIT INC BX SHR CL,1 JMP DIS1 EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RET

;-------------------------- CODE ENDS END H8

本文来源:https://www.bwwdw.com/article/2g98.html

Top