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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

北邮微机原理硬件实验报告Word文档下载推荐.docx

1、Y图1-2四、源程序DATA1 EQU 2A0H ;定义数据变量代表地址2A0HDATA2 EQU 2A8H ;定义数据变量代表地址2A8HCODE SEGMENT ASSUME CS:CODEBEGIN: MOV DX,DATA1 OUT DX,AL ;向地址DATA1输出信号 CALL DELAY ;调用延时子程序 MOV DX,DATA2 OUT DX,AL CALL DELAY MOV AH,1 ;检测是否有键盘输入 INT 16H JE BEGIN ;如果没有输入,则循环 MOV AX,4C00H ;返回DOS INT 21HDELAY PROC NEAR ;延时子程序 MOV CX

2、,0FFFFHLP1: MOV BX,200LP2: DEC BX JNZ LP2 LOOP LP1 RETDELAY ENDPCODE ENDS END BEGIN 五、实验结果运行程序后可以看到LED灯亮灭交替,改变延时时间,灭的持续时间增加。六、实验总结由于这个实验是第一次接触,虽然比较简单,但是还是出现了很多的问题。刚开始忘记写延时子程序,后来发现后加上,发现LED灯还是一直亮,到最后才发现原来是延时的时间太短,所以延时采用了两层循环以增加延时长度。七、实验收获与心得体会通过这个实验,首先让我对汇编程序的要素有了更加清晰的认识,就是汇编程序便需要有代码段;其次,当汇编程序出现问题时,掌

3、握了一定的解决方法。实验二简单并行接口掌握简单并行接口的工作原理及使用方法。1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座, 74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0D7,8个Q输出端接LED显示电路L0L7。2、编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座, 74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0K7,8个数据

4、输出端分别接数据总线D0D7。4、用逻辑电平开关预置某个字母的ASC码,编程输入这个ASC码,并将其对应字母在屏幕上显示出来。5、接线:1)输出按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门) 2)输入按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)1、硬件接线图图2-1 2、软件程序流程图图2-2 四、源代码 XOR AX,AX MOV AH,1 CMP AL,1BH JZ ED MOV DX,2A8H LOOP BEGINED: MOV AX,4C00H END BEGIN连接好电路后,运行程序,然后用键盘输入任意一个字母或者数字,然后发

5、现LED灯的亮灭情况正好表示了所输入字符的ASC码。此次实验代码比较简单,看好输出端基本上就不会有什么大的代码问题,这个实验关键的一点我觉得是连接电路,由于实验所需电路要连接的线比较多,所以在连接线的时候一定要认真仔细,一旦连错很难检查出来,那样的话就只能重新连接了。这个实验主演还是让我们进一步接触这种软硬结合的方式,以便不断地了解熟悉它,通过这次实验,除实验本身外,由于要检测键盘的输入,我还对理论课上讲的中断号01H有了更加深刻的印象。实验三可编程并行接口8255 1、通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。二、实验原理及内容 18255的工作方式一片82

6、55内部有3个端口,A口可以工作在方式0、方式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表示控制寄存器中

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

8、发器置1,从而允许端口提出中断请求。注意:“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据”实验内容:1)、实验电路如图4-3-1,8255C口接逻辑电平开关K0K7,A口接LED显示电路L0L7。2)、编程从8255C口输入数据,再从A口输出。3)、接线:PC7PC0/8255 接 K7K0/逻辑电平开关 PA7PA0/8255 接 L7L0/LED显示 CS/8255 接 Y1/IO地址三、硬件连线图和软件程序流程图1、硬件连线图图3-1 MOV DX,28B

9、H MOV AL,10001001B MOV DX,28AH IN AL,DX MOV DX,288H连接好电路,运行程序后,可以发现根据开关闭合的不同,LED灯亮灭的情况也随之而改变,实现了实验中的要求。由于此实验比较简单,实验过程中没有出现什么大的问题。只是一开始的时候发现在我运行完后,发现改变开关的闭合情况,LED灯的亮灭情况不变,后来发现每次程序运行时只读取一次数据,而在程序运行的过程中并不读取数据,所以就出现了那样的情况。通过这次试验,让我对8255这个元器件有了一定的认识,进一步熟悉了汇编语言编程,为将来更加困难的实验做了准备。实验四七段数码管掌握数码管显示数字的原理、静态显示:按

10、4-4-1连接好电路,将8255的A口PA0PA7分别与七段数码管的段码驱动输入端adp相连,位码驱动输入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。)2、接线: PA7PA0/8255 接dpa/LED数码管 PC3PC0/8255 接 S3S0/LED数码管三、硬件连接图和软件程序流程图1、硬件连接图图4-1图4-2DATA SEGMENTDATA0 EQU 3FHDATA3 EQU 4FHDATA4 EQU 66HDATA6 EQU 7

