ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:232.75KB ,
资源ID:9659461      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9659461.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮信通院微机原理实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮信通院微机原理实验报告.docx

1、北邮信通院微机原理实验报告(此文档为word格式,下载后您可任意编辑修改!)信息与通信工程学院微机原理硬件实验报告班 级: 姓 名: 学 号:序 号: 日 期:实验一 熟悉实验环境及IO的使用 1一、实验目的 1二、实验内容 1三、实验过程 1四、实验总结 7实验二8255A并行接口应用 8一、实验目的 8二、实验内容 8三、实验过程 8四、实验总结 20实验三8253计数器定时器的应用 21一、实验目的 21二、实验内容 21三、实验过程 21四、实验总结 28实验四 串行口8251A实验 30一、实验目的 30二、实验内容 30三、实验过程 36实验一 熟悉实验环境及IO的使用一、实验目的

2、1. 通过实验了解和熟悉实验台的结构,功能及使用方法。2. 通过实验掌握直接使用Debug的I、O命令来读写IO端口。3. 学会Debug的使用及编写汇编程序。二、实验内容1. 学习使用Debug命令,并用I、O命令直接对端口进行读写操作。2. 用汇编语言编写跑马灯程序。实现功能:A. 通过读入端口状态,选择工作模式(灯闪烁方式、速度等);B. 通过输出端口控制灯的工作状态(低电平灯亮)。三、实验过程1. 在Debug下,用I是命令读输入端口的状态,即拨码开关的状态,用O命令向端口输出数据,通过发光管来查看。测试结果:A. 使用命令:E8E0读取开关状态,得出的结果是从左低右高,即是低位,是高

3、位。B. 使用命令:O E8E0测试数码管的低位,改变输入的值可依次测试各个数码管是否正常。七段数码管左边为高位,右边为低位。2. 分析以下程序段的作用MOV AH, 0BHINT 21HOR AL,ALJZ 0100INT 20H该段程序实现了检测键盘状态,在键盘有任意键输入时退出程序返回DOS的功能。该实现依赖0BH号中断调用和巧妙使用程序入口返回地址直接返回。在DOS的DEBUG模式下,地址不用添加十六进制H标志。地址默认为16进制,多写了反而画蛇添足产生错误。普通数据为了区分需要添加H。3. 编写跑马灯程序(含改进跑马灯思路)。程序流程图如下:程序源码如下:1、基础跑马灯程序一,S0控

4、制关断,S1控制灯速度,S2控制灯的方向DATA SEGMENTCOUNT DW 0 SHOW DB 0 DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS: DATA, SS:STACKBEGIN: MOV AX,DATA MOV DS,AX MOV ES,AXSTART0: MOV DX,0E8E0H IN AL,DX TEST AL,01H ;S0,控制关断 JZ EXIT TEST AL,02H ;S1,控制速度 JZ SPEED MOV CX,0FFFH M

5、OV COUNT,CX JMP NEXT1SPEED: MOV CX,00FFH MOV COUNT,CXNEXT1: TEST AL,04H ;S2,控制方向 JZ RIGHTLEFT: MOV DX,0E8E0H MOV AL,0FEH OUT DX,ALLEFT1: ROL AL,1 ;跑马灯算法 MOV SHOW,AL ;暂存AL OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY MOV AL,SHOW JMP START0 JMP EXITRIGHT: MOV DX,0E8E0H MOV AL,7FH OUT DX,ALRIG

6、HT1: ROR AL,1 ;跑马灯算法 MOV SHOW,AL ;暂存AL OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY MOV AL,SHOW JMP START0 JMP EXITEXIT: MOV AX,4C00H INT 21HDELAY PROC ;延迟程序 PUSH CX MOV CX,COUNTLOOP1: PUSH CX MOV CX,0EFFFHLOOP2: LOOP LOOP2 POP CX LOOP LOOP1 POP CX RETDELAY ENDPCODE ENDS END BEGIN2、跑马灯程序二.

7、S0控制关断,S1控制灯速度,S2控制灯的方向.将右移时跑马灯改为灯从两边左右交替移到中间DATA SEGMENTCOUNT DW 0 SHOW DB 0 DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE, DS: DATA, SS:STACKBEGIN: MOV AX,DATA MOV DS,AX MOV ES,AXSTART0: MOV DX,0E8E0H IN AL,DX TEST AL,01H ;S0,控制关断 JZ EXIT TEST AL,02H ;S1,控制灯

