北京邮电大学微机原理硬件实验报告.docx
- 文档编号:28241241
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:40
- 大小:467.21KB
北京邮电大学微机原理硬件实验报告.docx
《北京邮电大学微机原理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北京邮电大学微机原理硬件实验报告.docx(40页珍藏版)》请在冰豆网上搜索。
北京邮电大学微机原理硬件实验报告
北京邮电大学-微机原理硬件实验报告
微机原理与接口技术硬件实验报告
学院:
信息与通信工程学院
班级:
201******
学生姓名:
************
学号:
201*******201*******
班内序号:
****
实验一熟悉实验环境及IO的使用
一、实验目的:
1.通过实验了解和熟悉实验台的结构,功能及使用方法。
2.通过实验掌握直接使用Debug的I、O命令来读写IO端口。
3.学会Debug的使用及编写汇编程序
二、实验内容:
1.学习使用Debug命令,并用I、O命令直接对端口进行读写操作,
2.用汇编语言编写跑马灯程序。
(使用EDIT编辑工具)实现功能
A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮)
三、实验步骤:
1.实验板的IO端口地址为0E8E0H
在Debug下,
I是读命令。
(即读输入端口的状态---拨码开关的状态)
O是写命令。
(即向端口输出数据---通过发光管来查看)
进入Debug后,
读端口拨动实验台上八位拨码开关
输入I端口地址回车
屏幕显示xx表示从端口读出的内容,即八位开关的状态ON是0,OFF是1写端口
输入O端口地址xx(xx表示要向端口输出的内容)回车
查看实验台上的发光二极管状态,0是灯亮,1是灯灭。
2.在Debug环境下,用a命令录入程序,用g命令运行
C>Debug-a
movdx,端口地址
moval,输出内容
outdx,al
movah,0bh
int21h
oral,al
jz0100
int20h
-g
运行查看结果,修改输出内容
再运行查看结果
分析
movah,0bh
int21h
oral,al
jz0100
int20h
该段程序的作用:
检测键盘有没有按键,有则返回DOS。
没有继续执行
3.利用EDIT工具编写汇编写跑马灯程序程序
实现功能
A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮)C>EDIT文件名.asm
录入程序
按Alt键打开菜单进行存盘或退出
编译文件
C>MASM文件名.asm
连接文件
C>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:
PUSHCX
MOVCX,004FFH;内循环过程
D2:
LOOPD2
POPCX
LOOPD1
POPCX
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
8255初始化
从端口读入数据,改变速度
显示所需字符
键盘是否有输入
所需显示字符的地址加1或者返回最初地址
程序结束,返回DOS
N
Y
硬件连线图:
四、源程序代码:
程序一:
显示静态学号
DATASEGMENT
SHOWDB0F4H,21H,0EDH,0F1H,0D9H,0EDH;210350的ASCII码值
COUNTEQU$-SHOW
SLDB?
DATAENDS
STACKSEGMENTSTACK'STACK'
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
OUTDX,AL;数码管显示已经保存在数据段的数字
MOVAL,00H
MOVDX,0E800H
OUTDX,AL;清除原有字符
INCBX;增加BX数值,显示下一个数字
SHLSL,1;Sl左移依次向左选通数码管
LOOPAGAIN;循环此过程
MOVAH,0BH
INT21H
ORAL,AL
JZNEXT
OK:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
程序二:
动态显示HELLO
DATASEGMENT
MESGDB0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE,SS:
STACK
MAINPROCFAR
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAL,80H
MOVDX,0E803H
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]
OUTDX,AL
MOVAL,AH;决定显示哪一个数码管
INCDX
OUTDX,AL;控制哪一个LED灯亮
DECDX
ROLAH,1;使得下一个LED灯亮
INCSI
CALLDELAY;调用延时子程序
CALLKEY;检验按键是否有输入
LOOPLOP2;循环执行LOP2直到所有六个数码管都被点亮
DECBP
JNZLOPX;外层循环,控制显示时间
POPAX
POPDX
POPCX
RET
DISPENDP
;返回DOS子程序---------------------------------------------
KEYPROCNEAR;检测键盘输入
PUSHAX
MOVAH,0BH
INT21H
ORAL,AL
JZGOON;没有键盘输入则跳向GOON
MOVAH,4CH;有任意输入则返回DOS
INT21H
GOON:
POPAX
RET
KEYENDP
;延时子程序--------------------------------------------------
DELAYPROC
PUSHAX
PUSHCX
MOVAX,0002H;外层循环
LOPD:
MOVCX,0H
LOOP$;内层循环
DECAX
JNZLOPD
POPCX
POPAX
RET
DELAYENDP
CODEENDS
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下。
四、程序流程图:
软件程序流程图:
开始
8255初始化
8253A初始化
设置数码管选通信号
调用音阶子程序,并且读入拨码开关,蜂鸣器发声,数码管显示音阶数字
结束
键盘有输入?
Y
N
硬件连线图:
五、源程序代码:
DATASEGMENT
NUMSdw0fffh;数据段
NUMdw01fffh;
NUMLdw02fffh;延时大小
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100HDUP(?
)
STACKENDS
CODESEGMENT;代码段
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
DELAYPROCFAR;延时子程序
PUSHF
PUSHCX
MOVCX,NUM
LOOP1:
PUSHCX
MOVCX,NUM
LOOP2:
LOOPLOOP2
POPCX
LOOPLOOP1
POPCX
POPF
RETF
DELAYENDP
DELAYSPROCFAR;延时子程序
PUSHF
PUSHCX
MOVCX,NUM
LOOPS1:
PUSHCX
MOVCX,NUMS
LOOPS2:
LOOPLOOPS2
POPCX
LOOPLOOPS1
POPCX
POPF
RETF
DELAYSENDP
DELAYLPROCFAR;延时子程序
PUSHF
PUSHCX
MOVCX,NUM
LOOPL1:
PUSHCX
MOVCX,NUML
LOOPL2:
LOOPLOOPL2
POPCX
LOOPLOOPL1
POPCX
POPF
RETF
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"
OUTDX,AL
CALLDELAY
retf
dodelay:
movdx,0E820h;timer0set
moval,00h;do
outdx,al
movdx,0e800h
moval,21h
outdx,al
jmpdo
singdoendp
singreprocfar;音阶re的发声及显示子程序
re:
movdx,0e8e0h;
inal,dx;
testal,02h;teststopornot
jzredelay;stop
movdx,0E820h;timer0set
moval,6FH;re
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0F4H;"2"
OUTDX,AL
CALLDELAY
retf
redelay:
movdx,0E820h;timer0set
moval,00H;re
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0F4H;"2"
OUTDX,AL
jmpre
singreendp
singmiprocfar;音阶mi的发声及显示子程序
mi:
movdx,0e8e0h;
inal,dx;
testal,02h;teststopornot
jzmidelay;stop
movdx,0E820h;timer0set
moval,64H;mi
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0F1H;"3"
OUTDX,AL
CALLDELAY
retf
midelay:
movdx,0E820h;timer0set
moval,00H;mi
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0F1H;"3"
OUTDX,AL
jmpmi
singmiendp
singfaprocfar;音阶fa的发声及显示子程序
fa:
movdx,0e8e0h;
inal,dx;
testal,02h;teststopornot
jzfadelay;stop
movdx,0E820h;timer0set
moval,5EH;fa
outdx,al
MOVDX,0E800H;ledshow
MOVAL,39H;"4"
OUTDX,AL
CALLDELAY
retf
fadelay:
movdx,0E820h;timer0set
moval,00H;fa
outdx,al
MOVDX,0E800H;ledshow
MOVAL,39H;"4"
OUTDX,AL
jmpfa
singfaendp
singsoprocfar;音阶so的发声及显示子程序
so:
movdx,0e8e0h;
inal,dx;
testal,02h;teststopornot
jzsodelay;stop
movdx,0E820h;timer0set
moval,53h;so
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0D9H;"5"
OUTDX,AL
CALLDELAY
retf
sodelay:
movdx,0E820h;timer0set
moval,00h;so
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0D9H;"5"
OUTDX,AL
jmpso
singsoendp
singlaprocfar;音阶la的发声及显示子程序
la:
movdx,0e8e0h;
inal,dx;
testal,02h;teststopornot
jzradelay;stop
movdx,0E820h;timer0set
moval,4BH;la
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0DDH;"6"
OUTDX,AL
CALLDELAY
retf
radelay:
movdx,0E820h;timer0set
moval,00H;la
outdx,al
MOVDX,0E800H;ledshow
MOVAL,0DDH;"6"
OUTDX,AL
jmpla
singlaendp
singtiprocfar;音阶ti的发声及显示子程序
ti:
movdx,0e8e0h;
inal,dx;
testal,02h;teststopornot
jzxidelay;stop
movdx,0E820h;timer0set
moval,43H;ti
outdx,al
MOVDX,0E80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京邮电 大学 微机 原理 硬件 实验 报告