东华大学信息学院微机课程设计硬件.docx

上传人:b****2 文档编号:1260127 上传时间:2022-10-19 格式:DOCX 页数:17 大小:58.20KB
下载 相关 举报
东华大学信息学院微机课程设计硬件.docx_第1页
第1页 / 共17页
东华大学信息学院微机课程设计硬件.docx_第2页
第2页 / 共17页
东华大学信息学院微机课程设计硬件.docx_第3页
第3页 / 共17页
东华大学信息学院微机课程设计硬件.docx_第4页
第4页 / 共17页
东华大学信息学院微机课程设计硬件.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

东华大学信息学院微机课程设计硬件.docx

《东华大学信息学院微机课程设计硬件.docx》由会员分享,可在线阅读,更多相关《东华大学信息学院微机课程设计硬件.docx(17页珍藏版)》请在冰豆网上搜索。

东华大学信息学院微机课程设计硬件.docx

东华大学信息学院微机课程设计硬件

目录

实验1存储器读写实验1

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

实验38255并行口实验8

实验48253定时器/计数器接口实验12

实验5  8259中断控制器实验15

实验1存储器读写实验

一、实验目的

1.掌握PC机外存扩展的方法。

2.熟悉6264芯片的接口方法。

3.掌握8086十六位数据存储的方法。

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

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

四、实验原理介绍

本实验用到存储器电路

五、实验步骤和要求

1、实验接线:

本实验无需接线。

2、编写调试程序

3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。

六、思考题

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

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

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

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

如图,单步执行到“intram”标号的语句时ds寄存器的数据为0100

采用断点方式运行时执行到第一个断点处,2000H~202FH内存单元的数据如图所示。

由源程序可知2000H~202FH内存单元中的内容全为0

执行到第二个断点处,2000H~200FH内存单元的数据如图所示。

由源程序可知程序的运行结果为向02000~020FFH单元的偶地址送入AAH,奇地址送入55H。

 

2.修改程序,实现从2010H到201FH内存单元依次赋值00H~0FH,从2020H到202FH内存单元依次赋值0FH~00H的功能。

 

程序流程图:

 

程序代码:

codesegment

assumecs:

code

org0100h;在代码段0100h偏移地址处开始存放代码

start:

movax,0100h

movds,ax;数据段地址

moves,ax

movsi,1000h;偏移地址

movcx,0100h;循环次数

moval,0;使al中置0

intram:

mov[si],al;将al中的值赋给[si]

incsi;使地址指针si加1

loopintram;使0100:

1000开始处的256个单元中的数据清0

movsi,1010h;设置断点处

movcx,0010h;预置循环次数16次

moval,00h;al的初值为00h

fil:

mov[si],al;RAM区循环置数

incsi;地址指针si加1

incal;使al中的值每执行一次循环加1,初始值为0,加到0F

loopfil;使02010H到0201F的数据区中依次存放00H-0FH

moval,0fh;al的初值为0fh

movcx,0010h;预置循环次数16次

fil1:

mov[si],al;RAM区循环置数

incsi;使地址指针si加1

decal;使al中的值每执行一次循环减1,初始值为0FH,减到00h

loopfil1;使02020H到0202F的数据区中依次存放0FH-00H

nop;设置断点处

jmpstart

codeends

endstart

七、实验中的问题及其解决方法

问题:

(1)在范例程序中按题目要求设置两个断点时,全速运行时只能运行第一个断点处的程序,而不知道怎么运行下一个断点处的程序。

(2)在做思考题程序时,运行所写程序时发现内存空间中上一个题目的运行结果还在里面,没有将其置为0。

解决方法:

(1)针对问题

(1),当执行完第一个断点执行完毕应该取消该断点,这样在全速运行时可以运行到下一个断点,可以观察程序运行结果。

(2)针对问题

(2),发现在初始化程序时,自己把所有的循环初值都设成了0010H,导致程序初始化时只初始化16个内存单元,而后面的内存单元没有初始化,保留了上次运行的程序运行结果,所以将初始化的循环初值设成0100H,这样就可以初始化256个内存单元了,把上次的结果初始化为0。

 

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

一、实验目的

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

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

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

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

四、实验原理介绍

本实验用到两部分电路:

开关量输入输出电路,简单I/O口扩展电路。

五、实验步骤

1、实验接线:

(表示相互连接)

CS0CS244;CS1CS273;平推开关的输出K1~K8IN0~IN7(对应连接);O0~O7LED1~LED8。

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

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

4、编写实验报告。

六、实验结果

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

例如:

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

图1外围接线原理图

七、思考题:

修改连线:

74LS244的片选信号CS244改接CS2,将74LS273的片选信号CS273改接CS3,开关K1,k2接74LS244的IN0、IN1,74LS273的O0~O7接发光二极管L1~L8。