8、速度 JZ SPEED MOV CX,0FFFH MOV COUNT,CX JMP NEXT1SPEED: MOV CX,00FFH MOV COUNT,CXNEXT1: TEST AL,04H ;S2,控制灯方向 JZ RIGHTLEFT: MOV DX,0E8E0H ;左移时仍然是跑马灯 MOV AL,0FEH OUT DX,ALLEFT1: ROL AL,1 MOV SHOW,AL ;暂存AL OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY MOV AL,SHOW JMP START0 JMP EXITRIGHT: PUSH C

9、X ;右移时灯从两边左右交替移到中间 MOV CX,0 MOV DX,0E8E0H MOV AL,7FH OUT DX,AL CALL DELAYRIGHT1: INC CX ROL AL,CL ;先左移 MOV SHOW,AL OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY MOV AL,SHOW INC CX ROR AL,CL ;再右移 MOV SHOW,AL OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY MOV AL,SHOW JMP START0 JMP EXIT

10、 EXIT: MOV AX,4C00H ;返回DOS INT 21HDELAY PROC ;延迟子程序 PUSH CX MOV CX,COUNTLOOP1: PUSH CX MOV CX,0EFFFH;COUNTLOOP2: LOOP LOOP2 POP CX LOOP LOOP1 POP CX RETDELAY ENDPCODE ENDS END BEGIN四、心得体会这是本学期第一次微机原理硬件实验,也是我们与汇编语言的第一次亲密接触,而所编写的程序与硬件的紧密结合也让我们对汇编语言有了更深一层的领悟。跑马灯是一个非常经典的实验,我们也曾经用VHDL语言编写过跑马灯程序,可谓是殊途同归。总

11、的说来,第一次的实验还是非常成功的,这也消除了我们的畏惧心理,为后来几次实验奠定了良好的基础。 实验二8255A并行接口应用一、实验目的1. 掌握8255A的功能及方式0、1的实现。2. 熟悉8255A与CPU的接口,以及传输数据的工作原理及编程方法。3. 了解七段数码管显示数字的原理。4. 掌握同时显示多位数字的技术。二、实验内容1. 查找八段数码管的显示规律及数码管的位选规律。2. 六位数码管静态显示。在数码管电路上静态地显示6位学号,当主机键盘按下任意键时,停止显示,返回DOS。3. 六位数码管动态显示。要求在数码管电路16位数码管上,动态显示字符串HELLO,当主机键盘按下任意键时结束

12、。4. 扩展部分:完成扫描键盘(PC口)输入自己的学号,并在数码管上显示。三、实验过程1、八段数码管位选规律在方式0(输入输出)下,以A口为输出口,B口为输出口, A口接六个共阴极数码管的八位段码,高电平点亮数码管的某一段,B口接数码管的位选(即要使哪个数码管亮),高电平选中某一位数码管点亮。测试结果如下图所示。由此,容易得出数字09以及字母AH的编码,如下表所示。字形01234567编码0EDH21H0F4H0F1H39H0D9H0DDH61H字形89ABCDEF编码0FDH0F9H7DH9DH0CCH0B5H0DCH5CH2、六位数码管静态显示电路6个数码管的同名阳极段已经复接,当段选寄存

13、器寄存了一个字型编码之后,6个数码管都将显示出相同的数字。如果要使6个数码管“同时”显示不同的数字,必须采用扫描显示的方法。通过选位寄存器选择某一位数码管,显示其数字(对应段值为1),然后关闭此数码管,再选择下一位数码管进行显示;如果在一秒钟内,每一位数码管都能显示30次以上,则人眼看到的是几位数码管同时在显示。实验证明,在扫描显示过程中,每一位显示延迟1ms是最佳选择。本程序采用了每次扫描一排6个数码管,然后反复循环的方式。每个数码管间隔一定时间,也即显示延迟。通过在每一排扫描之后检测键盘状态,可以达到任意键退出的功能。3、8255的工作方式:一片8255内部有3个端口,A口可以工作在方式0

14、、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。方式0是基本型输入输出。这种方式和外设交换数据时,8255端口与外设之间不使用联络线。方式1为选通型输入输出。用这种方式和外界交换数据时,端口和外设之间要有联络信号。方式2是双向数据传送,仅A口有这项功能。当A口工作在方式2时,B口仍可以工作在方式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。2. 工作方式选择字8255工作方式选择字共8位(如图),存放在8255控制寄存器中。最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位复位控制字。3C口置复位控制