11、DHDATA ENDSSTACK SEGMENT STACK STACKDB 100 dup(?STACK ENDSASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FAR MOV AX, DATA MOV DS, AX MOV AL,80H MOV DX,28BH LOOP1: MOV DX,28AH MOV AL,08H MOV DX,288H MOV AL,DATA0 MOV AL,04H MOV AL,DATA3 MOV AL,02H MOV AL,DATA4 MOV AL,01H MOV AL,DATA6 JZ LOOP1START ENDPDELA

12、Y PROC NEAR MOV CX,00FFHEND START连接好电路图,然后运行程序,在数码管上显示我的学号0346四个数字。最开始的时候实验确实出现了一些问题,跟我想的不一样。由于实验要求是在4个数码管上同时显示四个数字,所以刚开始我认为如果要延时程序,延时时间应该很短,因此我认为不用延时程序,而结果没有延时程序出不来结果,显示一群乱码。之后我加上延时程序后,数码管显示就变得正常了。这个程序的关键应该就是控制字的确定,然后数码管方面一定要有一组选通信号。这个实验告诉我在做这类实验时千万不要想当然,一定要按照实际的要求一步一步来,不要想着“偷工减料”图省事,关键是要踏实。其次是通过这个

13、实验让我对8255这个芯片有了更加深刻的认识,对于控制字的理解更加深刻。实验八可编程定时器计数器(8253/8254)一、实验目的:学习掌握8253用作定时器的编程原理;8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。18253初始化使用8253前,要进行初始化编程。初始化编程的步骤是:1 向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。2 向使用的计数器端口写入计数初值。 28253控制字D7D600:使用0号计数器,D7D601:使用1号计数器D7D610:使用2号计数器,D7D611:无效D5D400:锁存当前计数值D5D40

14、1:只写低8位(高8位为0),读出时只读低8位D5D410:只写高8位(低8位为0),读出时只读高8位D5D411:先读/写低8位,后读/写高8位计数值D3D2D1000:选择方式0,D3D2D1001:选择方式1 D3D2D1X10:选择方式2,D3D2D1X11:选择方式3 D3D2D1100:选择方式4,D3D2D1101:选择方式5 D00:计数初值为二进制,D01:计数初值为BCD码数3、接线: CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟 OUT0 /8253 接喇叭或蜂鸣器4、完成一个音乐发生器,通过喇叭或蜂鸣器

15、放出音乐,并在数码管上显示乐谱。音符频率对照三、硬件接线图和软件程序连接图2、软件程序连接图BUF1 DB 06H 5BH 4FH 66H 6DH 7DH 07H 7FHBUF2 DW 3906,3472,3125,2933,2604,2344,2083,1953 ASSUME DS:DATA,CS: MOV CX,08H LEA SI,BUF1 MOV BX,OFFSET BUF2 MOV DX,283H MOV AL,37HL1: MOV DX,280H MOV AX,BX MOV AL,AH MOV AL,SI INC SI INC BX LOOP L1 JE BEGINDELAY PR

16、OC NEAR PUSH CX PUSH BX MOV BX,100 POP BX POP CXDELAY ENDP连接好电路后,运行程序,然后会听见蜂鸣器按照do/re/mi/fa/so/la/si/do依次响,当有键盘输入时,声音中止。 这个实验思路比较简单,所以在写好代码后就基本上没有什么问题,只是个人觉得我写的原来的代码有点冗杂(原来是每一个音符都单独写一段汇编程序),其实有很多都可以用一个循环实现的,并且后来我也做了很多的尝试,但是多次的尝试都失败了,失败基本上都是由于寄存器不够用了。后来突然想到了理论课上讲的推入堆栈保护,一下子恍然大悟,这就是现在代码的由来,个人觉得这个实验我还是

17、下了一番苦心的。 这个实验毋庸置疑地让我学会了很多东西,更加熟悉了汇编程序,之前老师上课讲的什么推入堆栈保护,当时根本不理解,不知道为什么要这样做,这次实验让我彻底明白了这样做的意义:就是有时候要多次用到一个寄存器时一定要先推入堆栈保护,这样的话就不会影响在别的地方用相同的寄存器了。此外,又学习了一种元器件,即8253计数器,对于微机的原理有了更加上课的理解。实验十六串行通讯8251 1、了解串行通讯的基本原理。2、掌握串行接口芯片8251的工作原理和编程方法。1、按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。2、

18、编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。)实现自发自收。 CLK0 /8254 接 1M时钟 GATE0 /8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO地址 CS /8251 接 Y7 /IO地址 RXD /8251 接 TXD /82514、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。5、8254计数器的计数初值=时钟频率/(波特率波特率因子)

19、,这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。6、收发采用查询方式。三、硬件接线图与软件程序流程图图16-1 MOV AL,16H MOV AL,52 MOV DX,2B9H MOV AL,40H NOP MOV AL,0EHGOON: TEST AL,01H JZ GOON MOV AH,01H JE ED ADD AL,01H MOV DX,2B8HRECIEVE: TEST AL,02H JZ RECIEVE MOV AH,02H MOV DL,AL JMP GOON连接好硬件电路后,运行程序,然后会提示用键盘输入一个字符,结果发现当输入一个字符

20、后,在屏幕上紧接着会显示出来在ASC码表中排在该字符后的字符,比如输入1,紧接着在屏幕上会显示2.这次实验过程中一度出现了“超出我能力范围“的问题,怎么做都解决不了,问了很多人,都没有办法,后来经过我反复的看书上讲的关于8251的那部分内容终于弄懂了。实验过程中出现的问题是,每次在我输入一个字符时,屏幕上显示的不是该字符后面的字符,而是上次输入字符后面的字符。经过我反复对书上的内容进行了研究后,发现当接收字符时,不能仅仅判断一次状态字,要一直判断状态字直到它有效,这样就可以解决上述问题了。这次实验真正让我体会到了,当我们遇到问题时,不要“病急乱投医”,一定要静下心来自己找一下问题的所在,想不出来就回去重新研究一下元器件的工作原理,因为万变不离其宗,只要你对它的原理了解的一清二楚后,什么样的问题都可以解决了。然后就是深刻的明白了8251的工作原理,以及在对它写控制字时命令控制字和状态控制字的顺序。实验总结通过几次的微原硬件实验,虽然不能说对汇编语言编程完全掌握了,但是确实汇编能力增长了不少,不得不肯定微原实验的意义。此外对课上讲的一些元器件起到了巩固的作用,个人觉得微机原理硬件实验很有必要,理论实践相结合。最后感谢王老师在实验过程中对我的指导和帮助。

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

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