东华大学微机硬件实验报告.docx

上传人:b****2 文档编号:2877097 上传时间:2023-05-04 格式:DOCX 页数:15 大小:57.21KB
下载 相关 举报
东华大学微机硬件实验报告.docx_第1页
第1页 / 共15页
东华大学微机硬件实验报告.docx_第2页
第2页 / 共15页
东华大学微机硬件实验报告.docx_第3页
第3页 / 共15页
东华大学微机硬件实验报告.docx_第4页
第4页 / 共15页
东华大学微机硬件实验报告.docx_第5页
第5页 / 共15页
东华大学微机硬件实验报告.docx_第6页
第6页 / 共15页
东华大学微机硬件实验报告.docx_第7页
第7页 / 共15页
东华大学微机硬件实验报告.docx_第8页
第8页 / 共15页
东华大学微机硬件实验报告.docx_第9页
第9页 / 共15页
东华大学微机硬件实验报告.docx_第10页
第10页 / 共15页
东华大学微机硬件实验报告.docx_第11页
第11页 / 共15页
东华大学微机硬件实验报告.docx_第12页
第12页 / 共15页
东华大学微机硬件实验报告.docx_第13页
第13页 / 共15页
东华大学微机硬件实验报告.docx_第14页
第14页 / 共15页
东华大学微机硬件实验报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

东华大学微机硬件实验报告.docx

《东华大学微机硬件实验报告.docx》由会员分享,可在线阅读,更多相关《东华大学微机硬件实验报告.docx(15页珍藏版)》请在冰点文库上搜索。

东华大学微机硬件实验报告.docx

东华大学微机硬件实验报告

东华大学微机原理实验

 

班级:

电气

姓名:

学号:

 

东华大学信息学院

 

硬件实验部分

一、综合设计实验部分

一、设计要求

参考基础实验的实验1~实验5所使用的硬件和例程序,设计一个简单的红绿灯控制系统,用LED1~LED4表示两组红绿灯,每组红灯、绿灯各1只。

要现以下功能:

(1)红绿灯的定时切换(每10秒切换一次)

(2)设置灯光测试开关K1,当K1打开(高电平)时,LED1~LED4全亮,关闭时恢复正常切换。

提示:

(1)定时功能可利用8253实现,利用定时器输出作为中断申请,利用中断处理切换LED的显示;LED状态可用存保存或用I/O口读取。

(2)测试功能运行可在主循环过I/O口读取开关状态后判定,或利用中断处理方式运行。

二、报告要求:

1外围芯片信号连接原理图(与CPU连接部分可省略)

2程序的流程图、源代码和源代码行中必要的注释

3调试中遇到的问题和解决方法

三、程序源代码及流程框图:

assumecs:

code

codesegmentpublic

org100h

st:

movdx,04c0h;74LS244地址

inal,dx;读输入开关量

movdx,04d0h;74LS273地址

outdx,al;输出至LEd

testal,18h

jnestart

jmpst

start:

movdx,04b6h;控制寄存器

movax,36h;计数器0,方式3

outdx,ax

movdx,04b0h

movax,7Ch

outdx,ax

movax,92h

outdx,ax;计数值927C

movdx,04b6h

movax,0b6h;计数器2,方式3

outdx,ax

movdx,04b4h

movax,90h

outdx,ax

movax,01

outdx,ax

next:

nop

start1:

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

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

outdx,ax

movdx,04c0h;74LS244地址

inal,dx;读输入开关量

testal,18h

jest

start2:

movdx,04a0h;A口地址

inax,dx;输入

movdx,04a2h;B口地址

outdx,ax;输出

movdx,04a4h;c口地址

notax

outdx,ax;输出

movdx,04c0h;74LS244地址

inal,dx;读输入开关量

testal,18h

jest

jmpstart2

jmpnext

codeends

endst

 

四:

解决问题及原理图

 

二、基础实验部分

实验1存储器读写实验

一、实验设备

微机实验箱、8086CPU模块。

二、实验步骤和要求

1、实验接线:

本实验无需接线。

2、编写调试程序

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

三、思考题源程序代码及流程框图

codesegment

assumecs:

code

org0100h

start:

movax,0100h

movds,ax;数据段地址

moves,ax

movsi,1000h;偏移地址

movcx,010h;循环次数

moval,0

intram:

mov[si],al

incsi

loopintram;清零

movsi,1000h;设置断点处

movcx,10h

movdi,0

fil:

movax,di

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

incdi

incsi

loopfil

nop;设置断点处

jmpstart

codeends

endstart

四、思考题:

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

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

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

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

 

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

解决问题:

刚开始,没有注意将循环次数改掉,CX依旧弄成了100H,后来弄成010H,正好和要求一样。

之后的目标单元置数是正确的,符合要求。

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

一、实验设备

微机实验箱、8086CPU模块。

二、实验步骤

1、实验接线:

(表示相互连接)

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

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

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

