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

上传人:牧羊曲112 文档编号:3337595 上传时间:2023-03-12 格式:DOCX 页数:32 大小:47.93KB
返回 下载 相关 举报
北京邮电大学 微机原理硬件实验报告.docx_第1页
第1页 / 共32页
北京邮电大学 微机原理硬件实验报告.docx_第2页
第2页 / 共32页
北京邮电大学 微机原理硬件实验报告.docx_第3页
第3页 / 共32页
北京邮电大学 微机原理硬件实验报告.docx_第4页
第4页 / 共32页
北京邮电大学 微机原理硬件实验报告.docx_第5页
第5页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《北京邮电大学 微机原理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北京邮电大学 微机原理硬件实验报告.docx(32页珍藏版)》请在三一办公上搜索。

1、北京邮电大学 微机原理硬件实验报告微机原理与接口技术硬件实验报告 学 院:信息与通信工程学院 班 级:201* 学生姓名:* * 学 号:201* 201* 班内序号:* * 实验一 熟悉实验环境及IO的使用 一、 实验目的: 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用 Debug 的 I、O 命令来读写 IO 端口。 3. 学会 Debug 的使用及编写汇编程序 二、实验内容: 1. 学习使用 Debug 命令,并用 I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用 EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为

2、低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三、实验步骤: 1.实验板的 IO 端口地址为0E8E0H 在 Debug 下, I 是读命令。(即读输入端口的状态-拨码开关的状态) O 是写命令。(即向端口输出数据-通过发光管来查看) 2 进入 Debug 后, 读端口 拨动实验台上八位拨码开关 输入 I 端口地址回车 屏幕显示 xx 表示从端口读出的内容,即八位开关的状态 ON 是 0,OFF 是 1 写端口 输入 O 端口地址 xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在 D

3、ebug 环境下,用 a 命令录入程序,用 g 命令运行 CDebug -a mov dx, 端口地址 mov al,输出内容 out dx, al mov ah, 0bh int 21h or al, al jz 0100 int -g 运行查看结果 ,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用:检测键盘有没有按键,有则返回DOS。没有继续执行 3.利用 EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输

4、出端口控制灯的工作状态(低电平灯亮) CEDIT 文件名.asm 3 20h 录入程序 按 Alt 键 打开菜单 进行存盘或退出 编译文件 CMASM 文件名.asm 连接文件 CLINK 文件名.obj 运行文件 或用 Debug 进行调试。 四、程序流程图 软件程序流程图: 开始 检测拨码开关 Y 最低位=1? N Y 中间位=1? N N 最高位=1? Y 按照速度设定按照速度设定结束 硬件连线图: 4 五、源程序代码: DAT SEGMENT NUM DB 0EFH DAT ENDS;定义数据段 STA SEGMENT STACKSTACK DB 100 DUP(?) STA ENDS

5、;定义堆栈段 COD SEGMENT ASSUME CS:COD,DS:DAT,SS:STA START PROC FAR 5 PUSH DS MOV AX,0 PUSH AX;使用第一种返回DOS的方式 MOV AX,DAT MOV DS,AX MOV DX,0E8E0H;输出端口设置 LOOP0:IN AL,DX MOV AH,AL TEST AL,01H JZ GG;最低位为1则程序结束 TEST AL,02H;检测中间位 JZ LOOP0;若输入端为0则继续等待 TEST AL,04H; JZ RR;跑马灯向右运动 ROL NUM,1;跑马灯向左运动 JMP LOOP2 RR:ROR

6、NUM,1;原数据循环右移,使得跑马灯向右跳转 LOOP2:AND AH,1FH MOV CL,AH;设置子程序调用的次数,间接控制延迟时间 MOV CH,0; MOV AL,NUM OUT DX,AL 6 INC CX LOOP1:CALL DELAY;调用延时子程序 LOOP LOOP1 JMP LOOP0;返回等待输入过程 GG:RETF START ENDP ;延时子程序 DELAY PROC PUSH CX MOV CX,008FFH;外循环过程 D1:PUSH CX MOV CX,004FFH;内循环过程 D2:LOOP D2 POP CX LOOP D1 POP CX RET D

