嵌入式系统实验报告_第1页
嵌入式系统实验报告_第2页
嵌入式系统实验报告_第3页
嵌入式系统实验报告_第4页
嵌入式系统实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

.. .. ..实验一 系统认识实验一、实验目的学习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 通信错误信息框通信成功后,单击菜单栏“设置”→“仿真模式”项打开对话框,选择需要设置型号、程序/数据空间。这里我们将型号设置为“MCS-51实验系统”,外部数据区设置为“系统RAM”,用户程序区设置为“片外(EA=0)”,如图2-1-3所示,最后单击“确定”按钮保存设置。图2-1-3 设置工作方式对话框3. 工作方式设置完毕后 ,单击菜单栏“文件”→“新建”项或按 Ctrl+N 组合键(建议单击工具栏“ ”按钮)来新建一个文件 ,软件会出现一个空白的文件编辑窗口 。在新窗口中输入程序代码(A51\2_1.ASM):ORG0000HLJMPMAINORG0100H. 专业.专注 ... .. ..MAIN:MOVR1,#30H;片内RAM首地址MOVA,#80H;写入数据初值MOVR7,#16;循环变量LOOP1:MOV@R1,A;写数据到片内RAMINCR1;地址增量INCA;数据+1DJNZR7,LOOP1;循环变量-1,不为0继续SJMP$;结束END单击菜单栏“文件”→“保存”项(建议单击工具栏“”按钮)保存文件。若是新建的文件尚未命名 ,系统会弹出文件保存对话框 (如图 2-1-4),提示用户选择文件保存的路径和文件名 ,再单击“保存”按钮。文件存放的路径注意:由于编译器对路径和文件名的要求,请确保路径和文件名均不含中文和空格,不要将文件存放在“桌面”、“我的文档”等路径,并遵循“ 8.3”命令输入新文件名 规则,即前缀长度不超过8字符、后缀长度不超过3字符。图2-1-4 文件保存对话框单击菜单栏“编译”→“文件编译、链接、装载”项或按Ctrl+F9组合键(建议单击工具栏“ ”按钮),对当前文件进行编译和链接 ,若程序无语法错误 ,则开始自动装载,装载完毕提示如图 2-1-5所示的信息框。. 专业.专注 ... .. ..图2-1-5 编译信息框当编译无误且下载成功后,即进入调试状态,当前PC行高亮突出显示,源程序窗口左侧显示小圆点以标识可执行语句行 ,如图2-1-6所示。图2-1-6 进入调试状态的主界面8. 单击菜单栏 “视图”→“存储空间 ”→“CPU 内部存储区 ”项打开内存窗口 ,如图2-1-7。图2-1-7初始时的CPU内部存储区数据显示单击菜单栏“调试”→“单步运行”项或按F7快捷键(建议单击工具栏“”按钮),单步运行程序,观察寄存器和内存单元的数据变化;. 专业.专注 ... .. ..10. 也可单击菜单栏 “调试”→“连续运行”项或按 F9快捷键(建议单击工具栏 “ ”按钮),开始全速运行。11. 在全速运行后 ,须暂停运行以便在待命状态查看运行结果 ,暂停可单击菜单栏 “调试”→“暂停”项或按Esc快捷键(建议单击工具栏 “ ”按钮)。再观察CPU内部存储区单元,验证程序运行结果(如图2-1-8所示)。图2-1-8程序运行后的CPU内部存储区数据显示除了用程序修改内存单元,可以在Dais软件直接修改。用鼠标单击某个内存单元后,按键盘的 0~9 或 A~F,直接写入数据以覆盖该内存单元原有数据 。如图2-1-9所示。图2-1-9 修改后的内存单元数据显示. 专业.专注 ... .. ..14. 除了单步或全速运行 ,还可以使用断点手段来调试程序 。单击菜单栏“调试”→“复位”项或按 Ctrl+F2 组合键(建议单击工具栏 “ ”按钮)进行复位,以便重新运行程序。15. 单击源程序编辑窗口左侧的行号即可快速设置断点 ,断点行为红色高亮显示 (如图2-1-10),若要删除该断点只需再次单击断点行的行号即可清除断点 。图2-1-10 设置断点后的源程序窗口设置断点后,单击菜单栏“调试”→“连续运行”项或按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,A. 专业.专注 ... .. ..INCR1INCR0 ;地址增量DJNZR7,LOOP1 ;循环变量-1,不为0继续SJMP$ ;结束END六、实验心得通过第一次的上机实验 ,我初步接触到了 Dais软件,并对其有了一定的熟悉 ,能顺利完成程序的单步运行 ,连续运行,设置断点,查看存储器等操作 ,并掌握了该软件程序编写的操作步骤及调试方法 ,这对我接下来的实验很有帮助 。. 专业.专注 ... .. ..实验二 数码转换实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法 ,加深对数制转换的理解 。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套 。三、实验内容及步骤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;在SJMPMAIN语句行设置断点,然后运行程序;程序遇到断点后暂停,此时查看寄存器R4的内容,应为3Ah;重新修改20h、21h、22h单元的内容,再次运行程序,验证程序的正确性。二进制整数转换为十进制整数将16位二进制整数存入 R3、R4寄存器中,转换为十进制整数 ,以组合BCD形式存储在CPU内部RAM的20h、21h、22h单元中。参考程序(A51\2_2_2.ASM):开始ORG0000HR0←转换结果起始地址LJMPMAINORG0100H结果存储单元清零MAIN:MOVR0,#22H;转换结果低位地址MOVA,R0循环计数器R7←16PUSHACC;A累加器压栈MOVR7,#3R3R4左移1位CLRALP1:MOV@R0,A;结果存储地址清零B←3DECR0DJNZR7,LP1A←(R0)×2+CPOPACCMOVR0,A十进制调整MOVR7,#16LP2:PUSHACCR0←R0-1CLRCMOVA,R4;R4中为二进制数的低位R0←R0-1RLCAMOVR4,A否B-1=0?MOVA,R3;R3中为二进制数的高位是RLCAR0←转换结果起始地址MOVR3,A.专业.专注.R7-1=0?否是结束图2-2-1程序流程图.. .. ..MOVB,#3LP3: MOVA,@R0ADDCA,@R0 ;执行乘2操作DAA ;十进制调整MOV@R0,A ;结果保存DECR0DJNZB,LP3POPACC ;A累加器出栈MOVR0,ADJNZR7,LP2SJMPMAIN ;设置断点观察结果 ,可进行下一次转换END实验步骤:1) 编写程序,程序流程图如图 2-2-1所示,经编译、链接无误后装载到实验系统 ;修改R3、R4寄存器,例如分别为A2h、FCh;在SJMPMAIN语句行设置断点,然后运行程序;程序遇到断点后暂停,此时查看CPU内部存储器20h的内容,应为:04h、17h、24h;反复修改R3、R4寄存器的值,验证程序的正确性。四、实验心得在这次实验中 ,我通过运行既定程序后对程序经行了分析 ,掌握了将 BCD整数转换为二进制整数和二进制整数转换为十进制整数的程序设计方法 ,对数制的转换有了一个更深刻的认识,并自己编程实现了二进制数和 BCD整数的转换,受益匪浅。. 专业.专注 ... .. ..实验三 运算程序设计实验一、实验目的了解运算类指令以及运算类程序的设计方法 。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套 。三、实验内容及步骤多字节加法程序多字节十进制加法程序,被加数存放于20h起始的RAM空间,加数存放于28h起始的RAM空间,将两数相加,结果存放于20h起始的RAM空间。开始参考程序(A51\2_3_1.ASM):ORG0000HR0←被加数起始地址R1←加数起始地址LJMPMAINORG0100H;执行程序前先修改R7的值取出被加数MAIN:MOVR0,#20H;被加数起始地址MOVR1,#28H;加数起始地址加上加数CLRCLP1:MOVA,@R0进行十进制调整ADDCA,@R1;带进位加法运算DAA;十进制调整保存结果MOV@R0,A;保存运算结果INCR0;指向下一单元R0←R0+1INCR1R1←R1+1DJNZR7,LP1CLRA运算结束?否MOVACC.0,C是.专业.专注.设置最高位结束图2-3-1 程序流程图.. .. ..MOV@R0,A ;最高位有进位时此地址中为 1NOP ;设置断点查看运算结果SJMPMAIN ;若需继续运算,改变加数,被加数及 R7END实验步骤:1)编写程序,程序流程图如图2-3-1所示,经编译、链接无误后装载到实验系统;2)为被加数及加数赋值:修改内存单元20h为1234h、28h为1111h,寄存器R7为02h;在SJMPMAIN语句行设置断点,然后运行程序;4) 程序遇到断点后暂停 ,此时查看内存单元 20h起始的内容,应为:2345h;反复修改被加数、加数及字节数R7的值,验证程序的正确性。双字节无符号数乘法利用单字节乘法指令来扩展成多字节乘法运算 ,扩展时以字节为单位进行乘法运算 。被乘数在R2、R3中,乘数在R4、R5中,乘积保存R0指向的20h~23h 内存单元。运算法则见图2-3-2。R2 R3×R4R5R3×R5H R3×R5LR2×R5 H R2×R5LR3×R4 H R3×R4LR2×R4HR2×R4L(R0-3) (R0-2) (R0-1) (R0)图2-3-2 乘法运算法则参考程序(A51\2_3_2.ASM ):ORG0000HLJMPMAIN. 专业.专注 ... .. ..ORG0100HMAIN: 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*R4. 专业.专注 ... .. ..INCR0ADDA,@R0MOV@R0,AMOVA,BDECR0ADDCA,@R0MOV@R0,ANOP ;设置断点查看运算结果SJMPMAIN ;如需进行下一次运算 ,可修改R2R3,R4R5的值END实验步骤:1) 编写程序,经编译、链接无误后装载到实验系统 ;2) 设置被乘数 R2,R3为03h,50h、乘数R4,R5为04h,60h;在SJMPMAIN语句行设置断点,然后运行程序;4) 程序遇到断点后暂停 ,此时查看内存单元 20h 起始的内容,应为:00h、0Eh、7Eh、00h;反复修改被乘数、乘数的值,验证程序的正确性。双字节除法MCS-51 指令系统中仅有单字节除法指令 ,若要扩展为双字节除法 ,可以采用“移位相减”的算法来实现 。本例程的被除数在 R7、R6中,除数在R5、R4中,将商存入R7、R6中,余数存入R3、R2中。程序流程图如图 3-3-3所示。参考程序(A51\2_3_3.ASM ):ORG0000H. 专业.专注 ... .. ..LJMPMAINORG0100H开始MAIN:MOVA,R4;执行程序前为R7R6(被除数),;R5R4(除数)赋值是除数=0?JNZDDIV0;除数不为0,转DDIV0否MOVA,R5余数寄存器R3R2←0JZERROR;除数为0,转ERROR循环计数器R1←16DDIV0:MOVR2,#00H;余数寄存器清零MOVR3,#00H余数、被除数左移1位置除数非法标志MOVR1,#16;循环次数为16←R3R2R7R6F0←1DDIV1:CLRC;R3R2R7R6左移1位MOVA,R6否RLCA部分余数≥除数?MOVR6,A是MOVA,R7商加1RLCA余数←余数-除数MOVR7,AMOVA,R2否R1-1=0?RLCA是MOVR2,A置合法标志F0←0MOVA,R3RLCAMOVR3,A结束MOVA,R2;部分余数减除数图2-3-3程序流程图SUBBA,R4;低8位相减JCDDIV2;不够减,转DDIV2MOVR0,A;暂存相减结果MOVA,R3SUBBA,R5;高8位相减JCDDIV2;不够减,转DDIV2INCR6;够减,则商为1MOVR3,A;相减结果送R3R2中MOVA,R0MOVR2,ADDIV2:DJNZR1,DDIV1;16位未除完则继续CLRF0;除数合法标志SJMPMAIN;设置断点观察结果,可继续下一轮运算ERROR:SETBF0;除数非法标志SJMPMAIN;设置断点观察结果,可继续下一轮运算END实验步骤:1) 编写程序,程序流程图如图 2-3-3所示,经编译、链接无误后装载到实验系统 ;. 专业.专注 ... .. ..设置被除数R7,R6为46h,EEh、除数R5,R4为23h,67h;在SJMPMAIN语句行设置断点,然后运行程序;程序遇到断点后暂停,此时查看寄存器R7,R6(商)与R3,R2(余数),应分别为00h,02h与00h、20h;反复修改被除数、除数的值,验证程序的正确性。、实验心得在这次实验中 ,我顺利运行了多字节的加法 、双字节无符号乘法和双字节除法程序并得到了预期的结果 ,通过对程序进行分析 ,我对多字节数的运算在单片机内实现有了一个更深刻的认识,提高了对程序的分析理解能力 。. 专业.专注 ... .. ..实验四 查表程序设计实验一、实验目的学习查表程序的设计方法 ,熟悉MCS-51指令系统。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套 。三、实验内容及步骤采用查表的方法将16进制数转换为ASCII码根据ASCII码表可知,0~9的ASCII码为30h~39h,A~F的ASCII码为41h~46h,算法为(假定待转换的数存放在 R7中):当R7≤9时,相应的ASCII码为:R7+30h;当R7>9时,相应的ASCII码为:R7+30h+07h。参考程序(A51\2_4_1.ASM ):ORG0000HLJMPMAINORG0100HMAIN: MOVDPTR,#ASCII ;表格首地址送 DPTRMOVA,R7 ;R7中为待转换的数ANLA,#0FH ;取低4位MOVCA,@A+DPTR; 查表MOVR5,A ;低4位转换结果送 R1MOVA,R7ANLA,#0F0H ;取待转换数的高 4位SWAPA ;高4位与低4位交换MOVCA,@A+DPTR; 查表. 专业.专注 ... .. ..MOVR6,A ;高4位转换结果送 R2SJMPMAIN ;设置断点观察结果ASCII: DB"0123456789ABCDEF"END实验步骤:1) 编写程序,经编译、链接无误后装载到实验系统 ;2) 设置待转换数据 R7为8Ah;在SJMPMAIN语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看寄存器R6,R5的值,R6中为高4位转换结果38h,R5中为低4位转换结果41h;反复修改R7的值,验证程序的正确性。通过查表实现y=x2x为0~9的十进制数,存放于寄存器R7,以BCD码的形式保存,结果y以BCD码的形式存放于寄存器 R6。参考程序(A51\2_4_2.ASM ):ORG0000HLJMPMAINORG0100HMAIN: MOVDPTR,#SQR ;取表格首地址MOVA,R7 ;要计算的值MOVCA,@A+DPTR; 查表MOVR6,A ;结果保存SJMPMAINSQR: DB00H,01H,04H,09H,16H; 平方表DB25H,36H,49H,64H,81HEND. 专业.专注 ... .. ..实验步骤:1) 编写程序,经编译、链接无误后装载到实验系统 ;设置R7的值,如R7=09h;在SJMPMAIN语句行设置断点,然后运行程序;程序遇到断点后暂停,此时查看寄存器R6的值,应为81h;反复修改R7的值,验证程序的正确性。、实验心得通过这次实验 ,我对查表程序的设计方法有了一个更加深刻的理解 :查表程序常用于数据的补偿、修正、计算、转换等场合,具有程序简单 、执行速度快等特点 。同时,通过对查表指令“Movc A,@A+DPTR”和“Movc A,@A+PC”的运用,我对它们区别也有了体会 :指令“MOVC A,@A+DPTR”完成把 A中的内容作为一个无符号数与 DPTR中的内容相加 ,所得结果为某一程序存储单元的地址 ,然后把该地址单元中的内容送到累加器 A中。指令“MOVCA,@A+PC”以PC作为基址寄存器 ,PC的内容和 A的内容作为无符号数 ,相加后所得的数作为某一程序存储单元的地址 ,然后把该地址单元中的内容送到累加器 A中。. 专业.专注 ... .. ..实验五 数据排序实验一、实验目的熟悉MCS-51指令系统,掌握数据排序程序的设计方法 。二、实验设备PC计算机一台,Dais-52PRO+或Dais-PRO163C实验系统一套 。三、实验内容及步骤在单片机片内 RAM的30h~3Fh 写入16个数,编写实验程序,将这16个数按照由小到大的顺序排列 。参考程序(A51\2_5.ASM ):ORG0000HLJMPMAINORG0100HMAIN: MOVR0,#30H ;数据起始地址MOVR7,#16 ;排序数据个数LP1: MOVA,R7MOVR6,AMOVA,R0MOVR1,AINCR1LP2: MOVA,@R0 ;取出一个数据CLRCSUBBA,@R1 ;与第二个数进行比较JCLP3 ;R0中的数小于 R1中的数则跳转MOVA,@R0 ;R0中的数大于 R1中的数,交换数据XCHA,@R1MOV@R0,ALP3: INCR1DJNZR6,LP2. 专业.专注 ... .. ..INCR0DJNZR7,LP1SJMP$END开始R0←数据起始地址R7←数据个数R1←R0+1R6←R7A←(R0)清进位标志否A>(R1)?是R0与R1所指单元中的数交换R1←R1+1否R6-1=0?是R0←R0+1R7-1=0?是结束

否图2-5-1 程序流程图实验步骤:1) 编写程序,经编译、链接无误后装载到实验系统 ;2) 待排序的数据存放于片内 RAM的30h~3Fh 单元,可在存储器窗口直接输入 ;3) 在SJ

温馨提示

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

评论

0/150

提交评论