完整版北航微机原理实验报告.docx

上传人:b****9 文档编号:23411302 上传时间:2023-05-16 格式:DOCX 页数:34 大小:518KB
下载 相关 举报
完整版北航微机原理实验报告.docx_第1页
第1页 / 共34页
完整版北航微机原理实验报告.docx_第2页
第2页 / 共34页
完整版北航微机原理实验报告.docx_第3页
第3页 / 共34页
完整版北航微机原理实验报告.docx_第4页
第4页 / 共34页
完整版北航微机原理实验报告.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

完整版北航微机原理实验报告.docx

《完整版北航微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《完整版北航微机原理实验报告.docx(34页珍藏版)》请在冰豆网上搜索。

完整版北航微机原理实验报告.docx

完整版北航微机原理实验报告

微计算机原理及运用实验报告

 

实验一:

I/O地址译码实验

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验原理和内容

实验电路如附图1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。

译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:

280H~287H,Y1:

288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。

附图1I/O地址译码电路

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

接线:

Y4/IO地址接CLK/D触发器

Y5/IO地址接CD/D触发器

D/D触发器接SD/D角发器接+5V

Q/D触发器接逻辑笔

三、实验程序

;*******************************;

;*I/O地址译码*;

;*******************************;

outport1equ2a0h

outport2equ2a8h

codesegment

assumecs:

code

start:

movdx,outport1

outdx,al

calldelay;调延时子程序

movdx,outport2

outdx,al

calldelay;调延时子程序

movah,1

int16h

jestart

movah,4ch

int21h

delayprocnear;延时子程序

movbx,200

lll:

movcx,0

ll:

loopll

decbx

jnelll

ret

delayendp

codeends

endstart

四.实验总结

这次实验让我对I/O地址译码电路有了直观的认识,也对地址译码器74LS138、74LS74D触发器也有了更深一步地了解,也对汇编程序的设计和编写更加熟悉。

实验二:

8255并行接口实验

一、实验目的

通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。

二.实验原理和内容

1.8255模块简介:

8255是Intel公司生产的与Intel8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。

它有A、B、C三个八位端口寄存器,通过24位端口线与外部设备相连,基中C口可分为上半部和下半部。

这24根端口线全部为双向三态。

三个端口可分二组来使用,可分别工作于三种不同的工作方式。

2.8255方式选择控制字分析,如下图所示:

Ø8255端口C置1/置0控制字分析(A1、A0=11),下图所示:

Ø实验连线

3.实验电路,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

编程从8255C口输入数据,再从A口输出。

附图28255并行接口电路

接线:

PC7~PC0/8255接K7~K0/逻辑电平开关

PA7~PA0/8255接L7~L0/LED显示

CS/8255接Y1/IO地址

三、程序框图

四.实验程序

;*******************************;

;*8255方式0的C口输入,A口输出*;

;*******************************;

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,io8255b;设8255为C口输入,A口输出

moval,8bh

outdx,al

inout:

movdx,io8255c;从C口输入一数据

inal,dx

movdx,io8255a;从A口输出刚才自C口

outdx,al;所输入的数据

movdl,0ffh;判断是否有按键

movah,06h

int21h

jzinout;若无,则继续自C口输入,A口输出

movah,4ch;否则返回

int21h

codeends

endstart

五.实验总结

通过这次试验我了解了8255工作于方式0以及设置A口为输出口,C口为输入口的方法,也对8255控制字的设置和初始化程序编写、各端口功能控制方面的能力有所提高。

 

实验三:

键盘显示控制实验

一、实验目的

掌握8255控制键盘及显示电路的基本功能及编程方法。

掌握一般键盘和显示电路的工作原理。

二、实验内容及原理

1.实验线路图

按原理图接线,

8255端口A地址为:

288H

端口C地址为:

28AH

控制口地址为:

28BH

接线:

PC7~PC0/8255接行3~列0/4X4键盘

PA7~PA0/8255接dp~a/LED数码管