4、编写实验报告。

三、思考题源程序代码及流程框图

assumecs:

code

codesegmentpublic

org100h

start:

movdx,04c0h;74LS244地址

inal,dx;读输入开关量

movdx,04d0h;74LS273地址

outdx,al;输出至LED

jmpstart

codeends

endstart

四、思考题:

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

解决问题:

这个思考题修改没出什么问题,就是把信号改接的位置换了一下,编程序时,将地址改一下,就成功了。

实验38255并行口实验

一、实验设备

微机实验箱、8086CPU模块。

二、实验步骤

1、实验接线

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

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

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

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

三、思考题源程序代码及流程框图

assumecs:

code

codesegmentpublic

org100h

start:

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

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

outdx,ax

start1:

movdx,04c0h;A口地址

inax,dx;输入

xorax,0ffffh

movdx,04c2h;B口地址

outdx,ax;输出

jmpstart1

codeends

endstart

四、思考题:

1、修改接线CS2CS8255,并要求开关置“H”(下)位置时对应LED亮,修改程序实现相应功能。

解决问题:

和第二个实验一样,将CS8255的接线地址换一下,没出问题。

但我和搭档在之后的取反时弄错了,弄成了00000H,后来实验结果不对,想了一下,发现这个有错误,就改成了0ffffH。

结果对了。

 

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

一、实验设备

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

二、实验步骤

1、实验连线:

CS1CS8253OUT08253CLK2OUT2LED1OUT1LED2

CLK3

8253CLK0,CLK3

8253CLK1

2、编程调试程序

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

三、思考题源程序代码及流程框图

assumecs:

code

codesegmentpublic

org100h

start:

movdx,04b6h;控制寄存器

movax,36h;计数器0,方式3

outdx,ax

movdx,04b0h

movax,7Ch

outdx,ax

movax,92h

outdx,ax;计数值927Ch

movdx,04b6h

movax,76h;计数器1,方式3

outdx,ax

movdx,04b2h

movax,32h

outdx,ax

movax,0;计数值32h

outdx,ax

movdx,04b6h

movax,0b6h;计数器2,方式3

outdx,ax

movdx,04b4h

movax,50h

outdx,ax

movax,0;计数值50h

outdx,ax

next:

nop

jmpnext

codeends

endstart

四、思考题:

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

在例程序设置LED2的最大闪烁周期是多少?

请分析说明。

 

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

解决问题:

依旧将CS8253的接线地址改一下,没出问题,然后将T2的数值弄成之前的20倍。

结果正确。

实验5  8259中断控制器实验

一、实验设备

微机实验箱、8086CPU模块。

二、实验步骤

1、实验接线

CS0CS8259CS3CS273O0~O3LED1~LED4K1~K3IR0~IR2INTINT(8086CPU板)INTAINTA(8086CPU板)IR3P+

2、编译调试程序

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

“且按Pules”键时LED1~LED4全亮。

三、思考题源程序代码及流程框图

assumecs:

code

codesegmentpublic

org100h

start:

movcx,0

start1:

cli

movdx,04a0h

movax,13h

outdx,ax;ICW1,ICW4NEEDED

movdx,04a2h

movax,80h

outdx,ax;ICW2中断类型80h

movax,01h;01

outdx,ax;ICW4

movax,00h

outdx,ax;OCW1,开放所有中断

nop;以上为8259初始化

movax,0

movds,ax

movdi,200h;初始化中断向量表

movax,offsetint0

movds:

[di],ax

adddi,2

movds:

[di],100h

adddi,2

movax,offsetint1

movds:

[di],ax

adddi,2

movds:

[di],100h

adddi,2

movax,offsetint2

movds:

[di],ax

adddi,2

movds:

[di],100h

adddi,2

movax,offsetint3

movds:

[di],ax

adddi,2;上述程序为芯片8259的初始化程序

movds:

[di],100h;建议不熟练者不要修改。

main:

movax,0

sti;开中断。

waiting:

cmpax,0h

jewaiting;没发生中断,则等待

nop

nop

movdx,04d0h

outdx,ax;对应LED灯亮

movcx,0

delay:

loopdelay;数字滤波,按键去抖

jmpstart1

int0:

cli;关中断。

以下类推。

nop;此两行为IR0的中断服务程序

movax,0feh;用户可修改。

iret;中断返回,以下类推。

int1:

cli

nop;此两行为IR1的中断服务程序,

movax,0fdh;用户可修改。

iret

int2:

cli

nop;此两行为IR2的中断服务程序,

movax,0fbh;用户可修改。

iret

int3:

cli

nop;此两行为IR3的中断服务程序,

movax,0f0h;用户可修改。

iret

codeends

endstart

四、思考题:

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

 

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

解决问题:

将IR3的接线地址换成P+,之后的IR3中断服务程序的ax输入改成0f0H.实验结果刚好如预期。

没出问题。

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2