您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页东华大学微机硬件实验

东华大学微机硬件实验

来源:五一七教育网
实验1 存储器读写实验

一、实验目的

1.掌握PC机外存扩展的方法。 2.熟悉62芯片的接口方法。 3.掌握8086十六位数据存储的方法 。

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。

四、实验原理介绍

本实验用到存储器电路

五、实验步骤和要求

1、实验接线:本实验无需接线。 2、编写调试程序

3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。 本实验的主要目的是学会用使用工具软件,掌握用单步执行和断点方式运行程序, 观察寄存器和内存中的数据变化等程序调试的手段。

六、实验提示

1、RAM区的地址为02000H,编程时可将段地址设为0100H,则偏移地址为1000H。 2、如果按字节进行存储,则AL为55H或AAH;如果按字进行存储,则AX应为55AAH。 3、62、62256等是计算机系统扩展中经常用到的随机存储器芯片(RAM),主要用 作数据存储器扩展。

七、思考题

1、 单步执行到“intram”标号的语句时,ds寄存器的数据是什么?

答:DS寄存器的数据为0100。

2、 采用断点方式运行时执行到第一个断点处,2000H~202FH内存单元的数据是什么?

答:2000H~202FH内存单元的数据全为0。

3、 执行到第二个断点处,2000H~200FH内存单元的数据是什么?

答:2000H~200FH内存单元的数据为AA和55交替出现。

4、 并根据观察结果和对源程序的判读简述源程序的运行效果。

答:程序首先将数据段的地址设为0100H,则基址为1000H,然后将SI设为1000H,则物理地址即为2000H,因为要连续给100H个字节写数据,用循环比较方便,给将CX设为100H,用LOOP循环。首先都写0,然后再写所要的值,仍然用循环。

程序运行到第一个断点,将02000H-020FFH的空间都写为0。运行到第二个断点,将偶

地址写入AA,奇地址写55。

5、 修改程序,实现从2000H到200FH单元依次赋值00H~0FH的功能。 程序流程图:

开始初始化DS,SI,AL置循环次数,CX=0FH代码: CODE SEGMENT

ASSUME CS:CODE ORG 100H

START:MOV AX, 0100H MOV DS, AX

MOV ES, AX MOV SI, 1000H MOV CX, 0010H MOV AL, 00H LP1:MOV [SI], AL

INC SI INC AL

LOOP

LP1

CODE

ENDS

END START

运行结果:

目标单元置数SI++,AL++N CX=0 ?Y结束

;设置数据段、附加端地址 ;偏移地址1000H ;循环次数16次 ;初始值0 ;偏移地址加1 ;置数加1

;CX!=0,继续循环

八、遇到问题与调试

在调试中我们开始将程序循环置数中的目的操作数写为AX,导致得到结果和我们所预期的不同,经过我们的研究,发现目的操作数应为单字节数,即改为AL,经过修改后,得到的结果和要求一致。

实验2 简单I/O口扩展实验

一、实验目的

1、 熟悉74LS273,74LS244的应用接口方法。

2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。

四、实验原理介绍

本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。

五、实验步骤

1、实验接线:(表示相互连接)

CS0 CS244; CS1CS273; 平推开关的输出K1~K8  IN0~IN7(对应连接); O0~O7LED1~LED8。

2、编辑程序,单步运行,调试程序

3、调试通过后,全速运行程序,观看实验结果。 4、编写实验报告。

六、实验提示

74LS244或74LS273的片选信号可以改变,例如连接CS2,此时应同时修改程序中相应的地址。

七、实验结果

程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。、 外围接线原理图:

九、思考题:

将74LS244的片选信号CS244改接CS2,将74LS273的片选信号CS273改接CS3,修改程序实现与范例程序相同的功能。

程序流程框图:

开始

初始化读输入至AL输出AL结束 代码:

CODE

SEGMENT

ASSUME CS:CODE ORG 100H

;CS2,对应的是C,74244 ;读入数据

;CS3,对应的是D,74273 ;状态输出

IN AL, DX OUT DX, AL JMP START

ENDS

START: MOV DX, 04C0H

MOV DX, 04D0H

CODE

END START

本实验比较简单,只需改变入口和出口地址,以及改变外部连线即可,没有遇到太大问题。

实验3 8255并行口实验

一、实验目的

掌握8255A的编程原理。

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

8255A的A口作为输入口,与逻辑电平开关相连。8255A的B口作为输出口,与发光二极管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。

四、实验原理介绍

本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。

五、实验步骤

1、实验接线

CS0CS8255; PA0~PA7 平推开关的输出K1~K8; PB0~PB7发光二极管 的输入LED1~LED8。

2、编程并全速或单步运行。

3、全速运行时拨动开关,观察发光二极管的变化。当开关某位置于L时,对应的发 光二极管点亮,置于H时熄灭。

六、实验提示

8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。实验中,8255A工作于基本输入输出方式(方式0)。

七、实验结果

程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:

K2置于L位置,则对应的LED2应该点亮。

八、思考题:

