北邮微机原理硬件实验-实验报告_第1页
北邮微机原理硬件实验-实验报告_第2页
北邮微机原理硬件实验-实验报告_第3页
北邮微机原理硬件实验-实验报告_第4页
北邮微机原理硬件实验-实验报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术硬件实验报告姓名:曹爽学号:2013210640班级:20132111242016年1月10日

目录实验一:熟悉实验环境及IO的使用 3一、 实验目的 3二、 实验内容及要求 3三、 实验步骤 3四、 程序流程图 4五、 源代码 4六、 思考题 5七、 实验结果和心得体会 6实验二:8255A并行接口应用 7一、 实验目的 7二、 实验内容及要求 7三、 实验步骤 8四、 程序流程图 9五、 源代码 10六、 实验结果和心得体会 14实验三:8253计数器/定时器的应用 15一、 实验目的 15二、 实验内容及要求 15三、 8253定时器 15四、 电路的调试与连接 16五、 实验连接图 16六、 程序流程图 18七、 源代码 19八、 思考题 21九、 实验结果和心得体会 21

ANDAL,20HCMPAL,20HJNZSTOP ;若状态为‘0’,则保持位置不变,暂停INAL,DX ;提取拨码开关右起第2位状态ANDAL,40HCMPAL,40HJNZFAN ;若状态为‘0’,则右移亮灯位置ROLAH,1 ;左移亮灯位置STOP:JMPDISPFAN:RORAH,1DISP:MOVAL,AHOUTDX,AL ;输出到端口,亮灯MOVCX,8000H ;外循环次数MOVBX,8000H ;内循环次数LOOP1:DECBXJNZLOOP1 ;内循环,BX减少到0MOVBH,80H ;重设内循环次数80H次INAL,DXANDAL,10HCMPAL,10H ;提取拨码开关右起第4位状态JNZS ;若为‘1’,则设置内循环次数为10H次MOVBH,10HS:LOOPLOOP1 ;外循环,CX减少到0INAL,DXANDAL,80HCMPAL,80H ;提取拨码开关右起第1位状态JNZLOOP0 ;若为‘0’,则继续显示,否则结束程序MOVAH,4CHINT21HCODEENDSENDSTART思考题通过实验说明用debug中的a命令录入实验中给出的小程序中,有些语句可以不写出“h”字符的原因。答:主要是出于数据辨认的角度。凡是十六进制数据都是要加H的,而地址则不用。这是由于编译时所能识别的数据有很多种,为了保证编译正常进行,必须要告诉编译器数据的类型。地址只有默认的16进制形式,不需指定类型就能完成正确的编译,所以无须加H。而在DEBUG环境下,它的默认数据格式就是十六进制的,所以就不需要写出“H”字符;否则通不过编译。实验结果和心得体会这次实验是我们第一次微原硬件实验,之前的一次软件实验让我们熟悉了DOS界面下的操作,由于间隔时间较长,这次我们又重新熟悉了一遍。并且,与软件实验不同,硬件实验是通过编程的方式作用于硬件实验板上,为此,我们首先熟悉了一下实验板,编写了一些简单的小程序控制实验板。在熟悉了I/O端口之后,我们开始编写跑马灯程序。并且能够通过拨码开关的选择,控制工作模式、速度、反向、暂停等功能。这次实验的要点是对I/O接口译码电路的理解以及使用,我们通过测试,理解了地址与端口的对应情况,进而才能编写出跑马灯程序。通过本次实验,我们掌握了地址译码电路的设计方法和实现原理,加深了对硬件的I/O接口技术的理解。实验中出现的一些问题,也成为我们调试程序的宝贵经验,为后续的实验打下了基础。

