北京邮电大学 微机原理硬件实验报告Word下载.docx

上传人:b****2 文档编号:4770536 上传时间:2023-05-04 格式:DOCX 页数:41 大小:522.08KB
下载 相关 举报
北京邮电大学 微机原理硬件实验报告Word下载.docx_第1页
第1页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第2页
第2页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第3页
第3页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第4页
第4页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第5页
第5页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第6页
第6页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第7页
第7页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第8页
第8页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第9页
第9页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第10页
第10页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第11页
第11页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第12页
第12页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第13页
第13页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第14页
第14页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第15页
第15页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第16页
第16页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第17页
第17页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第18页
第18页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第19页
第19页 / 共41页
北京邮电大学 微机原理硬件实验报告Word下载.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北京邮电大学 微机原理硬件实验报告Word下载.docx

《北京邮电大学 微机原理硬件实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《北京邮电大学 微机原理硬件实验报告Word下载.docx(41页珍藏版)》请在冰点文库上搜索。

北京邮电大学 微机原理硬件实验报告Word下载.docx

再运行查看结果

分析

movah,0bh

该段程序的作用:

检测键盘有没有按键,有则返回DOS。

没有继续执行

3.利用EDIT工具编写汇编写跑马灯程序程序

实现功能

B.通过输出端口控制灯的工作状态(低电平灯亮)C>

EDIT文件名.asm

录入程序

按Alt键打开菜单进行存盘或退出

编译文件

MASM文件名.asm

连接文件

LINK文件名.obj

运行文件或用Debug进行调试。

四、程序流程图

软件程序流程图:

硬件连线图:

五、源程序代码:

DATSEGMENT

NUMDB0EFH

DATENDS;

定义数据段

STASEGMENTSTACK'

STACK'