CS/8255接Y1/IO地址

+5V接S0/LED数码管

GND接S3~S1/LED数码管

2.实验内容

使得在小键盘上每按一个健,4位数码管上显示出相应字符,

三、流程图

四.程序

;********************;

;*8255薄膜按键实验*;

;********************;

a8255equ288H;8255A口

c8255equ28aH;8255C口

k8255equ28bH;8255控制口

datasegment

table1dw0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h

dw07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h;键盘扫描码表

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH

DB39h,5EH,79h,71h,0ffh;LED段码表,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f

chardb'0123456789ABCDEF';字符表

mesdb0ah,0dh,'PLAYANYKEYINTHESMALLKEYBOARD!

',0ah,0dh

db'ITWILLBEONTHESCREEN!

ENDWITHE',0ah,0dh,'$'

key_indb0h

dataends

stackssegmentstack;堆栈空间

db100dup(?

stacksends

codesegment

assumecs:

code,ds:

data,ss:

stacks,es:

data

start:

cli

movax,data

movds,ax

moves,ax

movax,stacks

movss,ax

movdx,offsetmes;显示提示信息

movah,09

int21h

MOVDX,k8255;初始化8255控制字

moval,81h

outdx,al

main_key:

callkey;getacharin(key_in)anddisplayit

calldisply;调显示子程序,显示得到的字符

cmpbyteptrkey_in,'E'

jnzmain_key

movax,4c00h;if(dl)='E'returntoEXIT!

int21h;退出

keyprocnear

key_loop:

movah,1

int16h

jnzexit;pc键盘有键按下则退出

movdx,c8255

moval,0fh

outdx,al

inal,dx;读行扫描值

andal,0fh

cmpal,0fh

jzkey_loop;未发现有键按下则转

calldelay;delayforamoment

movah,al

MOVDX,k8255

moval,88h

outdx,al

movdx,c8255

moval,ah

oral,0f0h

outdx,al

inal,dx;读列扫描值

andal,0f0h

cmpal,0f0h

jzkey_loop;未发现有键按下则转

movsi,offsettable1;键盘扫描码表首址

movdi,offsetchar;字符表首址

movcx,16;待查表的表大小

key_tonext:

cmpax,[si];cmp(col,row)witheveryword

jzkey_findkey;inthetable

deccx

jzkey_loop;未找到对应扫描码

addsi,2

incdi

jmpkey_tonext

key_findkey:

movdl,[di]

movah,02

int21h;显示查找到的键盘码

movbyteptrkey_in,dl

key_waitup:

MOVDX,k8255

moval,81h

outdx,al

movdx,c8255

moval,0fh

outdx,al

inal,dx;读行扫描值

andal,0fh

cmpal,0fh

jnzkey_waitup;按键未抬起转

calldelay;delayforamoment

ret

exit:

movbyteptrkey_in,'E'

ret

keyendp

delayprocnear

pushax;delay50ms--100ms

movah,0

int1ah

movbx,dx

delay1:

movah,0

int1ah

cmpbx,dx

jzdelay1

movbx,dx

delay2:

movah,0

int1ah

cmpbx,dx

jzdelay2

popax

ret

delayendp

DISPLYPROCNEAR

PUSHax

MOVBX,OFFSETLED

MOVAL,byteptrkey_in

SUBal,30h

CMPal,09h

JNGDIS2

SUBal,07h

DIS2:

XLAT

MOVDX,a8255

OUTDX,AL;输出显示数据,段码

POPAX

RET

DISPLYENDP

codeends

endstart

五.实验总结

通过这次实验了解了8255控制键盘及显示电路的基本功能及编程方法和一般键盘和显示电路的工作原理。

并且对复杂的汇编程序编写分模块用call指令调用的方法更加熟悉。

实验四:

8254定时器/计数器实验

一、实验目的

掌握8254的基本工作原理和编程方法,用示波器观察不同方式下的波形。

二、实验原理和内容

按图4-8-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

接线:

CS/8254接Y0/IO地址

GATE0/8254接+5V

CLK0/8254接单脉冲

三、实验程序

;*************************;

;*8254方式0计数器实验*;

;*************************;

io8253aequ283h

io8253bequ280h

codesegment

assumecs:

code

start:

moval,14h;设置8254通道0为工作方式2,二进制计数

movdx,io8253a

outdx,al

movdx,io8253b;送计数初值为0FH

moval,0fh

outdx,al

lll:

inal,dx;读计数初值

calldisp;调显示子程序

pushdx

movah,06h

movdl,0ffh

int21h

popdx

jzlll

movah,4ch;退出

int21h

dispprocnear;显示子程序

pushdx

andal,0fh;首先取低四位

movdl,al

cmpdl,9;判断是否<=9

jlenum;若是则为'0'-'9',ASCII码加30H

adddl,7;否则为'A'-'F',ASCII码加37H

num:

adddl,30h

movah,02h;显示

int21h

movdl,0dh;加回车符

int21h

movdl,0ah;加换行符

int21h

popdx

ret;子程序返回

dispendp

codeends

endstart

四.实验总结

通过这次实验对8254的基本工作原理和编程方法有了更加实际的认识,而用示波器观察波形也让我重新复习了示波器的使用。

实验五:

继电器控制实验

一、实验目的

1、了解微机控制直流继电器的一般方法。

2、进一步熟悉使用8255、8254。

二、实验原理和内容

实验电路如附图6,按虚线连接电路:

CLK0接1MHZ,GATE0,GATE1,接+5V,OUT0接CLK1,OUT1接PA0,PC0接继电器驱动电路的开关输入端Ik。

继电器常开触点串联一个发光二极管,编程使用8254定时,让继电器周而复始的闭合5秒钟(指示灯灯亮),断开5秒钟(指示灯灯灭)。

附图6继电器控制实验电路图

接线:

CS/8254接Y0/IO地址

GATE0/8254接+5V

CLK0/8254接1M时钟

OUT0/8254接CLK1/8254

GATE1/8254接+5V

OUT1/8254接PC7/8255

PC0/8255接继电器

CS/8255接Y1/IO地址

三、实验中使用的程序

io8255aequ280h

io8255bequ281h

io8255cequ283h

io8255dequ288h

io8255eequ28bh

codesegment

assumecs:

code

start:

movdx,io8255e;设8255为A口输入,C口输出

moval,90h

lll:

outdx,al

moval,01;将PC0置位

outdx,al

calldelay;延时5s

moval,0;将PC0复位

outdx,al

calldelay;延时5s

jmplll;转lll

delayprocnear;延时子程序

pushdx

movdx,io8255c;设8253计数器为方式3

moval,36h

outdx,al

movdx,io8255a

movax,10000;写入计数器初值10000

outdx,al

moval,ah

outdx,al

movdx,io8255c

moval,70h;设计数器1为工作方式0

outdx,al

movdx,io8255b

movax,500;写入计数器初值500

outdx,al

moval,ah

outdx,al

ll2:

movah,06;是否有键按下

movdl,0ffh

int21h

jneexit;若有则转exit

movdx,io8255d

inal,dx;查询8255的PA0是否为高电平

andal,01

jzll2;若不是则继续

popdx

ret;定时时间到,子程序返回

exit:

movah,4ch

int21h

delayendp

codeends

endstart

四.实验总结

通过这次试验了解微机控制直流继电器的一般方法,对8255、8254的使用进一步熟悉。

通过将8254计数器0设置为方式3、计数器1设置为方式0并联使用,CLK0接1MHZ时钟,设置两个计数器的初值(乘积为5000000)启动计数器工作后,经过5秒钟OUT1输出高电平。

通过8255A口查询OUT1的输出电平,用C口PC0输出开关量控制继电器动作。

实现了程序控制。

实验六:

DMA传送

一、实验目的

1、掌握PC机工作环境下进行DMA方式数据传送(BlockMODE和DemandMode)(块传送、外部请求传送)方法。

2、掌握DMA的编程方法。

二、实验原理和内容

用通用插座按图4-11-2连接好电路(74LS74利用实验台上的D触发器)。

编程将主机内存缓冲区D4000H,偏移量为0的10个数据,使用DemandModeDMA方式从内存向外设传送。

接线:

按各实验图接线,图中虚线为实验所需接线

图中为实验台中单脉冲。

74LS74为实验台上D触发器

三、程序

codesegment

assumecs:

code

start:

movax,0D000h

moves,ax

movbx,4000h

movcx,0ffh;100h

movdl,40h

rep1:

incdl

moves:

[bx],dl

incbx

cmpdl,5ah

jnzss1

movdl,40h

ss1:

looprep1

movdx,18h;关闭8237

moval,04h

outdx,al

movdx,1dh;复位

moval,00h

outdx,al

movdx,12h;写目的地址低位

moval,00h

outdx,al

movdx,12h;写目的地址高位

moval,60h;

outdx,al

movdx,13h;传送字节数低位

moval,0ffh;

outdx,al

movdx,13h;传送字节数高位

moval,0;1h

outdx,al

movdx,10h;源地址低位

moval,00h

outdx,al

movdx,10h;源地址高位

moval,40h

outdx,al

movdx,1bh;通道1写传输,地址增

moval,85h

outdx,al

movdx,1bh;通道0读传输,地址增

moval,88h

outdx,al

movdx,18h;DREQ低电平有效,存储器到存储器,开启8237

moval,41h

outdx,al

movdx,19h;通道1请求

moval,04h

outdx,al

movcx,0F000h

delay:

loopdelay

movax,0D000h;---

moves,ax

movbx,06000h

movcx,0ffh;

rep2:

movdl,es:

[bx]

movah,02h

int21h

incbx

looprep2

movax,4c00h

int21h

codeends

endstart

四.实验总结

通过这次DMA方式传送数据这次方式有了更加深刻的认识,DMA的传输速度比一般的传输方式要快很多,这也体现了DMA方式的便捷性。

对DMA的初始化,牢记各个控制字的寻址,访问各端口的地址寄存器和字节计数器时要注意先传地位,再传高位。

实验七:

8259中断控制实验

一、实验目的

1、掌握中断控制器8259管理

2、掌握扩展中断

二、实验原理和内容

1、采用查询方式

2、如图4-14-1接线,按单脉冲请求一次中断,屏幕上显示相应的中断请求号

3、接线:

Y6/IO地址接CS/8259

+5V接INTA/8259

单脉冲接IR0/IR1/……IR7/8259

三、流程图

四.程序

I8259_1EQU2B0H;8259的ICW1端口地址

I8259_2EQU2B1H;8259的ICW1端口地址

I8259_3EQU2B1H;8259的ICW2端口地址

I8259_4EQU2B1H;8259的ICW3端口地址

08259_1EQU2B1H;8259的OCW1端口地址

08259_2EQU2B0H;8259的OCW2端口地址

08259_3EQU2B0H;8259的OCW3端口地址

Datasegment

Mes1db‘youcanplayakeyonthekeyboard!

’,0dh,0ah,24h

Mes2ddmes1

Mess1db‘Hello!

Thisisinterrupt*0*!

’,0dh,oah,’$’

Mess2db‘Hello!

Thisisinterrupt*1*!

’,0dh,oah,’$’

Mess3db‘Hello!

Thisisinterrupt*2*!

’,0dh,oah,’$’

Mess4db‘Hello!

Thisisinterrupt*3*!

’,0dh,oah,’$’

Mess5db‘Hello!

Thisisinterrupt*4*!

’,0dh,oah,’$’

Mess6db‘Hello!

Thisisinterrupt*5*!

’,0dh,oah,’$’

Mess7db‘Hello!

Thisisinterrup

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

当前位置:首页 > 自然科学 > 物理

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

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