实验二:8255A并行接口应用实验目的掌握8255A的功能及方式0、1的实现。熟悉8255A与CPU的接口,以及传输数据的工作原理及编程方法。了解七段数码管显示数字的原理。掌握同时显示多位数字的技术。实验内容及要求在实验一的基础上学习PIO芯片(8255)编程应用,熟悉平台的主要内容。CS用Y0(EE00H)。(一)简要说明:在方式0(输入/输出)下,以A口为输出口,B口为输出口,A口接六个共阴极数码管的八位段码,高电平点亮数码管的某一段,B口接数码管的位选(即要使哪个数码管亮),高电平选中某一位数码管点亮。8255A中 A端口地址E800HB端口地址E801HC端口地址E802H控制地址E803H八段数码管的显示规律及数码管的位选规律自己查找,可用实验一中,学过的I、O令来做。(二)6位数码管静态显示在数码管电路上静态地显示6位学号,当主机键盘按下任意键时,停止显示,返回提示:该电路6个数码管的同名阳极段已经复接,当段选寄存器寄存了一个字型之后,6个数码管都有可能显示出相同的数字。如果要使6个数码管“同时”显示不同字,必须采用扫描显示的方法,通过选位寄存器选择某一位数码管,显示其数字(对应为1),然后关闭此数码管,再选择下一位数码管进行显示;如果在一秒钟内,每一位管都能显示30次以上,则人眼看到的是几位数码管同时在显示。实验证明,在扫描显示过程中,每一位显示延迟1ms是最佳选择。(三)6位数码管动态显示要求在数码管电路1-6位数码管上按图2.2.1所示的规律,动态显示字符串HELLO,当主机键盘按下任意键时结束。图2.2.1字符串动态显示示意图提示:①本实验应在上面实验的基础上完成。②在数据段,按下列规律设置12个字型码:MESGDB0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0POINTDWMESG……POINT单元存放MESG单元的有效地址,程序取出POINT单元的内容→BX,然后用BX地址取数送数码管电路,扫描显示6个字符。每过0.5s将POINT单元的内容加1,再将POINT单元的内容→BX,……。POINT单元内容加1,使字符串显示的首地址向高地址移动一个单元,从而使6位字符串向“左”移动一位,实现动态显示。③动态显示的速度可控制(快或慢),利用实验一读入端口的功能。实验步骤编写和调试步骤同实验一,不再赘述。程序流程图图2.4.1数码管静态显示程序流程图图2.4.1数码管动态显示程序流程图源代码6位数码管静态显示:DATASEGMENTSHOWDB0F4H,21H,0EDH,0DDH,39H,0DDH ;210646COUNTEQU$-SHOWSLDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA ;segdataMOVDS,AXNEXT:MOVCX,COUNT ;显示个数,为6LEABX,SHOW ;MOVBX,OFFSETSHOWMOVSL,01H ;第一个点亮位置MOVAL,80HMOVDX,0EE03H ;设置输出端口OUTDX,AL ;设置标志位为‘1’,A、B口为输出AGAIN:MOVAL,SLMOVDX,0EE01H ;B口输出数码管选通位置OUTDX,ALMOVAL,[BX]MOVDX,0EE00H ;A口输出数据段数据到数码管OUTDX,ALMOVAL,00HMOVDX,0EE00HOUTDX,AL ;清除显示,防止程序结束残留显示INCBX ;显示下一个数字SHLSL,1 ;Sl左移依次向左选通数码管LOOPAGAIN ;循环此过程COUNT次MOVAH,0BHINT21H ;若键盘有输入则跳出程序ORAL,ALJZNEXTMOVAH,4CHINT21HCODEENDSENDSTART6位数码管动态显示:DATASEGMENTMESGDB0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0DATAENDSSTACKSEGMENTSTACK'STACK'DB100DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKMAINPROCFARMOVAX,DATAMOVDS,AXMOVES,AXMOVAL,80HMOVDX,0E803H ;设置标志位为‘1’,A、B口为输出OUTDX,ALSTART:MOVBX,OFFSETMESGMOVCX,07HLOP7:MOVDX,0EEE0H ;从拨码开关左起3位读入数据到DXINAL,DXINCALANDAL,07HXORAH,AHMOVDX,AX ;DX为外循环次数,控制静态显示时间LOOP0:CALLDISPDECDXJNZLOOP0 ;显示当前状态直至DX=0INCBX ;BX决定显示哪6个数据LOOPLOP7 ;重新读取拨码开关到DXJMPSTART ;当7种状态都结束后重新开始MAINENDPDISPPROCNEARPUSHCXPUSHDXPUSHAXMOVBP,0044H ;控制一次外循环显示时间LOPX:XORSI,SIMOVCX,06HMOVDX,0EE00H ;设置端口为A口MOVAH,01H ;第一次选通最右数码管LOP6:MOVAL,MESG[BX+SI]OUTDX,AL ;显示数据到数码管MOVAL,AHMOVDX,0EE01H ;设置端口为B口OUTDX,AL ;选通数码管MOVDX,0EE00H ;重新设置端口为A口ROLAH,1 ;选择下一个数码管INCSI ;选择下一个数据CALLDELAYCALLKEY ;检验按键是否有输入LOOPLOP6DECBPJNZLOPX ;循环,保持静态显示POPAXPOPDXPOPCXRETDISPENDPKEYPROCNEAR ;检测键盘输入PUSHAXMOVAH,0BHINT21HORAL,ALJZGOON ;没有键盘输入则继续显示MOVDX,0EE00H ;有任意输入则清空显示,跳出程序MOVAL,0HOUTDX,ALMOVAH,4CHINT21HGOON:POPAXRETKEYENDPDELAYPROCPUSHAXPUSHCXMOVAX,0002H ;外层循环LOPD:MOVCX,0HLOOP$ ;内层循环DECAXJNZLOPDPOPCXPOPAXRETDELAYENDPCODEENDSENDMAIN实验结果和心得体会这次实验是利用8255芯片进行并口接口的应用。由于数码管一次只能显示一个,所以我们采用扫描显示的方法,把间隔时间调短,使人眼感觉好像所有数码管同时显示一样。我们首先利用位选控制哪个数码管亮,之后通过段选哪个数码管显示什么。并且设置数码管静态显示出学号后六位“210646”。随后的动态显示也是一样,通过首地址移动,使6位字符串向“左”移动一位,实现动态显示出“HELLO”。我觉得这次实验最重要的是实现静态显示和动态显示的一种思想——扫描的思想——通过快速扫描可以让人产生所有数码管同时显示的感觉。并且,本次实验的编程难度也有所提高,对于我们起到了一定的锻炼作用。

