您好,欢迎访问三七文档
实验一系统认识实验一、实验目的学习Dais软件的操作,熟悉程序编写的操作步骤及调试方法。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套。三、实验内容编写程序,将80h~8Fh共16个数写入单片机内部RAM的30h~3Fh空间。四、实验步骤1.运行Dais软件,进入集成开发环境,软件弹出设置通信端口对话框(如图2-1-1),请确保实验装置与PC正确连接,并已打开实验装置电源,使其进入在待命状态。这里选择与实验装置实际相连的通信端口,并单击“确定”。如通信正确则进入Dais软件主界面,否则弹出“通信出错”的信息框(如图2-1-2),请检查后重试。图2-1-1设置通信端口对话框图2-1-2通信错误信息框2.通信成功后,单击菜单栏“设置”→“仿真模式”项打开对话框,选择需要设置型号、程序/数据空间。这里我们将型号设置为“MCS-51实验系统”,外部数据区设置为“系统RAM”,用户程序区设置为“片外(EA=0)”,如图2-1-3所示,最后单击“确定”按钮保存设置。图2-1-3设置工作方式对话框3.工作方式设置完毕后,单击菜单栏“文件”→“新建”项或按Ctrl+N组合键(建议单击工具栏“”按钮)来新建一个文件,软件会出现一个空白的文件编辑窗口。4.在新窗口中输入程序代码(A51\2_1.ASM):ORG0000HLJMPMAINORG0100HMAIN:MOVR1,#30H;片内RAM首地址MOVA,#80H;写入数据初值MOVR7,#16;循环变量LOOP1:MOV@R1,A;写数据到片内RAMINCR1;地址增量INCA;数据+1DJNZR7,LOOP1;循环变量-1,不为0继续SJMP$;结束END5.单击菜单栏“文件”→“保存”项(建议单击工具栏“”按钮)保存文件。若是新建的文件尚未命名,系统会弹出文件保存对话框(如图2-1-4),提示用户选择文件保存的路径和文件名,再单击“保存”按钮。图2-1-4文件保存对话框6.单击菜单栏“编译”→“文件编译、链接、装载”项或按Ctrl+F9组合键(建议单击工具栏“”按钮),对当前文件进行编译和链接,若程序无语法错误,则开始自动装载,装载完毕提示如图2-1-5所示的信息框。图2-1-5编译信息框7.当编译无误且下载成功后,即进入调试状态,当前PC行高亮突出显示,源程序窗口左侧显示小圆点以标识可执行语句行,如图2-1-6所示。图2-1-6进入调试状态的主界面8.单击菜单栏“视图”→“存储空间”→“CPU内部存储区”项打开内存窗口,如图2-1-7。文件存放的路径注意:由于编译器对路径和文件名的要求,请确保路径和文件名均不含中文和空格,不要将文件存放在“桌面”、“我的文档”等路径,并遵循“8.3”命令规则,即前缀长度不超过8字符、后缀长度不超过3字符。输入新文件名图2-1-7初始时的CPU内部存储区数据显示9.单击菜单栏“调试”→“单步运行”项或按F7快捷键(建议单击工具栏“”按钮),单步运行程序,观察寄存器和内存单元的数据变化;10.也可单击菜单栏“调试”→“连续运行”项或按F9快捷键(建议单击工具栏“”按钮),开始全速运行。11.在全速运行后,须暂停运行以便在待命状态查看运行结果,暂停可单击菜单栏“调试”→“暂停”项或按Esc快捷键(建议单击工具栏“”按钮)。12.再观察CPU内部存储区单元,验证程序运行结果(如图2-1-8所示)。图2-1-8程序运行后的CPU内部存储区数据显示13.除了用程序修改内存单元,可以在Dais软件直接修改。用鼠标单击某个内存单元后,按键盘的0~9或A~F,直接写入数据以覆盖该内存单元原有数据。如图2-1-9所示。图2-1-9修改后的内存单元数据显示14.除了单步或全速运行,还可以使用断点手段来调试程序。单击菜单栏“调试”→“复位”项或按Ctrl+F2组合键(建议单击工具栏“”按钮)进行复位,以便重新运行程序。15.单击源程序编辑窗口左侧的行号即可快速设置断点,断点行为红色高亮显示(如图2-1-10),若要删除该断点只需再次单击断点行的行号即可清除断点。图2-1-10设置断点后的源程序窗口16.设置断点后,单击菜单栏“调试”→“连续运行”项或按F9快捷键(建议单击工具栏“”按钮),使用全速运行方式,待程序运行到断点行时自动停下(如图2-1-11)。图2-1-11全速运行后遇断点暂停的源程序窗口五、操作练习修改程序,将CPU内部存储区30h~3Fh单元的16个数据复制到40h~4F单元,通过单步、断点等调试手段验证程序功能,查看40h~4Fh单元的数据是否传送正确。ORG0000HLJMPMAINORG0100HMAIN:MOVR1,#30HMOVR0,#40H;片内RAM首地址MOVA,#80H;写入数据初值MOVR7,#16;循环变量LOOP1:MOVA,@R1MOV@R0,AINCR1INCR0;地址增量DJNZR7,LOOP1;循环变量-1,不为0继续SJMP$;结束END六、实验心得通过第一次的上机实验,我初步接触到了Dais软件,并对其有了一定的熟悉,能顺利完成程序的单步运行,连续运行,设置断点,查看存储器等操作,并掌握了该软件程序编写的操作步骤及调试方法,这对我接下来的实验很有帮助。实验二数码转换实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套。三、实验内容及步骤1.BCD整数转换为二进制整数将BCD码整数0~255存入片内RAM的20h、21h、22h中,然后转换为二进制整数00h~FFh,保存到寄存器R4中。参考程序(A51\2_2_1.ASM):ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#20H;BCD存放高位地址MOVR7,#3;BCD码0~255,最多3位CLRAMOVR4,ALP1:MOVA,R4MOVB,#10MULAB;乘10ADDA,@R0;加下一位的值INCR0;指向下一单元MOVR4,A;结果存入R4DJNZR7,LP1;转换未结束则继续SJMPMAIN;设置断点,观察实验结果R4中的内容END实验步骤:1)编写程序,经编译、链接无误后装载到实验系统;2)修改CPU内部存储器20h、21h、22h单元的内容,如:00h,05h,08h;3)在SJMPMAIN语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看寄存器R4的内容,应为3Ah;5)重新修改20h、21h、22h单元的内容,再次运行程序,验证程序的正确性。2.二进制整数转换为十进制整数将16位二进制整数存入R3、R4寄存器中,转换为十进制整数,以组合BCD形式存储在CPU内部RAM的20h、21h、22h单元中。参考程序(A51\2_2_2.ASM):ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#22H;转换结果低位地址MOVA,R0PUSHACC;A累加器压栈MOVR7,#3CLRALP1:MOV@R0,A;结果存储地址清零DECR0DJNZR7,LP1POPACCMOVR0,AMOVR7,#16LP2:PUSHACCCLRCMOVA,R4;R4中为二进制数的低位RLCAMOVR4,AMOVA,R3;R3中为二进制数的高位RLCAMOVR3,AMOVB,#3LP3:MOVA,@R0ADDCA,@R0;执行乘2操作DAA;十进制调整MOV@R0,A;结果保存DECR0DJNZB,LP3POPACC;A累加器出栈MOVR0,ADJNZR7,LP2SJMPMAIN;设置断点观察结果,可进行下一次转换END实验步骤:1)编写程序,程序流程图如图2-2-1所示,经编译、链接无误后装载到实验系统;2)修改R3、R4寄存器,例如分别为A2h、FCh;3)在SJMPMAIN语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看CPU内部存储器20h的内容,应为:04h、17h、24h;5)反复修改R3、R4寄存器的值,验证程序的正确性。开始R0←转换结果起始地址结果存储单元清零循环计数器R7←16R3R4左移1位B←3A←(R0)×2+C十进制调整R0←R0-1R0←R0-1B-1=0?R0←转换结果起始地址R7-1=0?结束是是否否图2-2-1 程序流程图四、实验心得在这次实验中,我通过运行既定程序后对程序经行了分析,掌握了将BCD整数转换为二进制整数和二进制整数转换为十进制整数的程序设计方法,对数制的转换有了一个更深刻的认识,并自己编程实现了二进制数和BCD整数的转换,受益匪浅。实验三运算程序设计实验一、实验目的了解运算类指令以及运算类程序的设计方法。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套。三、实验内容及步骤1.多字节加法程序多字节十进制加法程序,被加数存放于20h起始的RAM空间,加数存放于28h起始的RAM空间,将两数相加,结果存放于20h起始的RAM空间。参考程序(A51\2_3_1.ASM):ORG0000HLJMPMAINORG0100H;执行程序前先修改R7的值MAIN:MOVR0,#20H;被加数起始地址MOVR1,#28H;加数起始地址CLRCLP1:MOVA,@R0ADDCA,@R1;带进位加法运算DAA;十进制调整MOV@R0,A;保存运算结果INCR0;指向下一单元INCR1DJNZR7,LP1CLRAMOVACC.0,CMOV@R0,A;最高位有进位时此地址中为1NOP;设置断点查看运算结果SJMPMAIN;若需继续运算,改变加数,被加数及R7END实验步骤:1)编写程序,程序流程图如图2-3-1所示,经编译、链接无误后装载到实验系统;2)为被加数及加数赋值:修改内存单元20h为1234h、28h为1111h,寄存器R7为02h;3)在SJMPMAIN语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看内存单元20h起始的内容,应为:2345h;5)反复修改被加数、加数及字节数R7的值,验证程序的正确性。开始R0←被加数起始地址R1←加数起始地址取出被加数加上加数进行十进制调整保存结果R0←R0+1R1←R1+1运算结束?设置最高位结束是否图2-3-1 程序流程图2.双字节无符号数乘法利用单字节乘法指令来扩展成多字节乘法运算,扩展时以字节为单位进行乘法运算。被乘数在R2、R3中,乘数在R4、R5中,乘积保存R0指向的20h~23h内存单元。运算法则见图2-3-2。R2R3×R5HR3×R5LR3R4R5×R2×R5HR2×R5LR3×R4HR3×R4LR2×R4HR2×R4L+(R0-3)(R0-2)(R0-1)(R0)图2-3-2乘法运算法则参考程序(A51\2_3_2.ASM):ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#23H;运算结果低位地址MOVA,R0PUSHACCCLRAMOVR7,#4LP1:MOV@R0,A;运算结果存储单元清零DECR0DJNZR7,LP1POPACCMOVR0,AMOVA,R3MOVB,R5MULAB;计算R3*R5MOV@R0,A;计算的低8位保存MOVA,BDECR0MOV@R0,A;保存运算的高8位MOVA,R2MOVB,R5MULAB;计算R2*R5ADDA,@R0;此次运算低8位+R3*R5运算的高8位MOV@R0,ADECR0MOVA,BADDCA,#00H;R2*R5的高8位加进位位MOV@R0,AINCR0MOVA,R3MOVB,R4MULAB;计算R3*R4ADDA,@R0MOV@R0,AMOVA,BDECR0ADDCA,@R0MOV@R0,ADECR0CLRAADDCA,#00HMOVA,@R0MOVA,R2MOVB,R4MULAB;计算R2*R4INCR0ADDA,@R0MOV@R0,AMOVA,BDECR0ADDCA,@R0MOV@R0,ANOP;设置断点查看运算结
本文标题:嵌入式系统实验报告
链接地址:https://www.777doc.com/doc-4739398 .html