7、ELAY ENDP; COD ENDS END START 六、思考题: 通过实验说明用 debug 中的 a 命令录入实验中给出的小程序中,有些语句可以不写出“h”7 字符的原因。 答:在DEBUG环境下,地址都是默认以16进制显示的,所以当语句中的数据是地址时,可以不加H,如果输入的不是地址而是数据时,就要加上H以表示为十六进制数。 七、实验收获和体会: 本次试验涉及到了计算机对于外部设备的控制的基本过程,我们主要学会如何在debug环境下编写I/O命令对于外部设备进行输入和输出。具体而言,利用命令点亮了LED灯,以及读取了拨码开关的状态。通过上述读写的操作,以及编写子程序等过程完成了跑马

8、灯的实现。由于电路板的时钟信号周期很小,在完成一层循环时,形成的跑马灯无法被人眼识别捕捉,呈现出了八个LED灯都亮的状态,不符合要求。于是我们将循环延迟的子程序改成了两层,并且由于输入端的拨码开关一共有三个可以控制跑马灯的模式,其中一个控制开关,另一个控制方向(可左可右),另一个辅助控制跑马灯的速度。实际上我们在跑马灯开启状态下,读入三个拨码开关的状态并且将其转化为三位的二进制数,并且将这个二进制数作为控制延迟子程序的调用次数,从而实现了两种方向下七种速度的实现(本应该有八种,但是一种是关闭状态)。实现了功能的拓展和创新。我们通过本次实验,基本学会了汇编语言代码的编写,熟悉了DEBUG的工作环

9、境和调试过程,并且对于计算机控制外部设备有了更客观清醒的认识,为今后汇编学习做了更充分的准备。 实验二 8255A并行接口应用 一、 实验目的: 1.掌握 8255A 的功能及方式 0、1 的实现 2.熟悉 8255A 与 CPU 的接口,以及传输数据的工作原理及编程方法。 3.了解七段数码管显示数字的原理。 4.掌握同时显示多位数字的技术。 二、实验内容: 在实验一的基础上学习 PIO 芯片(8255)编程应用,熟悉平台的主要内容。 CS 用 Y0 (E800H) (一) 简要说明: 在方式 0(输入/输出)下,以 A 口为输出口,B 口为输出口, A 口接六个共阴极数码 管的八位段码,高电

10、平点亮数码管的某一段, B 口接数码管的位选(即要使哪个数码管亮), 高电平选中某一位数码管点亮。 8255A 中 8 A 端口地址 E800H B 端口地址 E801H C 端口地址 E802H 控制地址 E803H 八段数码管的显示规律及数码管的位选规律自己查找,可用实验一中,学过的 I、O 命令来做。 三、程序流程图: 软件程序流程图: 程序一:静态显示学号 开始 8255初始化 待显示字符地址给BX 点亮第一个字符 熄灭 N 依次点亮后面的字符 检测键盘 Y 返回DOS 程序二:动态显示hello 9 8255初始化 从端口读入数据,改变速度 显示所需字符 所需显示字符的地址加1或者N

11、 键盘是否有输入 Y 程序结束,返回DOS 硬件连线图: 10 四、源程序代码 : 程序一:显示静态学号 DATA SEGMENT SHOW DB 0F4H,21H,0EDH,0F1H,0D9H,0EDH ;210350的ASCII码值 COUNT EQU $-SHOW SL DB ? DATA ENDS 11 STACK SEGMENT STACKSTACK DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK ;延时子程序- DELAY PROC PUSH CX MOV CX,800H DELAY1

12、: PUSH CX ;外层循环 MOV CX,400H DELAY2: LOOP DELAY2 ;内层循环 POP CX LOOP DELAY1 POP CX RET DELAY ENDP ;主程序- START : MOV AX,DATA MOV DS,AX NEXT: MOV CX,COUNT ;字母个数 12 LEA BX,SHOW MOV SL,01H AGAIN: MOV AL,80H MOV DX,0E803H OUT DX,AL MOV AL,SL MOV DX,0E801H OUT DX,AL MOV AL,BX MOV DX,0E800H OUT DX,AL MOV AL,0