15、字8255的C口可进行位操作,即:可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置复位字实现的(图8-10)。C口置复位字共8位,各位含义如下:38255A的控制信号与传输动作的对应关系4命令字与初始化编程8255有两个命令字,即方式选择控制字和C口置0置1控制字,初始化编程的步骤是: 向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。 当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0置1控制字”。这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。 注意:“C口置0置1控

16、制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。 向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据” 通过测试 A端口地址E800H B端口地址E801HC端口地址E802H 控制地址E803H 具体程序框图如下:静态显示的流程图:程序源代码如下。1、静态显示学号DATA SEGMENTSHOW DB 0F4H,021H,0EDH,039H,0F1H,0FDH;2,1,0,4,3,8COUNT EQU $-SHOWCAT DB 01HDATA ENDSSTACK SEGMENT STACK STACK DW 100H DUP(?

17、)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AXNEXT: MOV CX,COUNT LEA BX,SHOW MOV CAT,01H ;设置选通信号 AGAIN: MOV AL,80H ;设置控制位 MOV DX,0E803H OUT DX,AL MOV AL,CAT MOV DX,0E801H OUT DX,AL ;B口位选输出 MOV AL,BX MOV DX,0E800H ;A口数码管输出 OUT DX,

18、AL MOV AL,00H ;灭灯 MOV DX,0E800H OUT DX,AL INC BX SHL CAT,1 LOOP AGAIN ;将6位学号都显示 MOV AH,0BH ;检测是否有请求停止的键盘输入 INT 21H OR AL,AL JZ NEXT RETSTART ENDPCODE ENDSEND START代码具体分析如下:程序的实现思路是很明确而简单的,首先对8255A进行初始化,设置控制字,随即开始扫描数码管,这里使用了一个八位寄存器,赋值为一位为1,其余全零,依靠移位容易实现不同时刻亮不同的数码管,且每次只亮一个数码管,其余管熄灭。亮灯的管查找显示该位应该显示的数字,每

19、个数码管亮灯之后暂留一定的时间,依靠DELAY子程序来实现。每次扫描六个管,然后反复,即可利用视觉暂留效应产生静态显示学号的功能。在显示了每一位数之后,调用KEY子程序检测计算机键盘的状态,如果有任意键按下,则视为程序退出指令,终止程序并返回DOS,如果没有键按下,则跳回继续循环扫描。3、六位数码管动态显示数码管动态显示“HELLO”字符串,相当于每次显示6位静态字符串,然后显示一定的时间间隔之后,显示另外6位静态字符串。其核心代码和静态显示并无差别,可将静态显示学号的代码作为一个子程序封装起来直接使用。需要增加的只是在一定的时间间隔内去移位读取“HELLO”字符串中需要显示的部分。实际实现时