实验三:8253计数器/定时器的应用实验目的学习掌握8253用作定时器的编程原理。实验内容及要求完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。音符频率对照音符12345671·频率(Hz)256288320341384426.64805128253定时器I8253和I8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。I8254是I8253的改进型。微机系统定时器和实验箱定时器(1)微机系统使用的8254,其3个通道均有固定的用途:0号计数器为系统时钟源,每隔55ms向系统主8259IR0提一次中断请求;1号计数器用于动态存储器的定时刷新控制;2号计数器为系统的发声源。用户在使用微机系统的时候,可以使用0号和2号计数器,但不能改变对1号计数器的初始化。(2)实验箱上的8253,其数据线D7—D0,地址线A1、A0和控制线RD、WR通过总线驱动卡和微机系统的三总线相连。除此之外,三个计数器的引出段和片选端都是悬空的,这意味着实验箱上的8253的三个计数器都归用户使用,你可以单独使用其中的一个计数器,也可以串联使用其中的2个或3个计数器。(3)8253计数器的输入信号,其频率不能超过2MHz,否则长时间使用,芯片过热,容易烧毁。8253初始化使用8253前,要进行初始化编程。初始化编程的步骤是:①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。②向使用的计数器端口写入计数初值。8253控制字D7D6=00:使用0号计数器,D7D6=01:使用1号计数器D7D6=10:使用2号计数器,D7D6=11:无效D5D4=00:锁存当前计数值D5D4=01:只写低8位(高8位为0),读出时只读低8位D5D4=10:只写高8位(低8位为0),读出时只读高8位D5D4=11:先读/写低8位,后读/写高8位计数值D3D2D1=000:选择方式0,D3D2D1=001:选择方式1D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3D3D2D1=100:选择方式4,D3D2D1=101:选择方式5D0=0:计数初值为二进制,D0=1:计数初值为BCD码数电路的调试与连接测试:在Debug状态下,用“O”命令测试8353的发生功能,3组通道工作是否正常。电路连接:8253的CS接译码器输出Y1其地址为EE20-EE27H8253的OUT接蜂鸣器的BELL端8253的门控信号GATE接+5V8253的CLK端接Q7(32KHz)清零复位电路中的T/C端接地(或接RESET端)注意:由于8253计数速率应小于2MHz,CLK0的输入信号必须由8MHz经393分频到小于2MHz后使用。393分频之后,Q0输出为4MHz,Q1输出为2MHz……Q7输出32KHz。编程提示:8253控制端口地址为EE23H定时器0地址为EE20H定时器1地址为EE21H定时器2地址为EE22H定时器可工作在方式3下。实验连接图8253定时器连接如图3.5.1所示,蜂鸣器电路、时钟预分频电路连接如图3.5.2和3.5.3所示。图3.5.18253定时器连接图图3.5.2蜂鸣器电路图3.5.3时钟预分频电路程序流程图图3.6.1程序流程图源代码DATASEGMENT ;数据段SONGDB7DH,7DH,53H,53H,4BH,4BH,53H DB5EH,5EH,64H,64H,6FH,6FH,7DH DB53H,53H,5EH,5EH,64H,64H,6FH DB53H,53H,5EH,5EH,64H,64H,6FH DB7DH,7DH,53H,53H,4BH,4BH,53H DB5EH,5EH,64H,64H,6FH,6FH,7DH ;音乐音符CONTEQU$-SONGNUMDB21H,21H,0D9H,0D9H,0DDH,0DDH,0D9H DB39H,39H,0F1H,0F1H,0F4H,0F4H,21H DB0D9H,0D9H,39H,39H,0F1H,0F1H,0F4H DB0D9H,0D9H,39H,39H,0F1H,0F1H,0F4H DB21H,21H,0D9H,0D9H,0DDH,0DDH,0D9H DB39H,39H,0F1H,0F1H,0F4H,0F4H,21H ;数码管字符DATAENDSSTACKSEGMENT DB100DUP(?)STACKENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVSI,OFFSETSONG ;SI存储音乐音符 MOVDI,OFFSETNUM ;DI存储数码管字符 MOVCX,CONTLOOP1:CMPBX,0 JNZCONTN MOVBX,07HCONTN:MOVDX,0EE23H ;8253控制字 MOVAL,16H ;0号计数器,只读写低8位,工作方式3,2进制 OUTDX,AL MOVDX,0EE20H MOVAL,[SI] OUTDX,AL ;蜂鸣器响 MOVDX,0EE03H ;8255控制字 MOVAL,10001001B ;方式3工作 OUTDX,AL MOVDX,0EE01H ;数码管位选 MOVAL,01H OUTDX,AL MOVDX,0EE00H ;数码管显示 MOVAL,[DI] OUTDX,AL ;数码管显示音符 CALLDELAY DECBX JNZNEXT CALLDELAY ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论