修改接线CS2CS8255,并要求开关置“H”(下)位置时对应LED亮,修改程序实现相应功能。 程序流程图:

代码: CODE SEGMENT

ASSUME CS:CODE ORG 100H

START: MOV DX, 04C6H MVO AX, 90H OUT DX, AX BEGIN: MOV DX, 04C0H IN AX, DX NOT AX

MOV DX, 04C2H OUT DX, AX JMP BEGIN

CODE

ENDS

END START

开始设置8255工作方式读A口输出至B口结束

;CS2,对应的是C,8255写控制 字A1A0 = 11,最 ; 低位没有用到,所以是6,综合起来:04C6H ;1001 0000,A口输入,方式0,B口输出,方式0,

; C口输出 ;A1A0 = 0,A口地址 ;状态取反,达到设计要求 ;B口A1A0 = 1 ;状态输出

;跳转到BEGIN,继续读A口状态,输出到B口

九、遇到问题与调试

现象:开关怎么推,LED灯的状态都不改变。

分析:经过仔细认真的检查,发现把CS8255A接到了CS2,但是程序中没有做修改。 解决方法:将程序中8255的地址改为04C0H后,一切恢复正常。在实现电平开关为高电平时LED亮,对保存电平开关的AX取反,就能达到目的。

实验4 8253定时器/计数器接口实验

一、实验目的

掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。

二、实验设备

微机实验箱、8086CPU模块、示波器。

三、实验内容

了解8253计数器的不同工作方式,掌握其初始化控制字对定时/记数效果的影响。

四、实验原理介绍

本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路

五、实验步骤

1、实验连线:

CS0CS8253 OUT08253CLK2 OUT2LED1 OUT1LED2 CLK38253CLK0,CLK38253CLK1 2、编程调试程序

3、全速运行,观察实验结果

六、实验提示

8253是计算机系统中经常使用的可编程定时器/计数器,其内部有三个相互的

计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。实验中,T0、T1的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10=0.05s)。T2采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。

-6

七、实验结果

程序全速运行后,LED1按一定周期闪烁(周期理论值为0.2s),LED2在高频脉冲信号(约15KHz)影响下,有微弱的光亮,但无明显的周期变化现象。

八、思考题:

1、为什么说范例程序运行时LED1闪烁周期的理论值是0.2秒?

答: T0、T1的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(即为十进制的37500),则OUT0输出的方波周期为(37500*4/3*10=0.05s).T2采用OUT0的输出为时钟,则本程序初值n被设为04,本程序OUT2控制LED1,则OUT2输出方波周期为n*0.05s=0.2s,所以范例程序运行时LED1闪烁周期的理论值是0.2秒。

2、在范例程序设置LED2的最大闪烁周期是多少?请分析说明。

答: T1初值为32H(十进制的50)频率为750K/50 = 15KHz,方波周期为0.067ms。 如果将计数初值设为最大即0000H,即十进制65536,65536/750=87.38ms,所以最大闪 烁周期可以为87.38ms。

3、修改片选信号接线使CS1和CS8253连接,并要求LED1的闪烁周期变为4秒(2秒,灭2秒),修改程序实现功能。 程序流程图:

开始-6

写T0方式控制字写T0计数初值写T1方式控制字写T1计数初值写T2方式控制字写T2计数初值结束

代码: CODE

SEGMENT PUBLIC

ASSUME CS:CODE ORG 100H

;CS1对应的是B,A1A0 = 11B,写控制字 ;0011 0110 计数器0,方式3 ;写计数初值,计数0,A1A0 = 00B

;计数初值92C7,37500,时钟频率750K,则输出为20Hz

MOV AX, 36H MOV AX, 7CH OUT DX, AX MOV AX, 92H OUT DX, AX MOV AX, 76H OUT DX, AX MOV DX, 04B2H MOV AX, 32H OUT DX, AX MOV AX, 0 OUT DX, AX MOV DX, 04B6H MOV AX, 0B6H OUT DX, AX MOV DX, 04B4H MOV AX, 50H OUT DX, AX MOV AX, 0 OUT DX, AX NOP

ENDS END START

;计数器2初值写入完毕

;A1A0 = 10B

;计数初值80,80*0.05 = 4s

;计数器2,方式3

;计数器1初值写入完毕

;A1A0 = 01B ;计数初值50

;计数器0初值写入完毕 ;计数器1,方式3

MOV DX, 04B6H

START: MOV DX, 04B6H

MOV DX, 04B0H

CODE

九、遇到问题与调试

现象:改变计数初值,LED灯的闪烁周期不改变。

分析:计数初值没有写到8253里面。

解决方法:认真分析程序,找到疏漏的地方,发现有行代码被注释掉了,所以无论怎

么改变计数初值,LED的闪烁周期都不改变,调整程序后,成功运行。

实验5 8259中断控制器实验

一、实验目的

1、掌握8259A的工作原理。 2、掌握编写中断服务程序方法。 3、掌握初始化中断向量的方法。

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

了解中断处理的原理,掌握利用中断控制器进行中断申请和中断操作的方法。

四、实验原理介绍

本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。

五、实验步骤

1、实验接线