13、0H MOV DX,0E800H OUT DX,AL INC BX SHL SL,1 LOOP AGAIN MOV AH,0BH INT 21H OR AL,AL JZ NEXT ;设置输出端口 ;数码管显示已经保存在数据段的数字;清除原有字符 BX数值,显示下一个数字 Sl左移依次向左选通数码管 ;循环此过程 13 ;增加 ; OK: MOV AH,4CH INT 21H CODE ENDS END START 程序二:动态显示HELLO DATA SEGMENT MESG DB 0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0 DATA ENDS STACK SEGM

14、ENT STACK STACK DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV AL,80H 14 MOV DX,0E803H OUT DX,AL LOP6:MOV BX,OFFSET MESG MOV CX,07H LOP5:MOV DX,0E8E0H ;从端口读入数据 IN AL,DX INC AL AND AL,07H XOR AH,AH MOV DX,AX ;DX值设置为外循环次数 LOPZ:CA

15、LL DISP ;显示子程序调用 DEC DX JNZ LOPZ ;显示当前状态直至DX=0 INC BX ;BX决定哪个数码管应被点亮 LOOP LOP5 ;重新设置数码管移动速度 JMP LOP6 ;当六种状态都结束后重新开始显示“HELLO”过程 MAIN ENDP ;显示子程序- DISP PROC NEAR PUSH CX PUSH DX PUSH AX 15 MOV BP,0044H ;控制显示速度 LOPX:XOR SI,SI MOV CX,06H ;每次记录六个数码管的状态 MOV DX,0E800H ;从外部设备读入数据 MOV AH,00000001B ;每次显示一个数码管

16、 LOP2:MOV AL,MESGBX+SI OUT DX,AL MOV AL,AH ;决定显示哪一个数码管 INC DX OUT DX,AL ;控制哪一个LED灯亮 DEC DX ROL AH,1 ;使得下一个LED灯亮 INC SI CALL DELAY ;调用延时子程序 CALL KEY ;检验按键是否有输入 LOOP LOP2 ;循环执行LOP2直到所有六个数码管都被点亮 DEC BP JNZ LOPX ;外层循环,控制显示时间 POP AX POP DX POP CX 16 RET DISP ENDP ;返回DOS子程序- KEY PROC NEAR ;检测键盘输入 PUSH AX

17、MOV AH,0BH INT 21H OR AL,AL JZ GOON ;没有键盘输入则跳向GOON MOV AH,4CH ;有任意输入则返回DOS INT 21H GOON:POP AX RET KEY ENDP ;延时子程序- DELAY PROC PUSH AX PUSH CX MOV AX,0002H ;外层循环 LOPD: MOV CX,0H LOOP $ ;内层循环 DEC AX 17 JNZ LOPD POP CX POP AX RET DELAY ENDP CODE ENDS END MAIN 五、实验心得与体会: 这次的实验里我学习了使用8255芯片进行并口接口的应用,先用了

18、I/O命令检测出了数码管的显示规律和段选规律。在实际编写代码时,应该时刻都记住实际上数码管显示图形时,我们看到多个数码管的显示都是逐个选通。应该给数码管加入高于24*6Hz的始终使得人眼无法分清数码管是被依次点亮。在HELLO的动态显示时,这个问题更加复杂,不仅需要在每次显示时数码管被逐个点亮,还需要在每经过一个显示周期,HELLO字符都左移1位,这无法通过二进制数的左右移位实验,而需要另外编写代码。另外还需要注意就是在实验中,每次换下一个数码管显示的时候还会显示之前数码管已经显示的字符,需要将原来的显示清零,才能呈现出所需的左右移动的变化过程。 本次过程经过多次调试,另外还经历了电脑死机、板

19、子失灵、无法返回DOS等问题的干扰。但最终我和组员能够相互协作,并且认真分析一些bug出现的原因,并且及时分析修改代码,使得我们能最终顺利完成实验,收获颇丰。 实验三 8253计数器/定时器的应用 一、实验目的: 18 学习掌握8253用作定时器的编程原理 二、实验内容: 1 完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。 三,电路测试与连接 测试:在Debug状态下,用“O”命令测试8353的发生功能,3组通道工作是否正常。 电路连接: 8253的CS接译码器输出Y1 其地址为E820-E827H 8253的OUT接蜂鸣器的BELL端 8253的门控信号GATE接+5V 82