20、可以存储为码表的形式,移位往后读取即可。可以在移位读取前通过读取拨码开关的状态,获得控制信息,比如暂停、速度变化等。程序框图如下:程序源代码如下:3、按键显示学号DATA SEGMENT LED DB 0EDH,0EDH,0EDH,0EDH,0EDH,0EDH ;内存单元存入初值 AA DB 7FH ;C口的初始值 CAT DB 01H COUNT DB 06HDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP (?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATADELAY PROC NEAR

21、 ;短延时过程 PUSH CX MOV CX,0FFFFH WAIT1:LOOP WAIT1 POP CX RETDELAY ENDPDELAY1 PROC NEAR ;长延时过程定义 PUSH CX MOV CX,2FFHWAIT3: PUSH CX MOV CX,0FFFFH ;按键防抖延时WAIT2: LOOP WAIT2 POP CX LOOP WAIT3 POP CX RETDELAY1 ENDP PUSHKEY PROC FAR ;按键检测过程 MOV AL,81H ;给8255赋控制字 MOV DX,0E803H OUT DX,AL MOV DX,0E802H ;DX赋为B口AG

22、AIN:MOV CX,4 ;设置行循环四次 MOV AA,7FH ;检测赋初值LOOP0:MOV AL,AA MOV DX,0E802H ;读出C口数据 OUT DX,AL ;C口高位赋值 IN AL,DX ;取出C口低位值 CMP AL,0E7H ;比较是否是0 JNZ Y1 ;不是0跳到1Y0: MOV DL,0EDH ;0 MOV DI,DL CALL DELAY1 INC DI JMP TC Y1: CMP AL,0EBH JNZ Y2 MOV DL,21H ;1 MOV DI,DL CALL DELAY1 INC DI JMP TC Y2: CMP AL,0EDH JNZ Y3 MO

23、V DL,0F4H ;2 MOV DI,DL CALL DELAY1 INC DI JMP TC Y3: CMP AL,0EEH JNZ Y4 MOV DL,0F1H ;3 MOV DI,DL CALL DELAY1 INC DI JMP TC Y4: CMP AL,0D7H JNZ Y5 MOV DL,39H ;4 MOV DI,DL CALL DELAY1 INC DI JMP TC NEXT: ROR AA,1 LOOP LOOP0 JMP TC Y5: CMP AL,0DBH JNZ Y6 MOV DL,0D9H ;5 MOV DI,DL CALL DELAY1 INC DI JMP

24、TC Y6: CMP AL,0DDH JNZ Y7 MOV DL,0DDH ;6 MOV DI,DL CALL DELAY1 INC DI JMP TC Y7: CMP AL,0DEH JNZ Y8 MOV DL,61H ;7 MOV DI,DL CALL DELAY1 INC DI JMP TC Y8: CMP AL,0B7H JNZ Y9 MOV DL,0FDH ;8 MOV DI,DL CALL DELAY1 INC DI JMP TC Y9: CMP AL,0BBH JNZ NEXT ;不是9跳出 MOV DL,0F9H ;9 MOV DI,DL CALL DELAY1 INC DI

25、;标志位加一 JMP TC ;跳出过程TC: RETPUSHKEY ENDPSTART:MOV DX,SEG LED ;主程序显示 MOV DS,DX MOV SI,OFFSET LED MOV DI,OFFSET LED XOR AH,AH STA: CALL PUSHKEY ;按键检测 MOV CAT,01H MOV COUNT,06H MOV SI,OFFSET LED MOV CX,280AH MOV AL,80H MOV DX,0E803H ;8255控制口赋值 OUT DX,ALSHOW: DEC COUNT MOV AL,CAT ;第一个数码管显示 MOV DX,0E801H O

26、UT DX,AL MOV AL,SI ;打印第一个数 MOV DX,0E800H OUT DX,AL CALL DELAY INC SI SHL CAT,1 CMP COUNT,0 JNZ SHOW MOV AH,0BH ;检测是否有按键退出 INT 21H OR AL,AL JZ STAEXIT: MOV AL,00H ;退出后使数码管熄灭 MOV DX,0E801H OUT DX,AL MOV AX,4C00H ;返回DOS INT 21HCODE ENDS END START代码的具体分析如下:代码直接使用了本实验中六位数码管静态显示部分的代码,封装成为了DISP子程序,便于调用。DIS

27、P子程序即为反复扫描显示静态字形的程序。另外有DELAY作为延时子程序供调用。这样主程序只要考虑把每个状态定义好,并以一定的时间间隔传递给DISP显示即可。主程序中定义六种显示状态,分别对应于动态显示的六个画面,主程序中加入了拨码开关读取的代码,这样读入速度信息,依据速度信息置循环次数,用以控制显示速度。四、心得建议 本次实验中,我们遭遇了一个困难实验中使用的数码管的段码与平时不同,按照课本上的方式对应显示出来的并不是我们想要的数字,通过反复的分析比对,最终我们确定了该数码管的显示规律,实现了显示对应数字。本次实验相对第一次实验要复杂,但通过认真分析程序运行的流程,确认好输出输出的对应关系,我

28、们还是成功完成了实验,进一步提高的自己的汇编语言编写能力以及硬件实验能力。实验三8253计数器定时器的应用一、实验目的学习掌握8253用作定时器的编程原理。二、实验内容1. 完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。2. 扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。三、实验过程1、音乐发生器由参考资料中的音符与频率对应表,根据计数器的性质,利用公式,使用MATLAB矩阵运算可以快速计算出七种音符在高中低音时计数器应该对应的计数值,如下表所示。1(do)2(re)3(mi)4(fa)5(so)6(la)7(si)低音1221089791817264中音61544845

29、403632高音30272422201816此次设计的音乐发生器主要实现了以下功能:1. 可演奏不同音阶的乐谱,音符间有节拍的控制和变化,因而音乐更加逼真;2. 放音同时可以同步显示出乐谱;3. 由表格形式给出乐谱,可调整性好,可以很容易更换乐谱。本程序采用的是音符、节奏、音高以类似“三维数组”的方式组织,依靠当前播放的音符偏移值作为“下标”,容易一次性读取音符、节奏、音高信息。音符送往显示模块,节奏用于设定音符的延时,音高用于查找计数器的值。2、8253初始化使用8253前,要进行初始化编程。初始化编程的步骤是: 向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。 向使用的计数器端口写入计数初值。 38253控制字 D7D600:使用0号计数器

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

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