微机硬件报告.docx

上传人:b****6 文档编号:5812106 上传时间:2023-01-01 格式:DOCX 页数:21 大小:338.89KB
下载 相关 举报
微机硬件报告.docx_第1页
第1页 / 共21页
微机硬件报告.docx_第2页
第2页 / 共21页
微机硬件报告.docx_第3页
第3页 / 共21页
微机硬件报告.docx_第4页
第4页 / 共21页
微机硬件报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机硬件报告.docx

《微机硬件报告.docx》由会员分享,可在线阅读,更多相关《微机硬件报告.docx(21页珍藏版)》请在冰豆网上搜索。

微机硬件报告.docx

微机硬件报告

目录

 

实验1存储器读写实验………………2

 

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

 

实验38255并行口实验……………6

 

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

 

实验5  8259中断控制器实验………11

 

综合设计实验部分………………………14

实验1存储器读写实验

一、实验设备

微机实验箱、8086CPU模块。

二、实验步骤和要求

1、实验接线:

本实验无需接线。

2、编写调试程序

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

本实验的主要目的是学会用使用工具软件,掌握用单步执行和断点方式运行程序,观察寄存器和内存中的数据变化等程序调试的手段。

三、思考题

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

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

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

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

答:

1.Ds中数据:

0100h

2.从2000H~202FH中全是0

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

AA55AA55AA55AA55AA55AA55AA55AA55

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

codesegment

assumecs:

code

org0100h

start:

movax,0100h

movds,ax;数据段地址

moves,ax

movsi,1000h;偏移地址

movcx,0100h;循环次数

moval,0

intram:

mov[si],al

incsi

loopintram

movsi,1000h;设置断点处

movcx,10h;循环16次

movax,0h

fil:

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

incsi

incal;al加一

loopfil

nop;设置断点处

jmpstart

codeends

endstart

4、思考题的程序在调试中出现的问题及解决过程

在设置SI时错将1000H设置成2000H,cx设置成08,应该是10H

movsi,2000h;设置断点处movsi,1000h;设置断点处

movcx,08h;只循环了8次movcx,10h;循环了16次

movax,0hmovax,0h

 

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

一、实验设备

微机实验箱、8086CPU模块。

二、实验内容

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

三、实验原理介绍

本实验用到两部分电路:

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

四、实验步骤

1、实验接线:

(表示相互连接)

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

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

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

外围接线原理图:

五、思考题:

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

assumecs:

code

codesegmentpublic

org100h

start:

movdx,04C0h;74LS244地址

inal,dx;读输入开关量

movdx,04D0h;74LS273地址

outdx,al;输出至LED

jmpstart

codeends

endstart

 

实验38255并行口实验

一、实验设备

微机实验箱、8086CPU模块。

二、实验内容

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

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

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

三、实验原理介绍

本实验用到两部分电路:

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

四、实验步骤

1、实验接线

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

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

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

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

外接原理图:

五、思考题:

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

 

assumecs:

code

codesegmentpublic

org100h

start:

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

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

outdx,ax

start1:

movdx,04C0h;A口地址

inax,dx;输入

movdx,04c2h;B口地址

notax

outdx,ax;输出

jmpstart1

codeends

endstart

六、思考题的程序在调试中出现的问题及解决过程

在下面的程序中间忘记加了notax,导致还是开关置“L”(上)位置时对应LED亮

movdx,04c2h;B口地址movdx,04c2h;B口地址

outdx,ax;输出notax

outdx,ax;输出

 

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

一、实验设备

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

二、实验内容

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

三、实验原理介绍

本实验用到两部分电路:

脉冲产生电路、8253定时器/计数器电路

四、实验步骤

1、实验连线:

CS0CS8253OUT08253CLK2OUT2LED1OUT1LED2

CLK3

8253CLK0,CLK3

8253CLK1

2、编程调试程序

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

五、思考题:

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

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

请分析说明。

答:

1.T0的时钟由CLK3提供,其频率为750KHz。

T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。

OUT0的输出为T2时钟,则在T2中设置初值为04h时,则OUT2输出方波周期为4*0.05s=0.2s,且OUT2LED1,所以LED1闪烁周期的理论值是0.2秒。

2.T1的时钟由CLK3提供,其频率为750KHz。

T1的初值设为32h(50十进制),则OUT1输出的方波周期为(50*4/3*10-6=0.000067s),且OUT1LED2,所以,LED2的最大闪烁周期是0.000067s,约15KHz。

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

assumecs:

code

codesegmentpublic

org100h

start:

movdx,04abh;控制寄存器

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

outdx,ax

movdx,04abh

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,计数4s

outdx,ax

next:

nop

jmpnext

codeends

endstart

六、思考题的程序在调试中出现的问题及解决过程

