版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一系统认识实验一、实验目的学习 dais 软件的操作,熟悉程序编写的操作步骤及调试方法。二、实验设备pc 计算机一台,dais-52pro+ 或 dais-pro163c 实验系统一套。三、实验内容编写程序,将80h8fh 共 16 个数写入单片机内部ram 的 30h3fh 空间。四、实验步骤1.运行 dais 软件,进入集成开发环境,软件弹出设置通信端口对话框(如图 2-1-1) ,请确保实验装置与pc 正确连接,并已打开实验装置电源,使其进入在待命状态。这里选择与实验装置实际相连的通信端口,并单击“确定”。 如通信正确则进入dais软件主界面,否则弹出“通信出错”的信息框(如图2-1
2、-2) ,请检查后重试。图 2-1-1设置通信端口对话框图 2-1-2通信错误信息框2.通信成功后,单击菜单栏“设置”“仿真模式”项打开对话框,选择需要设置型号、程序数据空间。这里我们将型号设置为“mcs-51 实验系统”,外部数据区设置为“系统ram ” ,用户程序区设置为“片外(ea=0 ) ” ,如图2-1-3 所示,最后单击“确定”按钮保存设置。图 2-1-3设置工作方式对话框3.工作方式设置完毕后,单击菜单栏“文件”“新建”项或按ctrl+n 组合键(建议单击工具栏“”按钮)来新建一个文件,软件会出现一个空白的文件编辑窗口。4.在新窗口中输入程序代码(a512_1.asm ) :or
3、g 0000h ljmp main org 0100h main: mov r1,#30h ; 片内 ram首地址mov a,#80h ; 写入数据初值mov r7,#16 ; 循环变量loop1: mov r1,a ; 写数据到片内ram inc r1 ; 地址增量inc a ; 数据 +1 djnz r7,loop1 ; 循环变量 -1,不为 0 继续sjmp $ ; 结束end5.单击菜单栏“文件”“保存”项(建议单击工具栏“”按钮)保存文件。若是新建的文件尚未命名,系统会弹出文件保存对话框(如图 2-1-4) ,提示用户选择文件保存的路径和文件名,再单击“保存”按钮。图 2-1-4文件
4、保存对话框6.单击菜单栏“编译”“文件编译、链接、装载”项或按ctrl+f9 组合键(建议单击工具栏“”按钮),对当前文件进行编译和链接,若程序无语法错误,则开始自动装载,装载完毕提示如图2-1-5 所示的信息框。图 2-1-5编译信息框7.当编译无误且下载成功后,即进入调试状态,当前pc 行高亮突出显示,源程序窗口左侧显示小圆点以标识可执行语句行,如图2-1-6 所示。图 2-1-6进入调试状态的主界面8.单击菜单栏“视图”“存储空间”“cpu 内部存储区”项打开内存窗口,如图 2-1-7。文件存放的路径注意:由于编译器对路径和文件名的要求,请确保路径和文件名均不含中文和空格,不要将文件存放
5、在“桌面”、 “我的文档”等路径,并遵循“8.3”命令规则,即前缀长度不超过8 字符、后缀长度不超过3字符。输入新文件名图 2-1-7初始时的 cpu 内部存储区数据显示9.单击菜单栏“调试”“单步运行”项或按f7 快捷键(建议单击工具栏“”按钮) ,单步运行程序,观察寄存器和内存单元的数据变化;10.也可单击菜单栏 “调试” “连续运行” 项或按 f9 快捷键(建议单击工具栏“”按钮) ,开始全速运行。11.在全速运行后, 须暂停运行以便在待命状态查看运行结果,暂停可单击菜单栏“调试”“暂停”项或按esc 快捷键(建议单击工具栏“”按钮)。12.再观察 cpu 内部存储区单元,验证程序运行结
6、果(如图2-1-8 所示) 。图 2-1-8程序运行后的cpu 内部存储区数据显示13.除了用程序修改内存单元,可以在dais 软件直接修改。用鼠标单击某个内存单元后,按键盘的09 或 af ,直接写入数据以覆盖该内存单元原有数据。如图2-1-9所示。图 2-1-9修改后的内存单元数据显示14.除了单步或全速运行,还可以使用断点手段来调试程序。单击菜单栏 “调试” “复位”项或按ctrl+f2 组合键(建议单击工具栏“”按钮)进行复位,以便重新运行程序。15.单击源程序编辑窗口左侧的行号即可快速设置断点,断点行为红色高亮显示(如图2-1-10) ,若要删除该断点只需再次单击断点行的行号即可清除
7、断点。图 2-1-10设置断点后的源程序窗口16.设置断点后,单击菜单栏“调试”“连续运行”项或按f9 快捷键(建议单击工具栏“”按钮),使用全速运行方式,待程序运行到断点行时自动停下(如图2-1-11) 。图 2-1-11全速运行后遇断点暂停的源程序窗口五、操作练习修改程序,将cpu 内部存储区30h3fh 单元的 16 个数据复制到40h4f 单元,通过单步、断点等调试手段验证程序功能,查看40h4fh 单元的数据是否传送正确。org 0000h ljmp main org 0100h main: mov r1,#30h mov r0,#40h ;片内 ram 首地址mov a,#80h
8、;写入数据初值mov r7,#16 ;循环变量loop1: mov a,r1 mov r0,a inc r1 inc r0 ;地址增量djnz r7,loop1 ;循环变量 -1,不为 0 继续sjmp $ ;结束end 六、实验心得通过第一次的上机实验,我初步接触到了dais 软件,并对其有了一定的熟悉,能顺利完成程序的单步运行,连续运行,设置断点,查看存储器等操作,并掌握了该软件程序编写的操作步骤及调试方法,这对我接下来的实验很有帮助。实验二数码转换实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解。二、实验设备pc 计算机一台,dais-52pro+ 或 d
9、ais-pro163c 实验系统一套。三、实验内容及步骤1.bcd 整数转换为二进制整数将 bcd 码整数0255 存入片内ram的 20h、21h、22h 中,然后转换为二进制整数00hffh,保存到寄存器r4 中。参考程序( a512_2_1.asm ) :org 0000h ljmp main org 0100h main: mov r0,#20h ;bcd 存放高位地址mov r7,#3 ;bcd 码 0255,最多 3 位clr a mov r4,a lp1: mov a,r4 mov b,#10 mul ab ; 乘 10 add a,r0 ; 加下一位的值inc r0 ; 指向下
10、一单元mov r4,a ;结果存入 r4 djnz r7,lp1 ; 转换未结束则继续sjmp main ; 设置断点 , 观察实验结果r4 中的内容end 实验步骤:1)编写程序,经编译、链接无误后装载到实验系统;2)修改 cpu 内部存储器20h、21h、22h 单元的内容,如:00h,05h,08h;3)在 sjmpmain语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看寄存器r4 的内容,应为3ah;5)重新修改20h、 21h、22h 单元的内容,再次运行程序,验证程序的正确性。2.二进制整数转换为十进制整数将 16 位二进制整数存入r3、r4 寄存器中,转换为十进制整
11、数,以组合 bcd 形式存储在 cpu 内部 ram 的 20h、21h、22h 单元中。参考程序( a512_2_2.asm ) :org 0000h ljmp main org 0100h main: mov r0,#22h ; 转换结果低位地址mov a,r0 push acc ;a 累加器压栈mov r7,#3 clr a lp1: mov r0,a ; 结果存储地址清零dec r0 djnz r7,lp1 pop acc mov r0,a mov r7,#16 lp2: push acc clr c mov a,r4 ;r4 中为二进制数的低位rlc a mov r4,a mov a
12、,r3 ;r3 中为二进制数的高位rlc a mov r3,a mov b,#3 lp3: mov a,r0 addc a,r0 ; 执行乘 2 操作da a ; 十进制调整mov r0,a ; 结果保存dec r0 djnz b,lp3 pop acc ;a 累加器出栈mov r0,a djnz r7,lp2 sjmp main ; 设置断点观察结果, 可进行下一次转换end实验步骤:1)编写程序,程序流程图如图2-2-1 所示,经编译、链接无误后装载到实验系统;2)修改 r3、r4 寄存器,例如分别为a2h、fch;3)在 sjmpmain语句行设置断点,然后运行程序;4)程序遇到断点后暂
13、停,此时查看cpu 内部存储器20h 的内容,应为:04h、17h、24h;5)反复修改 r3、r4 寄存器的值,验证程序的正确性。开始r0转换结果起始地址结果存储单元清零循环计数器 r716r3 r4左移 1位b3a (r0) 2c十进制调整r0r 01r0r 01b10?r0转换结果起始地址r710?结束是是否否图2-2-1 程序流程图四、实验心得在这次实验中,我通过运行既定程序后对程序经行了分析,掌握了将bcd 整数转换为二进制整数和二进制整数转换为十进制整数的程序设计方法,对数制的转换有了一个更深刻的认识,并自己编程实现了二进制数和bcd 整数的转换,受益匪浅。实验三运算程序设计实验一
14、、实验目的了解运算类指令以及运算类程序的设计方法。二、实验设备pc 计算机一台,dais-52pro+ 或 dais-pro163c 实验系统一套。三、实验内容及步骤1.多字节加法程序多字节十进制加法程序,被加数存放于20h 起始的 ram 空间, 加数存放于28h 起始的ram 空间,将两数相加,结果存放于20h 起始的 ram 空间。参考程序( a512_3_1.asm ) :org 0000h ljmp main org 0100h ; 执行程序前先修改r7 的值main: mov r0,#20h ; 被加数起始地址mov r1,#28h ; 加数起始地址clr c lp1: mov a
15、,r0 addc a,r1 ; 带进位加法运算da a ; 十进制调整mov r0,a ; 保存运算结果inc r0 ; 指向下一单元inc r1 djnz r7,lp1 clr a mov acc.0,c mov r0,a ; 最高位有进位时此地址中为1 nop ; 设置断点查看运算结果sjmp main ; 若需继续运算 , 改变加数 , 被加数及 r7 end 实验步骤:1)编写程序,程序流程图如图2-3-1 所示,经编译、链接无误后装载到实验系统;2)为被加数及加数赋值:修改内存单元20h 为 1234h、28h 为 1111h,寄存器r7 为02h;3)在 sjmpmain语句行设置
16、断点,然后运行程序;4)程序遇到断点后暂停,此时查看内存单元20h 起始的内容,应为:2345h;5)反复修改被加数、加数及字节数r7 的值,验证程序的正确性。开始r0被加数起始地址r1加数起始地址取出被加数加上加数进行十进制调整保存结果r0r0+1r1r1+1运算结束 ?设置最高位结束是否图2-3-1 程序流程图2.双字节无符号数乘法利用单字节乘法指令来扩展成多字节乘法运算,扩展时以字节为单位进行乘法运算。被乘数在 r2、r3 中,乘数在r4、r5 中,乘积保存r0 指向的 20h23h 内存单元。运算法则见图 2-3-2。r2r3r 5 hr3r5 lr3r4r5r2r5 hr2r 5 l
17、r3r4 hr3r 4 lr2 r 4 hr2r 4 l(r0-3)(r0-2)(r0-1)(r0)图 2-3-2乘法运算法则参考程序( a512_3_2.asm ) :org 0000h ljmp main org 0100h main: mov r0,#23h ; 运算结果低位地址mov a,r0 push acc clr a mov r7,#4 lp1: mov r0,a ; 运算结果存储单元清零dec r0 djnz r7,lp1 pop acc mov r0,a mov a,r3 mov b,r5 mul ab ; 计算 r3*r5 mov r0,a ; 计算的低8 位保存mov a
18、,b dec r0 mov r0,a ; 保存运算的高8 位mov a,r2 mov b,r5 mul ab ; 计算 r2*r5 add a,r0 ; 此次运算低8 位+r3*r5 运算的高 8 位mov r0,a dec r0 mov a,b addc a,#00h ;r2*r5的高 8 位加进位位mov r0,a inc r0 mov a,r3 mov b,r4 mul ab ; 计算 r3*r4 add a,r0 mov r0,a mov a,b dec r0 addc a,r0 mov r0,a dec r0 clr a addc a,#00h mov a,r0 mov a,r2 m
19、ov b,r4 mul ab ; 计算 r2*r4 inc r0 add a,r0 mov r0,a mov a,b dec r0 addc a,r0 mov r0,a nop ; 设置断点查看运算结果sjmp main ; 如需进行下一次运算, 可修改 r2 r3,r4 r5的值end 实验步骤:1)编写程序,经编译、链接无误后装载到实验系统;2)设置被乘数r2, r3 为 03h, 50h、乘数 r4, r5 为 04h, 60h;3)在 sjmpmain语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看内存单元20h 起始的内容, 应为:00h、0eh、7eh、00h;5)反
20、复修改被乘数、乘数的值,验证程序的正确性。3.双字节除法mcs-51 指令系统中仅有单字节除法指令,若要扩展为双字节除法,可以采用“移位相减”的算法来实现。本例程的被除数在r7、r6 中,除数在r5、r4 中,将商存入r7、r6中,余数存入r3、r2 中。程序流程图如图3-3-3 所示。参考程序( a512_3_3.asm ) :org 0000h 除数 =0?部分余数除数?余数寄存器 r3 r20循环计数器 r116开始余数、被除数左移1位r3 r2 r7 r6商加 1余数余数除数r1-1=0?置合法标志 f0 0结束置除数非法标志f01是否是否是否图2-3-3 程序流程图ljmp main
21、 org 0100h main: mov a,r4 ; 执行程序前为r7r6( 被除数 ), ;r5r4(除数 ) 赋值jnz ddiv0 ; 除数不为 0, 转 ddiv0 mov a,r5 jz error ; 除数为 0, 转 error ddiv0: mov r2,#00h ; 余数寄存器清零mov r3,#00h mov r1,#16 ; 循环次数为16 ddiv1: clr c;r3 r2 r7 r6左移 1 位mov a,r6 rlc a mov r6,a mov a,r7 rlc a mov r7,a mov a,r2 rlc a mov r2,a mov a,r3 rlc a
22、 mov r3,a mov a,r2 ; 部分余数减除数subb a,r4 ; 低 8 位相减jc ddiv2 ; 不够减 , 转 ddiv2 mov r0,a ; 暂存相减结果mov a,r3 subb a,r5 ; 高 8 位相减jc ddiv2 ; 不够减 , 转 ddiv2 inc r6 ; 够减 , 则商为 1 mov r3,a ; 相减结果送r3 r2 中mov a,r0 mov r2,a ddiv2: djnz r1,ddiv1 ;16位未除完则继续clr f0 ; 除数合法标志sjmp main ; 设置断点观察结果, 可继续下一轮运算error: setb f0 ; 除数非法
23、标志sjmp main ; 设置断点观察结果, 可继续下一轮运算end 实验步骤:1)编写程序,程序流程图如图2-3-3 所示,经编译、链接无误后装载到实验系统;2)设置被除数r7, r6 为 46h,eeh、除数 r5, r4 为 23h, 67h;3)在 sjmpmain语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看寄存器r7, r6(商)与r3, r2(余数),应分别为00h,02h 与 00h、20h;5)反复修改被除数、除数的值,验证程序的正确性。四、实验心得在这次实验中, 我顺利运行了多字节的加法、双字节无符号乘法和双字节除法程序并得到了预期的结果, 通过对程序进行
24、分析,我对多字节数的运算在单片机内实现有了一个更深刻的认识,提高了对程序的分析理解能力。实验四查表程序设计实验一、实验目的学习查表程序的设计方法,熟悉mcs-51 指令系统。二、实验设备pc 计算机一台,dais-52pro+ 或 dais-pro163c 实验系统一套。三、实验内容及步骤1.采用查表的方法将16 进制数转换为ascii 码根据 ascii 码表可知, 09 的 ascii 码为 30h39h,af 的 ascii 码为 41h46h,算法为(假定待转换的数存放在r7 中) :当 r79 时,相应的ascii 码为: r730h;当 r79 时,相应的ascii 码为: r73
25、0h07h。参考程序( a512_4_1.asm ) :org 0000h ljmp main org 0100h main: mov dptr,#ascii ; 表格首地址送dptr mov a,r7 ;r7中为待转换的数anl a,#0fh ; 取低 4 位movc a,a+dptr ; 查表mov r5,a ; 低 4 位转换结果送r1 mov a,r7 anl a,#0f0h ; 取待转换数的高4 位swap a ; 高 4 位与低 4 位交换movc a,a+dptr ; 查表mov r6,a ; 高 4 位转换结果送r2 sjmp main ; 设置断点观察结果ascii: db
26、0123456789abcdef end 实验步骤:1)编写程序,经编译、链接无误后装载到实验系统;2)设置待转换数据r7 为 8ah;3)在 sjmpmain语句行设置断点,然后运行程序;4)程序遇到断点后暂停, 此时查看寄存器r6, r5 的值, r6 中为高 4 位转换结果38h,r5 中为低 4 位转换结果41h;5)反复修改 r7 的值,验证程序的正确性。2.通过查表实现y=x2x 为 09 的十进制数,存放于寄存器r7,以 bcd 码的形式保存,结果y 以 bcd 码的形式存放于寄存器r6。参考程序( a512_4_2.asm ) :org 0000h ljmp main org
27、0100h main: mov dptr,#sqr ;取表格首地址mov a,r7 ;要计算的值movc a,a+dptr ; 查表mov r6,a ; 结果保存sjmp main sqr: db 00h,01h,04h,09h,16h ;平方表db 25h,36h,49h,64h,81h end 实验步骤:1)编写程序,经编译、链接无误后装载到实验系统;2)设置 r7 的值,如r7=09h;3)在 sjmpmain语句行设置断点,然后运行程序;4)程序遇到断点后暂停,此时查看寄存器r6 的值,应为81h;5)反复修改 r7 的值,验证程序的正确性。四、实验心得通过这次实验,我对查表程序的设计
28、方法有了一个更加深刻的理解:查表程序常用于数据的补偿、修正、计算、转换等场合,具有程序简单、执行速度快等特点。同时,通过对查表指令“ movc a ,a+dptr ”和“ movc a,a+pc ”的运用,我对它们区别也有了体会:指令“ movc a,a+dptr ”完成把 a 中的内容作为一个无符号数与dptr 中的内容相加,所得结果为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器a 中。指令“ movc a,a+pc ”以 pc 作为基址寄存器,pc 的内容和a 的内容作为无符号数,相加后所得的数作为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器a中。实验五数据排序
29、实验一、实验目的熟悉 mcs-51 指令系统,掌握数据排序程序的设计方法。二、实验设备pc 计算机一台,dais-52pro+ 或 dais-pro163c 实验系统一套。三、实验内容及步骤在单片机片内ram 的 30h3fh 写入 16 个数, 编写实验程序, 将这 16 个数按照由小到大的顺序排列。参考程序( a512_5.asm ) :org 0000h ljmp main org 0100h main: mov r0,#30h ; 数据起始地址mov r7,#16 ; 排序数据个数lp1: mov a,r7 mov r6,a mov a,r0 mov r1,a inc r1 lp2:
30、mov a,r0 ; 取出一个数据clr c subb a,r1 ; 与第二个数进行比较jc lp3 ;r0 中的数小于r1 中的数则跳转mov a,r0 ;r0 中的数大于r1 中的数 , 交换数据xch a,r1 mov r0,a lp3: inc r1 djnz r6,lp2 inc r0 djnz r7,lp1 sjmp $ end 开始图2-5-1 程序流程图r0数据起始地址r7数据个数r1r 0+1r6r 7清进位标志a (r0)a(r1)?r0与r1所指单元中的数交换r1r 1+1r6-1=0?r0r 0+1r7-1=0?结束是否是是否否实验步骤:1)编写程序,经编译、链接无误后装载到实验系统;2)待排序的数据存放于片内ram 的 30h3fh 单元,可在存储器窗口直接输入;3)在 s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB42-T 2401-2025 生物防火隔离带建设技术规范
- 十堰市2026-2027学年高考仿真模拟物理试卷(含答案解析)
- 2026年教务处二季度教学管理总结
- 工厂生产计划员2026年二季度生产计划排布工作总结
- 高温天气员工安全生产意识课件
- 2026年秋季初中开学第一课 交通安全知识课件
- 2026年北师大版小学三年级数学上册第一单元《时、分、秒》标准教案
- 会计学基础(第9版 立体化数字教材版)课件全套 陈爱玲 第1-8章 总论 -会计职业道德
- 稳定型冠心病康复方案
- 精神科护理发展现状
- 2026广西质量工程职业技术学院第一批公开招聘工作人员65人考试备考试题及答案详解
- CHS-GWPF2026:欧盟碳边境调节机制CBAM研究报告市场化路径还是市场失灵-中文译版-
- 2026年美妆个护行业洞察数据报告
- 安徽芜湖2026年无为市泉塘镇村级后备干部招聘考试试卷-含答案解析
- 2026年安徽省产品质量监督检验研究院见习人员招募备考题库及答案详解(历年真题)
- 康复专业面试题库和答案
- 2026中盐东兴盐化股份有限公司招聘17人笔试历年参考题库附带答案详解
- 医院综合运营提升方案
- 铁路物流中心设计规范(Q∕CR 9133-2016)
- QBQB5172023冷镦钢盘条规范
- 【《某轮腿复合式跳跃机器人的各参数计算及校核过程案例》10000字】
评论
0/150
提交评论