[实验模块一]基本I/O接口实验
输入输出I/O是计算机和外设进行数据、信息交换最重要的手段本实验要求掌握微机系统中I/O的使用方法。由于我们采用软件模拟仿真8086CPU及其组成的微机系统,设计了如图2所示的实验硬件系统,利用8个拨位开关和74LS244电路作为输入接口(I), 输入开关的状态,读入到8086CPU中,利用74LS373为输出端口,后接8个LED管,实验的基本目的是用8个输入开关的
状态去控制8个LED的显示状态。
我们采用Proteus软件作为整个硬件系统,结合其软件调试环境,完成实验。需要学生了解Proteus软件环境装载程序的方法及其运用方法。能够利用MASM32软件汇编程序,编写8086汇编程序,并编译生成可执行文件,在实验电路图上完成实验。
基本实验要求:读入74LS244的开关状态,将该状态取反后写入74LS273的端口(请思考为何要取反? )。
提高部分的实验要求:编写一个程序,控制三色LED灯(可发红,绿,黄光),模拟十字路口交通灯管理。
综合硬件设计和软件编程实验:修改硬件设计并编程,如果要求74LS244的选片地址为90H~97H, 74LS273 的片选地址为A0H~A7H,请修改电路图,再完成实验要求。
图2为实验参考电路(提供原始的仿真设计图):
结合下图,根据I/O译码器接线,可知欲将74LS244和74LS273分别作为输入和输出,则需分别使能Y0与Y1管脚,因此对应地址总线分别为:二进制的1000 000、1000 1000,转换为16 进制: 80h、 88h;
基本实验的汇编参考程序如下:
由前面的寄存器部分介绍可知AX常用于存储I/O指令,因此剩余部分的程序如下:
本例程完成了从开关输入到LED灯显示开关实验的功能,改变输入开关的门状态,可以实时显示的状态。
在基本I/O实验的基础上,利用上述的LED灯,模拟交通信号灯控制,程序参考流程图如下:
上述过程控制中闪烁可以利用灭灯和加时间延迟来实现。
[实验模块二] 8255芯片接口操作实验
8255是intel公司为806乐列CPU配套的可编程并行接口芯片,通用性软强、使用灵活,具有典型的可编程并行接口,引脚如图3所示、内都结构如图4所示。
8255可编程接口芯片具有三个接口,A、B、C,其接口的三种基本的工作方式:
方式0:基本输入/输出方式
方式1:选通的输入/输出方式
方式2:双向传输方式
A口可以工作在方式0、方式1或方式2, B口和C口只能工作于方式0或方式1.3个端口的工作方式可通过软件编程来设定。
8255方式控制字如图5:
根据图6所示原理图文件,分析、计算8255芯片在IO空间中的地址,列出8255中四个寄存器的端口地址,查看8255芯片数据端口与8086芯片数据总线的连接方法,用于编程。
8255显示接口电路如图7,利用8255的A口和B口,驱动控制4个数码管,4个LED灯,一个八位拨位开关作为C口输入。因此实验时,A口、B口为输出口;C口为输入口,均为基本方式0。在4个数码管显示时,采用B口提供数码管显示段码,A口的低四位作为四个数码管的位选择,高四位接四个LED管,共阳接法。动态显示方式,即显示数字时,先在B口输出显示的段码,再在A口相应的位上输出1,保持30ms左右时间,接着显示下个字,以此类推,完成4个字符的连续显示。
实验基本要求:
(a) 根据原理图文件,分析原理图,计算8255芯片在IO空间中的地址,列出8255中四个寄存器的端口地址,查看8255芯片数据端口与8086芯片数据总线的连接方法。
(b)导入提供的8255Demo.asm 源文件并编译运行,在数码管-上显示0,1,2,3,并点亮所有发光二极管。
实验提高要求:
(a) 修改源文件,使其接收开关量输入,将8位开关量的高4位以二进制形式金示在发光二极管上,低4位的状态显示在(第一位)数码管上。
(b)修改程序,接收开关量输入,将8位开关量的高4位和低4位分别以十六进制形式显示在第1、2个数码管的上,第3、4个数码管重复第1、2个数码管的显示;开关量输入高4位的状态显示在4个发光二极管上。
(c) 调整8255芯片数据端口连线到8086芯片数据总线的D8-D15,重复上述的步骤。
[实验模块三] RAM存储器读写操作
图8是微机系统的内存扩展电路,采用两片32K*8的RAM组成的64K*8的存储器方案。两片RAM, U10为 偶地址,U11为奇地址。
(a)根据原理图文件,通过对所提供的原理图中存储芯片解码方案的分析,计算出该芯片映射到内存地址空间的地址和内存容量的大小;
(b)打开“内存扩展.asm”源文件运行并观察U10和U11内存芯片的内容。其方法是先运行程序一段时间后暂停,如下图9,勾选菜单项"Debug”->“MemoryContents-U10” 选项和勾选菜单项“Debug”->“Memory Contents -U11”选项,弹出U10和U11二个62256内存芯片的内容观察窗口,其内容应该均为FFh。该演示程序是采用单字节写入的方法完成内容的填写。要求修改.上述程序,采用单字节写操作方法,将所有奇数地址的内存单元从低地址到高地址依次填入无符号数1、3.5.7......;通过Proteus的观察存储芯片内容的查看功能,观察原理图中二个内存芯片U10和U11的写入内容与预想结果做比较。
(c) 继续修改程序,采用单字节写操作方法,将所有偶数地址的内存单元从低地址到高地址依次填入无符号数0、2、4、6、....通过Proteus的观察存储芯片内容的查看功能,观察原理图中二个内存芯片U10和U11的写入内容。
(d)修改原理图,将内存芯片映射到内存地址从0000h 开始的地方,重复上述的步骤。
(e)编写程序,采用双学节写操作方法,55AAh填满上述的二个内存芯片通过Proteus的观察储存芯片内容的查看功能。观察原理图中二个内存芯片的写入内容。
[实验模块四]定时器/计数器实验
8253芯片为Inte 8086微机系统配套可编程定时器、计数器芯片。
图11为本实验所用的芯片8253, 作为定时器/计数器控制芯片,它具有3个独立的定时器/计数器,每个定时器/计数器可以工作在6中工作模式。其内部结构如图12, 853方式控制字如图13所示。
定时器/计数器实验原理如图14所示:
实验要求:
(a) 了解8253定时器的硬件连接方法及时序关系,掌握8253的各种模式编程及原理。
(b)编程将8253定时器0设定为方式3,定时器1设定在方式2,定时器2设定在方式2,定时器0输出作为定时器1的输入,定时器1的输出作为定时器2的输入,用示波器观察各定时器的输出波形。设计定时器2的输出接在一个LED上,运行后可观察到该LED在不停闪烁,并在虚拟示波器上显示。