DB100DUP(?

STAENDS;

定义堆栈段

CODSEGMENT

ASSUMECS:

COD,DS:

DAT,SS:

STA

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX;

使用第一种返回DOS的方式

MOVAX,DAT

MOVDS,AX

MOVDX,0E8E0H;

输出端口设置

LOOP0:

INAL,DX

MOVAH,AL

TESTAL,01H

JZGG;

最低位为1则程序结束

TESTAL,02H;

检测中间位

JZLOOP0;

若输入端为0则继续等待

TESTAL,04H;

JZRR;

跑马灯向右运动

ROLNUM,1;

跑马灯向左运动

JMPLOOP2

RR:

RORNUM,1;

原数据循环右移,使得跑马灯向右跳转

LOOP2:

ANDAH,1FH

MOVCL,AH;

设置子程序调用的次数,间接控制延迟时间

MOVCH,0;

MOVAL,NUM

OUTDX,AL

INCCX

LOOP1:

CALLDELAY;

调用延时子程序

LOOPLOOP1

JMPLOOP0;

返回等待输入过程

GG:

RETF

STARTENDP

延时子程序

DELAYPROC

PUSHCX

MOVCX,008FFH;

外循环过程

D1:

MOVCX,004FFH;

内循环过程

D2:

LOOPD2

POPCX

LOOPD1

RET

DELAYENDP;

CODENDS

ENDSTART

六、思考题:

通过实验说明用debug中的a命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。

答:

在DEBUG环境下,地址都是默认以16进制显示的,所以当语句中的数据是地址时,可以不加H,如果输入的不是地址而是数据时,就要加上H以表示为十六进制数。

七、实验收获和体会:

本次试验涉及到了计算机对于外部设备的控制的基本过程,我们主要学会如何在debug环境下编写I/O命令对于外部设备进行输入和输出。

具体而言,利用命令点亮了LED灯,以及读取了拨码开关的状态。

通过上述读写的操作,以及编写子程序等过程完成了跑马灯的实现。

由于电路板的时钟信号周期很小,在完成一层循环时,形成的跑马灯无法被人眼识别捕捉,呈现出了八个LED灯都亮的状态,不符合要求。

于是我们将循环延迟的子程序改成了两层,并且由于输入端的拨码开关一共有三个可以控制跑马灯的模式,其中一个控制开关,另一个控制方向(可左可右),另一个辅助控制跑马灯的速度。

实际上我们在跑马灯开启状态下,读入三个拨码开关的状态并且将其转化为三位的二进制数,并且将这个二进制数作为控制延迟子程序的调用次数,从而实现了两种方向下七种速度的实现(本应该有八种,但是一种是关闭状态)。

实现了功能的拓展和创新。

我们通过本次实验,基本学会了汇编语言代码的编写,熟悉了DEBUG的工作环境和调试过程,并且对于计算机控制外部设备有了更客观清醒的认识,为今后汇编学习做了更充分的准备。

实验二8255A并行接口应用

1.掌握8255A的功能及方式0、1的实现

2.熟悉8255A与CPU的接口,以及传输数据的工作原理及编程方法。

3.了解七段数码管显示数字的原理。

4.掌握同时显示多位数字的技术。

在实验一的基础上学习PIO芯片(8255)编程应用,熟悉平台的主要内容。

CS用Y0(E800H)

(一)简要说明:

在方式0(输入/输出)下,以A口为输出口,B口为输出口,A口接六个共阴极数码管的八位段码,高电平点亮数码管的某一段,B口接数码管的位选(即要使哪个数码管亮),高电平选中某一位数码管点亮。

8255A中

A端口地址E800H

B端口地址E801H

C端口地址E802H

控制地址E803H八段数码管的显示规律及数码管的位选规律自己查找,可用实验一中,学过的I、O命令来做。

三、程序流程图:

程序一:

静态显示学号

程序二:

动态显示hello

硬件连线图:

四、源程序代码:

显示静态学号

DATASEGMENT

SHOWDB0F4H,21H,0EDH,0F1H,0D9H,0EDH;

210350的ASCII码值

COUNTEQU$-SHOW

SLDB?

DATAENDS

STACKSEGMENTSTACK'

DB100HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

延时子程序----------------------------------------------------

DELAYPROC

PUSHCX

MOVCX,800H

DELAY1:

PUSHCX;

外层循环

MOVCX,400H

DELAY2:

LOOPDELAY2;

内层循环

POPCX

LOOPDELAY1

POPCX

RET

DELAYENDP

主程序--------------------------------------------------------

START:

MOVAX,DATA

MOVDS,AX

NEXT:

MOVCX,COUNT;

字母个数

LEABX,SHOW

MOVSL,01H

AGAIN:

MOVAL,80H

MOVDX,0E803H

OUTDX,AL;

设置输出端口

MOVAL,SL

MOVDX,0E801H

OUTDX,AL

MOVAL,[BX]

MOVDX,0E800H

数码管显示已经保存在数据段的数字

MOVAL,00H

MOVDX,0E800H

清除原有字符

INCBX;

增加BX数值,显示下一个数字

SHLSL,1;

Sl左移依次向左选通数码管

LOOPAGAIN;

循环此过程

MOVAH,0BH

INT21H

ORAL,AL

JZNEXT

OK:

MOVAH,4CH

CODEENDS

动态显示HELLO

DATASEGMENT

MESGDB0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0

DATAENDS

STACKSEGMENTSTACK'

DB100DUP(0)

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE,SS:

STACK

MAINPROCFAR

MOVDS,AX

MOVES,AX

MOVAL,80H

OUTDX,AL

LOP6:

MOVBX,OFFSETMESG

MOVCX,07H

LOP5:

MOVDX,0E8E0H;

从端口读入数据

INAL,DX

INCAL

ANDAL,07H

XORAH,AH

MOVDX,AX;

DX值设置为外循环次数

LOPZ:

CALLDISP;

显示子程序调用

DECDX

JNZLOPZ;

显示当前状态直至DX=0

INCBX;

BX决定哪个数码管应被点亮

LOOPLOP5;

重新设置数码管移动速度

JMPLOP6;

当六种状态都结束后重新开始显示“HELLO”过程

MAINENDP

;

显示子程序-------------------------------------------------------------

DISPPROCNEAR

PUSHCX

PUSHDX

PUSHAX

MOVBP,0044H;

控制显示速度

LOPX:

XORSI,SI

MOVCX,06H;

每次记录六个数码管的状态

MOVDX,0E800H;

从外部设备读入数据

MOVAH,00000001B;

每次显示一个数码管

LOP2:

MOVAL,MESG[BX+SI]

MOVAL,AH;

决定显示哪一个数码管

INCDX

OUTDX,AL;

控制哪一个LED灯亮

ROLAH,1;

使得下一个LED灯亮

INCSI

CALLDELAY;

CALLKEY;

检验按键是否有输入

LOOPLOP2;

循环执行LOP2直到所有六个数码管都被点亮

DECBP

JNZLOPX;

外层循环,控制显示时间

POPAX

POPDX

RET

DISPENDP

返回DOS子程序---------------------------------------------

KEYPROCNEAR;

检测键盘输入

MOVAH,0BH

ORAL,AL

JZGOON;

没有键盘输入则跳向GOON

MOVAH,4CH;

有任意输入则返回DOS

GOON:

POPAX

KEYENDP

延时子程序--------------------------------------------------

PUSHAX

MOVAX,0002H;

LOPD:

MOVCX,0H

LOOP$;

DECAX

JNZLOPD

POPAX

DELAYENDP

ENDMAIN

五、实验心得与体会:

这次的实验里我学习了使用8255芯片进行并口接口的应用,先用了I/O命令检测出了数码管的显示规律和段选规律。

在实际编写代码时,应该时刻都记住实际上数码管显示图形时,我们看到多个数码管的显示都是逐个选通。

应该给数码管加入高于24*6Hz的始终使得人眼无法分清数码管是被依次点亮。

在HELLO的动态显示时,这个问题更加复杂,不仅需要在每次显示时数码管被逐个点亮,还需要在每经过一个显示周期,HELLO字符都左移1位,这无法通过二进制数的左右移位实验,而需要另外编写代码。

另外还需要注意就是在实验中,每次换下一个数码管显示的时候还会显示之前数码管已经显示的字符,需要将原来的显示清零,才能呈现出所需的左右移动的变化过程。

本次过程经过多次调试,另外还经历了电脑死机、板子失灵、无法返回DOS等问题的干扰。

但最终我和组员能够相互协作,并且认真分析一些bug出现的原因,并且及时分析修改代码,使得我们能最终顺利完成实验,收获颇丰。

实验三8253计数器/定时器的应用

一、实验目的:

学习掌握8253用作定时器的编程原理

1.完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。

三,电路测试与连接

测试:

在Debug状态下,用“O”命令测试8353的发生功能,3组通道工作是否正常。

电路连接:

8253的CS接译码器输出Y1其地址为E820-E827H

8253的OUT接蜂鸣器的BELL端

8253的门控信号GATE接+5V

8253的CLK端接Q7(32KHz)

清零复位电路中的T/C端接地(或接RESET端)

注意:

由于8253计数速率应小于2MHz,CLK0的输入信号必须由8MHz经393分频到小于2MHz后使用。

393分频之后,Q0输出为4MHz,Q1输出为2MHz……Q7输出32KHz。

编程提示:

1.8253控制端口地址为E823H

定时器0地址为E820H

定时器1地址为E821H

定时器2地址为E822H

2.定时器可工作在方式3下。

四、程序流程图:

NUMSdw0fffh;

数据段

NUMdw01fffh;

NUMLdw02fffh;

延时大小

CODESEGMENT;

代码段

DELAYPROCFAR;

PUSHF

MOVCX,NUM

LOOPLOOP2

LOOPLOOP1

POPF

RETF

DELAYSPROCFAR;

LOOPS1:

MOVCX,NUMS

LOOPS2:

LOOPLOOPS2

LOOPLOOPS1

DELAYSENDP

DELAYLPROCFAR;

LOOPL1:

MOVCX,NUML

LOOPL2:

LOOPLOOPL2

LOOPLOOPL1

DELAYLENDP

singdoprocfar;

音阶do的发声及显示子程序

do:

movdx,0e8e0h;

inal,dx;

testal,02h;

;

teststopornot

jzdodelay;

stop

movdx,0E820h;

timer0set

moval,7Dh;

do

outdx,al

MOVDX,0E800H;

ledshow

MOVAL,21H;

"

1"

CALLDELAY

retf

dodelay:

moval,00h;

movdx,0e800h

moval,21h

jmpdo

singdoendp

singreprocfar;

音阶re的发声及显示子程序

re:

testal,02h;

teststopornot

jzredelay;

moval,6FH;

re

MOVAL,0F4H;

2"

redelay:

moval,00H;

jmpre

singreendp

singmiprocfar;

音阶mi的发声及显示子程序

mi:

jzmidelay;

movdx,0E820h;

moval,64H;

mi

MOVAL,0F1H;

3"

midelay:

jmpmi

singmiendp

singfaprocfar;

音阶fa的发声及显示子程序

fa:

testal,02h;

jzfadelay;

moval,5EH;

fa

MOVAL,39H;

4"

fadelay:

jmpfa

singfaendp

singsoprocfar;

音阶so的发声及显示子程序

so:

jzsodelay;

moval,53h;

so

MOVAL,0D9H;

5"

sodelay:

jmpso

singsoendp

singlaprocfar;

音阶la的发声及显示子程序

la:

jzradelay;

moval,4BH;

la

MOVAL,0DDH;

6"

radelay:

jmpla

singlaendp

singtiprocfar;

音阶ti的发声及显示子程序

ti:

jzxidelay;

stop

movdx,0E820h;

moval,43H;

ti

MOVAL,61H;

7"

CALLDELAY

xidelay:

jmp

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

当前位置:首页 > 解决方案 > 学习计划

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

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