CS0 CS8259 CS3 CS273 O0~O3LED1~LED4 K1~K4IR0~IR3 INTINT( 8086CPU板) INTAINTA(8086CPU板)

2、编译调试程序

3、全速运行程序,拨动某一电平开关,观察LED的亮灭情况。

六、实验提示

1、8259的使用说明请详细阅读教科书。

2、8086的中断系统是向量中断方式。内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量(中断入口地址)。不同中断类型的中断向量在表内有对应的偏移地址,其计算方法是:中断类型*4。

3、中断类型由8259通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序。请仔细研读8259的工作时序。

4、中断类型的高5位由8259寄存器ICW2决定,低3位由中断源IRx的编码自动填

入。IR0~IR7的编码分别为000,001,010,011,100,101,110,111。

七、实验结果

全速运行程序,由上往下拨动开关时,相应位置的LED点亮,其余LED全灭。

八.思考题:

1、说明源代码8259初始化所设置的所有中断控制字的值和含义(按位说明)。

答: MOV DX, 04A0H

MOV AX, 13H OUT DX, AX MOV DX, 04A2H MOV AX, 80H OUT DX, AX MOV AX, 01H OUT DX, AX MOV AX, 00H OUT DX ,AX

ICW1控制字为13H,即00010011B,D7~D5位不用,D4位常为1,D3位为0,表示边沿触发,D2位为0,表示地址间距为8,D1位为1表示单片8259A,D0位为1,表示需要ICW4

ICW2控制字为80H,即IR0~IR7中断类型码为80H~87H。

ICW4控制字为01H,即00000001B,D7~D5常为0,D4位为0,表示普通全嵌套方式,D3位D2位为0表示非缓冲方式,D1为0,表示正常EOI,D0位为1,表示在8086/8088工作模式。

OCW1控制字为00H,即00000000B,每一位都表示一位中断屏蔽,D7~D0都为0,表示所有中断都开放。

2、修改接线IR3P+(实验箱右下角),并修改源程序,使按实验箱右下角“Pules”键时LED1~LED4全亮。

程序流程图:

开始8259A初始化中断服务流程关中断开中断AX置数YAX=00H?开中断NAX输出中断返回延时

代码:

ASSUME CS:CODE CODE SEGMENT PUBLIC ORG 100H ;初始化8259A

BEGIN: CLI ;关中断,写8259A命令字,控制字 MOV DX, 04A0H ;CS0: 04A0H,写ICW1,A0 = 0

MOV AX, 13H ;0001 0011,边沿触发,单片,需要ICW4 OUT DX, AX

MOV DX, 04A2H ;写ICW2,A0 = 1

MOV AX, 80H ;中断类型码,也就是IR0的中断服务程序地址从80H*4 = 200H开始 OUT DX, AX

MOV AX, 0DH ;ICW4,普通EOI,缓冲方式 OUT DX, AX

MOV AX, 00H ;OCW1,开放所有中断 OUT DX, AX NOP ;以上为8259初始化

MOV AX, 0 ;初始化中断向量表 MOV DS, AX

MOV DI, 200H ;中断类型码乘以4得200H MOV AX, OFFSET INT0 ;INT0代码段的偏移地址 MOV WORD PTR DS:[DI], AX ADD DI, 2

MOV WORD PTR DS:[DI], 100H ;INT0代码段的段地址 ADD DI, 2

MOV AX, OFFSET INT0 ;INT1代码段的偏移地址 MOV WORD PTR DS:[DI], AX ADD DI, 2

MOV WORD PTR DS:[DI], 100H ;INT1代码段的段地址 MOV AX, OFFSET INT2 ;INT2代码段的偏移地址 MOV WORD PTR DS:[DI], AX ADD DI, 2

MOV WORD PTR DS:[DI], 100H ;INT2代码段的段地址 ADD DI ,2

MOV AX, OFFSET INT3 ;INT3代码段的偏移地址 MOV WORD PTR DS:[DI], AX ADD DI, 2

MOV WORD PTR DS:[DI], 100H ;INT3代码段的段地址 ;8259A初始化完毕 STI CMP AX, 00H JE WAITING MOV DX, 04B0H OUT DX, AX MOV CX, 0

DELAY

JMP BEGIN NOP

MOV AX, 0FEH IRET NOP

MOV AX, 0FDH IRET NOP

MOV AX, 0FBH IRET NOP

MOV AX, 0F0H

;AX低四位为0,0000,LED1-4全亮

;LED3亮,1011

;LED2亮,1101

;LED1亮,1110

;打开总中断控制,允许硬件中断

WAITING:

DELAY: LOOP INTO: CLI

INT1: CLI

INT2: CLI

INT3: CLI

IRET

CODE ENDS END BEGIN

九、遇到问题与调试

现象:按任何按键,LED灯的状态均不改变。

分析:利用单步调试并在中断中加断点,发现程序根本无法进入中断,发现了问题。由于有连线比较多,经过排查,发现CS8259错接到了CS1,程序中用到的是CS0。 解决方法:将线改接之后,一切运行正常。 连接图:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务