20、53的CLK端接Q7(32KHz) 清零复位电路中的T/C端接地 注意:由于8253计数速率应小于2MHz,CLK0的输入信号必须由8MHz经393分频到小于2MHz后使用。393分频之后,Q0输出为4MHz,Q1输出为2MHzQ7输出32KHz。 编程提示: 18253控制端口地址为E823H 定时器0地址为E820H 定时器1地址为E821H 定时器2地址为E822H 2.定时器可工作在方式3下。 四、程序流程图: 软件程序流程图: 19 开始 8255初始化 8253A初始化 设置数码管选通信号 调用音阶子程序,并且读N 入拨码开关,蜂鸣器发声,键盘有输入? Y 结束 硬件连线图: 五、

21、源程序代码: 20 DATA SEGMENT NUMS dw 0fffh;数据段 NUM dw 01fffh ; NUML dw 02fffh ;延时大小 DATA ENDS STACK SEGMENT STACKSTACK DB 100H DUP(?) STACK ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE, DS:DATA, SS:STACK DELAY PROC FAR ;延时子程序 PUSHF PUSH CX MOV CX,NUM LOOP1: PUSH CX MOV CX,NUM LOOP2: LOOP LOOP2 POP CX LOOP LOOP1

22、POP CX POPF RETF 21 DELAY ENDP DELAYS PROC FAR ;延时子程序 PUSHF PUSH CX MOV CX,NUM LOOPS1: PUSH CX MOV CX,NUMS LOOPS2: LOOP LOOPS2 POP CX LOOP LOOPS1 POP CX POPF RETF DELAYS ENDP DELAYL PROC FAR ;延时子程序 PUSHF PUSH CX MOV CX,NUM LOOPL1: PUSH CX MOV CX,NUML 22 LOOPL2: LOOP LOOPL2 POP CX LOOP LOOPL1 POP CX

23、POPF RETF DELAYL ENDP singdo proc far do: mov dx,0e8e0h; in al,dx; test al,02h; jz dodelay; mov dx,0E820h mov al,7Dh out dx,al MOV DX,0E800H MOV AL,21H OUT DX,AL CALL DELAY retf ;音阶do的发声及显示子程序;test stop or not ;stop ;timer0 set ;do ;led show ;1 23 dodelay: mov dx,0E820h ;timer0 set mov al,00h ;do ou

24、t dx,al mov dx,0e800h mov al,21h out dx,al jmp do singdo endp singre proc far re: mov dx,0e8e0h; in al,dx; test al,02h jz redelay mov dx,0E820h mov al,6FH out dx,al MOV DX,0E800H MOV AL,0F4H OUT DX,AL CALL DELAY ;音阶re的发声及显示子程序 ;test stop or not ;stop ;timer0 set ;re ;led show ;2 24 retf redelay: mov

25、 dx,0E820h ;timer0 set mov al,00H ;re out dx,al MOV DX,0E800H MOV AL,0F4H OUT DX,AL jmp re singre endp singmi proc far mi: mov dx,0e8e0h; in al,dx; test al,02h jz midelay mov dx,0E820h mov al,64H out dx,al MOV DX,0E800H MOV AL,0F1H ;led show ;2 ;音阶mi的发声及显示子程序 ;test stop or not ;stop ;timer0 set ;mi

26、;led show ;3 25 OUT DX,AL CALL DELAY retf midelay: mov dx,0E820h ;timer0 set mov al,00H out dx,al MOV DX,0E800H MOV AL,0F1H OUT DX,AL jmp mi singmi endp singfa proc far fa: mov dx,0e8e0h; in al,dx; test al,02h jz fadelay mov dx,0E820h mov al,5EH out dx,al MOV DX,0E800H ;mi ;led show ;3 ;音阶fa的发声及显示子程

27、序 ;test stop or not ;stop ;timer0 set ;fa ;led show 26 MOV AL,39H ;4 OUT DX,AL CALL DELAY retf fadelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,39H OUT DX,AL jmp fa singfa endp singso proc far so: mov dx,0e8e0h; in al,dx; test al,02h jz sodelay mov dx,0E820h mov al,53h out dx,al ;tim