在配置4秒(亮2秒,灭2秒是,将时间配错了,搞成28H,实际上应该是50H

movdx,04b6hmovdx,04b6h

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

outdx,axoutdx,ax

movdx,04b4hmovdx,04b4h

movax,28hmovax,50h

outdx,axoutdx,ax

movax,0;计数值50h,计数4smovax,0;计数值50h,计数4s

outdx,axoutdx,ax

 

实验5  8259中断控制器实验

一、实验设备

微机实验箱、8086CPU模块。

二、实验内容

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

三、实验原理介绍

本实验用到三部分电路:

电平开关电路、简单I/O口扩展电路和8259中断控制器电路。

四、实验步骤

1、实验接线

CS0CS8259CS3CS273O0~O3LED1~LED4K1~K4IR0~IR3INTINT(8086CPU板)INTAINTA(8086CPU板)

2、编译调试程序

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

五、思考题:

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

答:

start1:

cli

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

movax,13h;ICW1为初始化字,由13h即00010011,

可知中断向量为:

000h(D7=0、D6=0、D5=0),

采用边沿触发(D3=0),地址间距为8

(D2=0),单片8259A(D1=1),需要ICW4

(D0=1).

outdx,ax;ICW1,ICW4NEEDED

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

movax,80h;ICW2为中断类型码字,由80h即10000000,

可知中断类型码的高五位为:

10000(T7=1、

T6=0、T5=0、T4=0、T3=0),,低3位由中断

源IR0(T2=0,T1=0,T0=0)的编码自动填入,表

明IR0~IR7的中断类型码分别为80h~87h.

outdx,ax;ICW2中断类型80h

movax,01h;ICW4为中断结束方式字,由01h即0000

0001,可知采用普通全嵌套方式(D4=0),非

缓冲方式(D3=0、D2=0),正常EQI(D1=0),

8086/8088模式(D0=1)

outdx,ax;ICW4

movax,00h;OCW1为屏蔽控制字,由00h即00000000,

可知IMR的所有位均为0,则所有位的中断

都被允许。

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

nop;以上为8259初始化

2、修改接线IR3P+(实验箱右下角),并修改源程序,使按实验箱右下角“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

六、思考题的程序在调试中出现的问题及解决过程

在修改是为了把四盏灯都点亮,把ax配错了,配成了movax,0fh导致当按下pulse是四盏灯都灭了,后来发现应该是movax,0f0h。

修改如下:

int3:

cliint3:

cli

nopnop;此两行为IR3的中断服务程

movax,0fhmovax,0f0h;此处修改

Iretiret

综合设计实验部分

一、设计要求

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

要求实现以下功能:

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

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

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

CS08253,CS174LS244,CS274LS273,CLK38253CLK0,OUT08253CLK2,OUT2IN7,IN0K1,00~03LED1~LED4,

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

程序:

assumecs:

code

codesegmentpublic

org100h

start:

movdx,04a6h;控制寄存器

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

outdx,ax

movdx,04a0h

movax,7Ch

outdx,ax

movax,92h

outdx,ax;计数值927Ch

movdx,04a6h

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

outdx,ax

movdx,04a2h

movax,32h

outdx,ax

movax,0;计数值32h

outdx,ax

movdx,04a6h

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

outdx,ax

movdx,04a4h

movax,90h

outdx,ax

movax,01h;计数值190h,计数20s

outdx,ax

next:

movdx,04b0h;74LS244地址

inal,dx;读输入开关量

movbl,al

andbl,01h;判断K1是否为1

jnzt2

andal,80h;判断定时器OUT2输出是高还是低电平

cmpal,0

jet1

jmpt3

t1:

movdx,04c0h;74LS273地址

moval,0ah;如果out2输出是低电平,则绿灯亮

outdx,al;输出至LED

jmpnext

t3:

moval,05h;如果out2输出是高电平,则红灯亮

outdx,al

jmpnext

t2:

moval,0f0h;如果K1为H(高),则让4个灯全亮

outdx,al

jmpnext

codeends

endstart

四、程序在调试中出现的问题及解决过程

在设计时为了让8253定时器在输出0时让两个绿灯亮,在输出1时让两个红灯亮,所以就将8253的OUT2输出接入74LS244的IN7端口,从IN7端口读出OUT2的值是1还是0,从而判断赋给ax什么值。

一开始我以为8253在计数后OUT2输出是一个脉冲信号,没有意识到是一个方波,所以就用CL记录OUT2来了是高电平来的次数:

当OUT2来一次就将CL赋值为1,当下一次OUT2来一次脉冲就将CL赋值为0,依次循环下去。

从而通过CL的值来判断AX中赋什么值给LED灯端口00~03,当时程序如下:

......

movcl,0

next:

movdx,04b0h;74LS244地址

inal,dx;读输入开关量

movbl,al

andbl,01h;判断K1是否为1

jnzt2

andal,80h;判断定时器OUT2输出是高还是低电平

jzt1

movbl,cl;如果OUT2为高电平则把cl的0位取反

notbl

andbl,01H

movcl,bl

t1:

cmpcl,0

jzet3

movdx,04c0h;74LS273地址

moval,0ah;如果out2输出是低电平,则绿灯亮

outdx,al;输出至LED

jmpnext

t3:

moval,05h;如果out2输出是高电平,则红灯亮

outdx,al

jmpnext

t2:

moval,0f0h;如果K1为H(高),则让4个灯全亮

outdx,al

jmpnext

运行结果是当OUT2输出为0是绿灯亮正常,但是OUT2输出1是红灯亮不正常,出现闪烁而且绿灯也在闪烁,这是因为OUT2输出为方波,有10s为1的时间,在这段时间内cl的0位一直取反,导致红灯,绿灯也亮,而且都闪烁。

后来想起来OUT2本来就是输出方波,根本不用CL来作为标记。

修改程序后如下:

......

next:

movdx,04b0h;74LS244地址

inal,dx;读输入开关量

movbl,al

andbl,01h;判断K1是否为1

jnzt2

andal,80h;判断定时器OUT2输出是高还是低电平

cmpal,0

jet1

jmpt3

t1:

movdx,04c0h;74LS273地址

moval,0ah;如果out2输出是低电平,则绿灯亮

outdx,al;输出至LED

jmpnext

t3:

moval,05h;如果out2输出是高电平,则红灯亮

outdx,al

jmpnext

t2:

moval,0f0h;如果K1为H(高),则让4个灯全亮

outdx,al

jmpnext

........

修改后所有功能就都能实现了。

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

当前位置:首页 > 经管营销

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

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