《实验报告3完整版本.2(正式报告).docx》由会员分享,可在线阅读,更多相关《实验报告3完整版本.2(正式报告).docx(8页珍藏版)》请在优知文库上搜索。
1、3.28255A及础实脍一、实验名林8255A基础实醛实验目的1,熟悉GX-8000疏脸系统;2 .进一步熟悉汇编语言程序的设计、调试过程:3 .掌握可编程并行接口8255A方式O的工作原理和汇编方法:实脸内容1 .1.ED静态显示:在8个1.ED上显示组内一个同学学号的后两位对应的二进制缸2 .开关敬显示:使用8255A的AU和B.将8个逻辑开关的状态分别显示在8个1.Eo上。3 .七段数码管显示:在八个七段数码管上显示如内另一名同学学号。四、 实脸部分1 .1.ED静态显示实舲若使用8255A的A口输出学号,则实脸连线如图3.6所示。(2)根据实验要求画出程序流程图,如图3.7所示。(3)
2、完8255A初始化程序:将AD设I1.为方式0,检出。MOVA1.,80H;埴写8255A控制字;A口输出,方式0MOVDX,0283H;填写8255A控制口地址OUTDX,A1.;255A控制字(4)编写汇编语言程序,行添加注择。源代码如下。完善该程序,并为标有;”的代码DATASEGMENT;定义数据段IDDB00110011B;定义学号变量DATAENDSCODESEGMENT;定义代码段ASSUMECS:CODE.DSzDATASTART:MOVAX.DATAMOVDStAX;此处加入8255A初始化程序MOVA1.,80H;康药8255A控制字;A口馀出,方式OMOVDX,0283H
3、;填写8255A控制。地址OUTDX.A1.;8255A控制字MOVA1.,IDMOVDX1OODOHOUTDX1A1.;CODEENDSENDSTAR在icode集成开发环境中编译、博接、运行该程序,观房程序运行性果。实验结果:学号所对应的二进制位所对应的1.ED灯正确的亮了.2 .开关数显示实验(1)使用8255A的BU读入8个泛辑开关的状态数据,然后通过AU将状态数据饰出到1.ED显示。实验连浅如困3.8所示。sJ.mjrB3开共Iu1.示实施上考逐枚(2)程序拳考流程图如图3.9所示。图3.9开关做显示程序参考流将图(3)参考图3.9所示流程图,仿照1.ED静态显示实脸程序编写通程序,
4、调试、运行,观察实脸绿果。程序代码:STACKSSEGMENTS1.ACK滩栈段DW128DUP(?);注意这里只有128个字节STACKSENDSDATSSEGMENT;数据段DATASENDSCODESSEGMENT;代码段ASSUMECS:CODES.DS:DATASSTART:MOVAX.DATAS:初始化MOVDS.XMOVA1.82HMOVDX,O283HOUTDXfcA1.1.PI:MOVDX.O28IHINA1.,DXMOVDXO28OHOUTDXjX1.JMP1.PIMOVAXQ)OH;退出程序INT21HCODESENDSENDSTART实验结果:开启/关闭开关时,对应的1
5、.ED灯马上亮/暗.3 .七段数码皆显示实.蛉(1)根据图3.11所示,GX-8000实验箱上的七段数码管采用共阴机连接,可以得到敦字09所对应的段码.如表3,2所示。GX-8000实脸箱上的八个数码笔1共用段码输入端ag和dp,由位选信号输入端B7B0决定对应的数码管是否显示。如当Bo为1时.右侧第一个数码管显示段码信息:当Bl为1时,右侧第二个数码管显示段码信息.若B7B0输入全为。时,所有数码管关闭显示;反之,全为1时,所有数码管显示相同的信息。为了使八个数码管显示不同的字肪,同一时刻,只能有一个数码管显示,其他均关Ru.好到的实脸连线加图3.10所示。Cl2K*GJM*.一IBo昌皿9
6、15-6a*R字/等(2)为了在八个数码管上得到稳定的显示,需要不断重至刷新显示,程序流程图如图3.11所示。为了提高程序的通用性,便于程序的修改,在编程叶,可以将要显示的八个教定义为字节变量,根据变量的值查段码我,得到段码后再输出显示。银序的数据段可定义为:DATASEGMENT;定义数据及1.EDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;定义段码段NODB1,2,3,4,5,6,7,8;列出待显示的数字DATAENDS查段码表的方法可以参考3.1节弟一个程序的实现方法。(3)编写汇编语言杈序,调试、运行,现察实驻结果。总转程序调试绘脸:在编写动态数
7、码管显示程序时应注意哪些问题?程序代码:DATASEGMENT1.EDDB3FH.O6H.5BH.4FH.66H.6DH.7DH.O7H.7FH.6FHNODB123,45678NUMDB?WHICHDB?DTAENDSCODESEGMENTASSUMECSCODEDS:DATASTART:MOVAX,DATAMOVDS.AXMOVNUM.(X)HMOVVHICH,(XXXMXX)IHMOVA1.f080HMOVDXfc283HOUTDXjX1.MOVAIoNUMMOVAHQ1.EABX.NOMOVAH.0ADDBX.AXMOVA1.BX;将NO中时应数字给1.1.EABX.1.EDMOVAH
8、ADDBX,AXMOVA1.BX:将对应的数码管号码给A1.,用来输出MOVDX.281H:B端口输出数码管段码OUTDXA1.MOVA1.WH1CHMOVAH,0MOVDX.28OH;A跳口输出数码管选择信号OUTDXJX1.RO1.WHICHJCA1.1.DE1.AY;调用延时子程序CMPNUMJJEDES:己经是第八个了,该新轮循环了INCNUM;还不是第八个,继续进行本轮操作JMPQUSHUZIDES:MOVNUM.OOH;清零之后,进行新的一轮操作JMPQUSHUZIDE1.AYPROC:短时子程序PUSHCX:保存环境MOVCX.0010HTl:MOVAX.(K)i()HDECAX
9、JNZT21.oOPTlPoPCX;还原环境RETDE1.YENDPCODEENDSENDSTART实验结果:数码管上显示预先设置好的数字。五、 实腌小结本次实验室8255A基础实验,在本次实验中,我们温习了8255A的使用方法,注意事项。在预习过程,我们自习阅读实验参考书,并结合课本,认真思考,写出了实验代码.在上机过程中,我们调试程序,询问老师,询问同学,展后终于成功完成了实验,达到了预期的效果.在实验的第三部分,数码管显示学号的过程中,最开始只能显示T立,也就是汇编程序没有进行跳转。进过仔细的排查程序,我们发现,在子程序的最后没有加上RET指令,所以无法跳回源程序,故无法实现快速轮流亮数码管的效果,因此也就无法达到实验的预期结果.通过对实验中的突发现象的解决,我们温习了汇编程序,使我们意识至少匚编语言对实验也是非常重要的.在实验过程中,我们将上课时不太懂的部分,通过上机实验,快速地弄明白了。通过上机操作,我们对8255A的了解更加深入具体真实.