28、er0 set ;fa ;led show ;4 ;音阶so的发声及显示子程序 ;test stop or not ;stop ;timer0 set ;so 27 MOV DX,0E800H ;led show MOV AL,0D9H ;5 OUT DX,AL CALL DELAY retf sodelay: mov dx,0E820h mov al,00h out dx,al MOV DX,0E800H MOV AL,0D9H OUT DX,AL jmp so singso endp singla proc far la: mov dx,0e8e0h; in al,dx; test al,

29、02h jz radelay mov dx,0E820h mov al,4BH ;timer0 set ;so ;led show ;5 ;音阶la的发声及显示子程序;test stop or not ;stop ;timer0 set ;la 28 out dx,al MOV DX,0E800H ;led show MOV AL,0DDH ;6 OUT DX,AL CALL DELAY retf radelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,0DDH OUT DX,AL jmp la singla endp

30、singti proc far ti: mov dx,0e8e0h; in al,dx; test al,02h jz xidelay mov dx,0E820h ;timer0 set ;la ;led show ;6 ; 音阶ti的发声及显示子程序 ;test stop or not ;stop ;timer0 set 29 mov al,43H ;ti out dx,al MOV DX,0E800H ;led show MOV AL,61H ;7 OUT DX,AL CALL DELAY retf xidelay: mov dx,0E820h mov al,00H out dx,al M

31、OV DX,0E800H MOV AL,61H OUT DX,AL jmp ti singti endp singdo2 proc far do2: mov dx,0e8e0h; in al,dx; test al,02h ;timer0 set ;ti ;led show ;7 ;音阶高音do的发声及显示子程序 ;test stop or not 30 jz do2delay ;stop mov dx,0E820h ;timer0 set mov al,3fH ;high do out dx,al MOV DX,0E800H ;led show MOV AL,23H OUT DX,AL CA

32、LL DELAY retf do2delay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,23H OUT DX,AL jmp do2 singdo2 endp singsod proc far sod: ;1. ;timer0 set ;high do ;led show ;1. ;音阶低音so的发声及显示子程序 31 mov dx,0e8e0h; in al,dx; test al,02h ;test stop or not jz soddelay ;stop mov dx,0E820h ;timer0 set mov a

33、l,0a4h out dx,al MOV DX,0E800H MOV AL,0DBH OUT DX,AL CALL DELAY retf soddelay: mov dx,0E820h mov al,00h out dx,al MOV DX,0E800H MOV AL,0D9H OUT DX,AL jmp sod singsod endp ;so ;led show ;5 ;timer0 set ;so ;led show ;5 32 singmis proc far ;音阶mi的短发声及显示子程序 mis: mov dx,0e8e0h; in al,dx; test al,02h jz mi

34、sdelay mov dx,0E820h mov al,64H out dx,al MOV DX,0E800H MOV AL,0F1H OUT DX,AL CALL DELAYS retf misdelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,0F1H ;test stop or not ;stop ;timer0 set ;mi ;led show ;3 ;timer0 set ;mi ;led show ;3 33 OUT DX,AL jmp mis singmis endp singfas proc far ;

35、音阶fa的短发声及显示子程序 fas: mov dx,0e8e0h; in al,dx; test al,02h jz fasdelay mov dx,0E820h mov al,5EH out dx,al MOV DX,0E800H MOV AL,39H OUT DX,AL CALL DELAYS retf fasdelay: mov dx,0E820h mov al,00H out dx,al ;test stop or not ;stop ;timer0 set ;fa ;led show ;4 ;timer0 set ;fa 34 MOV DX,0E800H ;led show MOV AL,39H ;4 OUT DX,AL jmp fas singfas endp ;主程序- START PROC FAR MOV AX,DATA MOV DS,AX ini:mov dx,0E823h ;8253初始化 mov al,00010110B ;分频比小于255,mode3,二进制 out dx,al ;8255初始化 MOV DX,0E803H ;A、B口均为方式0输出 MOV AL,80H OUT DX,AL ;数码管显示的准备工作 MOV DX,0E801H

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号