编写程序实现以下功能:

K1~K2置于L(上)位置时,L1~L8全灭;K1开关置于H(下)位置时,L1~L4亮,L5~L8灭;K2开关置于H(下)位置时,L1~L4灭,L5~L8亮;K1~K2均置于H(下)位置时,L1~L8全亮。

程序流程图:

 

程序代码:

assumecs:

code

codesegmentpublic

org100h;在代码段0100h偏移地址处开始存放代码

start:

movdx,04c0h;74LS244地址

inal,dx;读入开关量

andal,03h;取后开关量后两位,即K2,K1的值

testal,02h;检测开关量K2位是否为’1’

jzlp1;若K2不为1,则跳转

andal,0fh;L5-L8清0

jmplp2

lp1:

oral,f0h;L5-L8置1

lp2:

testal,01h;检测K1位是否为‘1’

jzlp3;若K1不为1,跳转

andal,f0h;L1-L4清0

jmpdispaly

lp3:

oral,0fh;L1-L4置1

display:

movdx,04d0h;74LS273地址

outdx,al;输出至LED

jmpstart;循环运行

codeends

endstart

九、实验中的问题及其解决方法

问题:

(1)在编好程序时,运行调试中发现所得的结果全部与预期的相反,即K1~K2置于L(上)位置时,L1~L8全亮;K1开关置于H(下)位置时,L1~L4灭,L5~L8亮;K2开关置于H(下)位置时,L1~L4亮,L5~L8灭;K1~K2均置于H(下)位置时,L1~L8全灭。

(2)在问题

(1)的解决过程中发现开关的逻辑也发生错误。

(3)将程序编写完毕,编译链接,没有得到预期结果,然而把74LS244的片选信号CS244改接CS0,将74LS273的片选信号CS273改接CS1,结果出现。

解决方法:

(1)针对问题

(1),通过观察外围接线原理图发现,LED为共阳极,只有当信号为“0”时才导通,信号为“1”时不导通,正好与自己程序中的逻辑关系相反。

所以将程序中“1”改为“0”即可实现预期结果。

(2)一般来说,开关向上拨时,为“1”,处于高电平,而此实验箱开关在下面时候为“1”,而开关向上拨时为“0”,逻辑与平时的习惯相反,所以将开关的逻辑关系全变成它的相反就能达到预期结果。

(3)针对问题(3)说明前一次的程序还保存在实验箱中,每进行一次编译和链接都需要将实验箱复位,复位完成,结果能得到。

实验38255并行口实验

一、实验目的

掌握8255A的编程原理。

二、实验设备

微机实验箱、8086CPU模块。

三、实验内容

8255A的A口作为输入口,与逻辑电平开关相连。

8255A的B口作为输出口,与发光二极管相连。

编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。

四、实验原理介绍

本实验用到两部分电路:

开关量输入输出电路和8255可编程并口电路。

五、实验步骤

1、实验接线

CS0CS8255;PA0~PA3平推开关的输出K1~K4;PB0~PB3发光二极管的输入L1~L4。

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

3、全速运行时拨动开关,观察发光二极管的变化。

当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。

六、实验提示

8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。

8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。

实验中,8255A工作于基本输入输出方式(方式0)。

七、实验结果

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

例如:

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

八、思考题:

1、修改接线CS2CS8255,PA0~PA3平推开关的输出L1~L4;PB0~PB3发光二极管的输入K1~K4。

修改程序达到以下要求:

开关K1置“H”(下)位置时L1~L4全亮;K2置“H”(下)位置时L1、L3亮;K3置“H”(下)位置时L2、L4亮;K4置“H”(下)位置时L1和L4轮流闪烁,修改程序实现相应功能

程序流程图:

 

程序代码:

assumecs:

code

codesegmentpublic

org100h;在代码段0100h偏移地址处开始存放代码

start:

movdx,04c6h;控制寄存器地址

movax,90h;设置为A口输入,B口输出

outdx,ax;将控制字写入控制寄存器地址

movcx,0001h;初始化cx

start1:

movbx,0;初始化bx

movdx,04c0h;A口地址

inax,dx;输入

f1:

testax,0001h;判断开关K1是否值H

jzf2;不是则跳转

orbx,000fh;当开关K1为H时,使BX后四位为“1”

f2:

testax,0002h;判断开关K2是否值H

jzf3;不是则跳转

orbx,0005h;当开关K2为H时,使BX后四位为0101

f3:

testax,0004h;判断开关K3是否值H

jzf4;不是则跳转

orbx,000ah;当开关K3为H时,使BX后四位为1010

f4:

testax,0008h;判断开关K4是否值H

jzdisplay;不是则跳转,显示

cal

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1