免费预览已结束,剩余76页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理和应用实验课程指导书陈基伟 浙江机电职业技术学院序 言 本实验指导书,是结合我校学生的实际情况及结合自行开发的的仿真实验设备情况而编写的。全书共包含15个实验,4类应用系统设计。在每个实验中,均以极简洁的语言,介绍了有关本实验的相应知识,并安排了实验示范操作,详细地介绍了本实验的各项操作过程。示范实验目的明确,操作透明,可以引导初学者步步入门。应用系统设计可作为课程设计项目,每个项目都给出了实现电路图,可以在仿真实验设备上进行综合的系统调试。 本实验指导书,最适合于单独开设的单片机实验课程。其内容由浅入深,操作说明则是由详细到简练,并紧密结合实验主题,不断提高实验操作技巧。本实验课,可以与微机原理和应用课程并行开课,进度基本一致。建议:第一周暂停做实验,期末一周则加一次实验课,这样能使实验课与微机原理和应用课程完全同步。 对于不单独开设实验课的课程实验,完全可以由教师按课程要求,自主选择若干实验,亦能很好地完成课程大纲的要求。 选用本实验指导书,要求学生在实验前必须进行预习,按实验预习要求,认真预习相关内容;实验设备在每次基础实验前,都自动对预习情况考核,考核后方能进行相应实验。在实验课上,首先按实验示范操作提示,模仿进行操作,然后再按实验内容,自行设计相关实验。在实验中,应按要求作好各种数据记录.最后按实验报告要求,做好实验报告,并认真回答实验思考题。 编 者 2009.7.目 录基础篇1软件实验11 实验一 KEIL软件的试用12 实验二 指令系统学习实验93 实验三 数制转换程序的设计与调试164 实验四 循环程序的设计与调试205 实验五 定时程序的设计和调试256 实验六 数据排序程序的设计和调试297 实验七 查表程序的设计和调试338 实验八 数据运算程序的设计和调试36硬件实验449 实验九 外中断,定时器/计数器程序设计和调试4410 实验十 P1口输入输出调试4911 实验十一 LED显示器连接和调试5112 实验十二 键盘电路硬件连接和功能调试5413 实验十三 IIC总线实验(ADC)5814 实验十四 SPI总线实验(ADC&DAC)6415 实验十五 串行口通信实验68应用篇70项目一 通讯类应用系统设计70项目二 模拟数据采集系统设计71项目三 开关量系统设计72项目四 图文带字库液晶屏应用73附录一 单片机仿真外设使用说明74附录二 Wave软件使用说明76基础篇软件实验1 实验一 KEIL软件的试用 程序执行的意义在于改变了变量的值,因此在调试过程中要关注变量值的变化是否正确,初学入门者尤其要特别重视。实验教程: 输入程序设置数据、执行程序查看结果 单片机实验,就是利用开发机或模拟软件,使CPU执行预定的程序。然后,再利用开发机或模拟软件,查看系统内部数据变化的情况:如果系统内部数据变化情况与预定的目标完全一致,这时,我们说该程序已经调试完毕;否则,必须重新编写程序和重新调试,直到完全符合为止。因此,一个程序的调试应包括四部分内容:程序设计;源程序输入;设置数据;执行程序;观察执行结果。 本次实验,结合keil软件的试用,介绍最简单的一个程序的调试过程。实验示范操作: 1、求62H8BH的值。 程序设计如下: ORG 0000H MOV A,#62H ;立即数62H赋给A MOV R0,#8BH ;立即数8BH赋给R0 ADD A,R0 ;求两数之和 END ;结束 程序输入过程如下:uVision3软件安装好后,运行出现以下界面:图1-1 KEILC uVision3软件启动界面选择 ProjectNew uVision Project按照提示输入合适的项目名称和项目存放路径。出现提示选择待仿真CPU的型号,可选择Atmel89C51如下图所示:图1-2 选择待仿真CPU的型号启动文件选项选择 否 选项。图1-3 启动文件选项选择FileNew 输入原程序,扩展名为ASM 。必须先指明输入源程序的起始地址。如本例中的ORG 0000H,输入全部源程序。在源程序末了,还要添加表示程序结束的标记END并空一行。末了,要及时存盘,选择FileSave,或存盘图标。图1-4 保存源文件选择左边的窗口的Source Group, 点鼠标的右键,将已输入的文件添加到当前的项目中;图1-5 添加项目文件步骤一打开“文件类型”,选择*.S* *.src *.a*图1-6 添加项目文件步骤二在当前的项目中加入先前输入的源文件,之后点击“Close”。以上的步骤核心是先创建项目,再在项目中添加包含的文件。程序在输入过程时,输入法要在英文,半角输入状态,要注意数字零与英文字母O的区别,否则会导致错误。 根据要求输入汇编程序。完成后点击下图中的编译工具栏,直到无语法错误。图1-7 编译工具栏 在编译通过后,我们根据程序的执行结果判断程序的正确性。点击图1-8中的调试状态图标,程序进入调试状态。图1-8 调试状态图标调试时留意程序执行后寄存器和RAM单元各值的变化,判断结果是否与设计时设定的结果相一致;否则,应分析其产生错误的原因所在,并将其改正,直至正确为止。图1-9 寄存器及RAM如需观测指定单元的值,则可在变量地址位置直接输入相应的地址数据。例如:观察片内 20H单元值,则输入 i : 0x20 观察片外 1000H单元值,则输入 x : 0x1000 观察片内ROM区0100H单元值,则输入 c : 0x0100 程序调试时,要充分使用调试工具栏提供的功能,尤其是,复位,全速执行,停止,单步(进入子程序),单步(不进入子程序),跳出,运行到光标处这几个运行控制功能。其他的诸如反汇编,观察窗口,性能分析窗口,串行口等功能可以根据具体情况适时增加,以进一步分析程序的执行情况,提升程序的执行效率,这在设计复杂程序时,可以充分体现其特性。图1-10 调试工具栏KEIL 仿真功能设定。uVision3软件提供软件仿真,和硬件仿真两种功能。软件仿真通过计算机模拟单片机的执行过程,并在计算机上反映执行结果。硬件仿真由专用的硬件真实执行单片机的运行过程,在实物装置上反映执行结果。一般认为,软件仿真方便,直观,适合初学者学习时使用。硬件仿真体现单片机的真实执行情况,涉及知识面较广,适合具备一定单片机基础的人员或专业人员使用。 设定过程:点击1处图标,出现对话框 “Option for TargetTarger 1”,选择2处Debug栏。出现如图1-11所示对话框,默认功能为软件仿真状态。如改为硬件仿真,需选中4处所示选择项,并确定使用的硬件仿真器类型。本例选择默认的软件仿真功能。图1-11 仿真功能设定调试要点: 执行程序: 程序重新执行要按复位图标。在程序行双击鼠标,可以设置/取消断点。调试时,程序全速执行,如遇断点,将自动停下,可以根据各个单元的值判断程序的正确性。观察每步程序执行状况,选择单步。跟踪进入子程序选择单步进入。跳过子程序选择单步跳过。返回上一级程序,选择单步跳出。全速停止功能。建议初学者使用单步功能,少用全速,以充分了解单片机的程序执行过程。另外一个项目只包含一个汇编程序。观察结果:在寄存器和存储器栏可以观察程序的执行结果。存储器栏可以观察片内寄存器组R0-R7,Acc(A),B,SP,DPTR,PC PSW的值,此外还可以观察程序的执行时间。在存储器栏可以观察指定地址单元的值,要先输入正确的地址值。本例执行后,R0的值为 0x8b,Acc的值为0xed,与我们理论计算相一致,程序运行正确,也可在存储器栏观察到R0的值。该程序到此已经调试通过。一、实验目的: 初步掌握KEIL软件的使用方法。二、实验设备: PC机一台, KEIL软件(已安装)。三、实验内容: 输入并调试如下两组程序: ORG 0000H ORG 0000H MOV A,#20H MOV R0,#30H MOV B,#94H MOV A,R0 XCH A,B ;A与B交换 MOV R1,A END END四、实验预习要求: 1、认真阅读本指导书中的KEIL软件的使用说明; 2、手工计算实验程序结果;五、实验报告要求: 1、按规范书写:实验目的实验设备和实验内容. 2、记录每次单步执行后数据变化情况; 3、记录实验的最后结果;六、实验步骤: 仿照实验教程内容,新建项目;输入源程序;执行程序;记录执行结果。七、思考题: 1、使用KEIL软件的菜单和工具条,哪个方便? 2、执行完最后一条指令后,会发生什么现象?为什么会这样?应当如何处理,才能避免发生这种现象发生? 3、程序执行后,寄存器R1的内容在哪里查看? 4、如果程序从1000H开始执行,应如何设置? 2 实验二 指令系统学习实验实验教程: 每一种CPU,都有自己的指令系统。51系列单片机的指令系统共有111条指令。熟悉指令系统,熟悉CPU执行每条指令的情况和特点,是我们学好本课程的基础。本次实验就是利用WAVE软件,观察COU执行指令的情况,即通过让系统执行一条指令,再观察CPU窗口及相关数据窗口的变化情况,进一步熟悉该指令。实验示范操作 例题: 设置条件:(20H)=30H 执行指令:MOV R0,#20H MOV A,R0详细操作: 参照实验一各操作步骤,新建项目,新建文件,将文件包含到项目中。汇编程序文件输入时加上汇编起始地址:ORG 0000H后,输入源程序;输完源程序后,还需加上表示结束的语句:END 再保存文件,进行编译,得如图2-1所示: 图2-1 编译和保存完的文件 进入调试状态,在执行程序之前,在Memory窗口将20H单元内容修改为30H,(修改方法:将鼠标移到0x20单元,双击,随后输入新值即可,如无Memory窗口,点击图2-2Memory Window图标即可)如图2-2所示:图2-2 设置好数据的窗口 点击step图标,这时,计算机已经执行了一条程序,如图2-3所示:图2-3 单步执行后的界面 再观察Memory数据窗口,可以发现(00H)内容已经成为20H,(00H单元即是R0)图2-4 执行一条指令后的数据窗口 再点击一次“单步”工具条,这时,计算机又执行了下一条程序。 再观察寄存器窗口,可以发现提示行信息发生了变化:A=30H.如。图2-5所示:图2-5 寄存器信息 可见:执行第一条指令,CPU将20H(00H),即20HR0 执行第二条指令,CPU将R0指向的20H单元内容A关于Keil软件的详细操作,可以参照软件在线帮助文档,图2-6 启动在线帮助文档图2-7 启动后的帮助文档可以在目录、索引、搜索项中输入要查询的关键字。一、实验目的: 1、进一步熟悉51系列CPU指令系统; 2、进一步熟悉Keil软件的使用方法;二、实验设备: PC机一台,KEIL软件(已安装)。三、实验内容: 设置A=10H, 执行指令:MOV DPTR,#3000H MOVX DPTR,A (注:在XDATA中观察数据变化情况) 设置A=0ABH, 执行指令:SWAP A (注:SWPA为高四位与低四位交换) 设置A=10H,R5=3CH 执行指令:ADD A,R5 ADD A,#30H (注:ADD为加法指令) 设置A=20H, 执行指令:SUBB A,#74H (注:SUBB为减法指令) 设置A=7AH, 执行指令:ORL A,#38H (注:ORL为或运算指令) 设置A=54H,(30H)=6CH 执行指令:XRL A,30H (注:XRL为异或运算指令) 设置A=88H,B=34H 执行指令:ADD A,B DA A (注:DA A为十进制调整指令) 设置A=30H,B=20H 执行指令:PUSH A PUSH B POP A POP B (注:PUSH为进栈指令,POP为出栈指令) 设置A=12H,B=34H 执行指令:MUL AB (注:MUL为乘法运算指令) 设置A=0C6H,B=13H 执行指令:DIV AB (注:DIV为除法运算指令) 四、实验步骤:仿照实验教程内容 1、按实验内容次序逐条完成数据设置和执行程序 2、记录每条程序执行后的结果 3、分析各条指令的功能五、实验预习要求: 1、预习已经学过的每条指令的功能; 2、复习实验一Keil软件的试用;六、实验报告要求: 1、按规范书写 :实验目的实验设备和实验内容; 2、记录本次实验的各项结果; 3、分析该指令的功能。七、思考题: 1、在Keil软件的Memory窗口中的:i:0x00、x:0x0000、c:0x0000各代表什么数据? 2、在“仿真器设置”菜单中的语言项中,省缺显示格式中的混合十、十六进制的含义是什么? 3、如何观察程序状态字PSW的内容? 4、程序执行前,为什么要设置数据?它有什么作用 5、为什么必须要观看程序执行的结果?3 实验三 数制转换程序的设计与调试实验教程: 程序功能入口条件出口结果和程序清单 让计算机执行一段程序,实现某一个预定的目标。这个预定的目标,就是该程序的功能。在CPU执行程序之前,各数据在系统中存放的情况,叫做入口条件。CPU执行程序后的结果,称为出口结果。为某段程序编写的指令的总和,就是程序清单。实验示范操作: 例题:将累加器A中的十六进制数,转换成BCD码,并存放在21H和20H中。 如:A=FFH 255 (21H)=02 (20H)=55 所谓BCD码,即是我们平时使用的十进制数码。 1、程序设计: 我们可以这样来思考:先将这个数除以100(当然,在计算机中,要用十六进制表示,即为64H),得到一个百位的结果,存入21H;再把余数除以10(0AH),得到十位数的结果,(显然它在A的低位上),余数即是个位数结果,(但是它在B中)。而且A的高位明显为0,所以应当把它的高低位互相交换.最后,把一个高位有效的数和一个低位有效的数合并成一个数,只要做一次加法,相加的和存入20H.全部程序就处理完了。 按照我们上述思路,用MCS-51指令语句,把它逐条描述出来,这就是我们设计的程序的清单:MOV B,#64HDIV AB ;原数除以100DMOV 21H,A ;最高位存21HMOV A,B ;余数转存A中MOV B,#0AH DIV AB ;再除以10DSWAP A ;十位数转到高位ADD A,B ;十位数加上个位数MOV 20H,A ;存20H 2、程序调试: 入口/出口分析: 入口:A中放着一个十六进制数 出口:A中的数转换成BCD码,并存放到21H和20H中 输入程序并等待执行: 打开KEIL软件,参照实验一步骤,先新建项目,再在项目中添加文件,输入源程序。 要随时保存文件,输入完成后进行编译。若无语法错误,即可得到如图3-1所示的编辑界面。图3-1 例题编辑界面 按入口条件送数:进入调试状态。将鼠标移到 Regs-Sys-a ,点击鼠标左键,出现图3-2所示虚线框, 移动鼠标到数字区域,按鼠标左键,或按“F2”,便可更改累加器A的值。输入新的十六进制数值,数据格式以0x打头。 执行程序: 双击程序最后一行,进行设置断点,全速执行到最后一条指令处,再单步执行,全部程序就运行完成。 按出口结果判别程序的正确性: 观察Memory数据窗口,我们可以看到如图3-4所示的结果:(21H)=55H,(20H)=02H。重新复位,置PC值=0000H,再设置A=0xd8 。执行程序后,得到:(21H)=02,(20H)=16 0xd8=216完全正确。程序调试完毕。图3-4 内部RAM数据一、实验目的: 1、掌握KEIL软件的使用; 2、初步了解程序调试的方法;二、实验设备: PC机一台,KEIL软件(已安装)。三、实验内容: 将A中的两位BCD码拆开成二个十进制数,并相乘,求它的乘积(十进制)。四、实验步骤: 仿照实验教程内容 1、分析并列出:程序功能入口条件出口结果和程序清单; 2、利用KEIL软件输入源程序;执行程序;观察执行结果;判别程序的正确性。五、实验预习要求: 1、编写完成实验内容要求的程序; 2、复习实验一KEIL软件的试用。六、实验报告要求: 1、按规范书写 :实验目的实验设备和实验内容. 2、列出本次实验程序的:程序功能;入口条件;出口结果;程序清单; 3、记录本次实验的入口数据,出口结果; 4、判断程序的正确性;七、思考题: 1、什么是BCD码?什么是ASCII码? 2、什么是压缩的BCD码?什么是非压缩的BCD码? 3、为什么断点不能设定在END语句上? 4、试叙述设置断点的方法。4 实验四 循环程序的设计与调试实验教程:流程和流程图 为了记录程序设计的思路和便于人们之间的交流,人们创造了流程图。所谓流程图,实际上就是用一组图框来表示计算机的操作步骤。常用的符号如下图所示:操作框开始结束流程方向线判断框NY图 4-1 流程图框 一般来说,对内部或者外部RAM中地址连续的若干单元进行数据处理,均须用循环程序进行操作。将Ri或DPTR对准首地址,用R7作为计数器,用间址的方法取数,用DJNZ指令判别是否已经作完,预定的操作要求,一般都在循环体中进行。实验示范操作下面我们举一个例题。例:求十个数(八位数)连加之和。 入口条件:内部30H39H中存放十个待加数; 出口结果:该十数之和的高位存41H,低位存40H 程序功能:求30H39H中十个数据之和,结果存放在41H(高位),40H(低位)中程序流程设计:由上述条件可见,需处理的数据是内部RAM中十个地址连续单元。因此,必须使用循环程序,并用R0作间址,用R7作计数器。二数相加后可能有进位,这时需判断进位位C,如果C=1,高位41H应1;否则,继续相加。其流程图如下:(右边为相应程序)C=1?R030H 开始结束R70AHA00HA+指定数41H41H+141H00H40HAR0R0+1R71=0? MOV R0,#30H MOV R7,#0AH MOV A,#00H MOV 41H,#00H; LP0:ADD A,R0 N JNC LP1 Y INC 41H LP1: INC R0 N DJNZ R7,LP0 Y MOV 40H,A 程序清单如下:MOV R0,#30H ;R0指向数据首地址MOV R7,#0AH ;R7为数据长度指针MOV A,#00H ;累加器清”0”MOV 41H,#00H ;高位和清”0” LP0:ADD A,R0 ;取一个数相加JNC LP1 ;无进位,跳过INC 41H ;有进位,高位加1 LP1:INC R0 ;指向下一单元DJNZ R7,LP0 ;十个未完,返回再加MOV 40H,A ;完了,将和的低位送40H 程序调试: 打开Keil软件,打开KEIL软件,参照实验一步骤,先新建项目,再在项目中添加文件,输入源程序。在ORG 0000H后,输入源程序;输完源程序后,还需加上表示结束的语句:END。再保存文件,进行编译。如图4-2所示:图 4-2 保存和编译后的文件 在执行程序之前,先在30H39H中,按入口条件写入数据如下: 30H39H分别写入09H在Memory数据窗口,进行修改,在地址框输入 i :0x30 ,双击各单元数据,逐个输入原始数据。改写完后的数据界面如图4-4。所示很显然的,我们设计的程序,就是求这十个数据的和.即求09之和。图 4-4 30H39H改写后的情况 下面我们就要执行程序了。 先设置断点:将光标移到最后一条语句,双击,在该行设置了断点,这时我们可看到,刚才最后一条语句,有红色小方块指示,表明这就是断点位置。如图4-5所示。计算机在全速运行程序时,遇到断点,将停止在那里。(红色小方块指示的语句还未执行)图 4-5 断点 点击全速执行,程序将从起始地址开始运行到断点处停止。很明显,还有最后一条指令没执行。再点击单步,最后一条程序也执行完了。 观察程序执行后的结果: 这十个数据之和,应当在41H和40H中,在Memory数据窗口,出现如图(4-6)所示界面。从中可知: 41H=00H, 40H=2DH图 4-6 Memory数据 这个结果和我们人工计算的结果完全吻合。原则上讲,应当代入很多组数据让CPU计算,如果全部与人工计算的吻合,才能确认所设计的程序是正确的。实际调试时,只代入部分特殊数据就可以了。一、实验目的:1、初步学会设计程序流程图;2、熟练掌握Keil软件的使用方法;二、实验设备:PC机一台,Keil软件(已安装)。三、实验内容:设计并调试:将外部RAM2000H2010H的内容复制到内部RAM50H60H中。四、实验步骤:仿照实验教程内容1、画出程序流程图;2、按照流程图步骤,书写程序清单;3、分析并列出程序功能、入口条件、出口结果;4、利用Keil软件输入源程序;执行程序;观察执行结果;判别程序的正确性。五、实验预习要求:1、编写完成实验内容要求的程序;2、复习实验一Keil软件的试用;六、实验报告要求:1、按规范书写 :实验目的、实验设备和实验内容。2、列出本次实验程序的: 程序流程图; 程序功能; 入口条件; 出口结果; 程序清单;3、记录本次实验的入口数据,出口结果;4、判断程序的正确性;七、思考题:1、当编译出现问题时,应如何操作,才能正确进行编译?2、如何查看外部RAM的数据?3、如何操作可以多次运行程序和观看程序运行结果?4、为什么要全速运行程序?5、如何操作才可以简单方便地连着改写内部RAM的内容?5 实验五 定时程序的设计和调试实验教程:机器周期多重循环及定时程序的设计和调试 在计算机中,执行一条指令的最小单位时间,叫作机器周期。一个机器周期等于12个晶振周期。在51系列单片机中,CPU执行一条指令需14个机器周期,这可以在指令表中查到。让CPU执行一系列毫无意义的程序,消耗掉预定的时间,这就是软件定时程序的设计原则。我们来看下面的多重循环程序流程图:开始R7DATA1R6-1=0吗?R7-1=0吗?R5DATA3R5-1=0吗?R6DATA2结束 N Y N Y N Y 按上述流程图,可以列出如下程序清单: MOV R7,#DATA1 LOP0:MOV R6,#DATA2 LOP1:MOV R5,#DATA3 LOP2:DJNZ R5,LOP2 DJNZ R6,LOP1 DJNZ R7,LOP0 RET 据分析,CPU执行上述指令共消耗时间为: (2DATA3DATA2DATA1)个机器周期时间其中系数2是最里面的循环的机器周期数。实验示范操作: 下边,我们举一个定时程序设计的例子。 已知系统晶振频率为12MHZ,试设计一个延时120ms的程序。 分析:晶振频率为12MHZ,即一个机器周期为1s. 120ms=3200200s 采用双重循环结构,内循环3个机器周期,程序清单如下: MOV R7,#0C8H LP0:MOV R6,#0C8H LP1:NOP DJNZ R6,LP1 DJNZ R7,LP0 RET用KEIL调试定时程序很方便.首先,需要按照题意,模拟设置系统晶振频率。如本题中晶振频率为12MHz:点击图标 或选择菜单project - option for target target 1,在晶振频率设定框中写入12.0(MHz),再点击OK,即已经完成系统频率模拟设置。如图5-1所示。 把定时程序的入口设置成PC的起点,在定时程序终了处之前,加一个NOP指令,并在该指令处设置一个断点,再连续运行这个程序,到达断点处后,观察KEIL左侧Regs窗口下面的运行时间显示項,这里面的时间,就是刚才执行定时程序的时间.如图5-2、图5-3所示:图5-1 仿真器频率模拟设置图5-2 定时程序的编译、执行及循环程序执行时间信息 可见,执行刚才的程序,总共用了120.6ms。符合预定要求。 对于多个定时时间,可以设置一个单位定时时间为子程序。再按计算,多次调用这个子程序,就可得多个预定时间。如:调用100次120mS子程序,即可得12秒定时: MOV R5,#64H XP:LCALL DEL120 DJNZ R5,XPSJMP $ DEL120:MOV R7,#0C8H LP0:MOV R6,#0C8H LP1:NOPDJNZ R6,LP1 DJNZ R7,LP0 RET 调试时,在SJMP $处设置断点。运行该程序,到断点处停下时,观察运行时间提示項提示的时间数据。一、实验目的: 1、学会设计程序流程图; 2、熟练掌握KEIL软件的使用方法; 3、掌握定时程序的设计和调试方法;二、实验设备: PC机一台, KEIL软件(已安装)。三、实验内容:设计并调试一个定时40mS的定时程序。 (用实验方法设定晶振周期:6MHz)四、实验步骤:仿照实验教程内容 1、画出程序流程图; 2、按照流程图步骤,书写程序清单; 3、利用KEIL软件 输入源程序; 执行程序; 观察程序执行时间; 判别程序的正确性。五、实验预习要求: 1、画出实验程序流程图; 2、编写完成实验内容要求的程序清单; 3、复习实验一KEIL软件的试用;六、实验报告要求: 1、按规范书写 :实验目的实验设备和实验内容. 2、列出本次实验程序的: 程序流程图; 程序功能; 程序清单; 程序执行时间; 3、判断本定时程序的正确性。七、思考题: 1、如何调试时间极短的定时程序? 2、调试定时程序能否用单步执行的办法来运行程序? 3、分别判断单循环双循环三重循环的最大定时时间. *4、如何提高定时程序的定时正确性?6 实验六 数据排序程序的设计和调试实验教程:RAM区数据求极值和数据排序程序的设计和调试 对RAM区域数据求极值和数据排序,就是在指定的RAM区(外部或内部RAM区),按预定的要求,求出最大值、最小值或者按升序降序将数据进行重新排列。 求极值的基本思路是:首先,将第一个数据作为比较标准,再将其它数据与其进行比较,如符合要求,则不动;如不符合要求,则将这两数进行交换.显然,数据区全部比较完后,在第一个数据的位置上,已经得到了该数据区的极值。如实验示范操作的例一。 数据排序的基本思路:一列数据的极值求出后,放在第一个位置;再求其余数的极值放在第二个位置,求了N次后,显然已经将该数据块按预定要求排完了次序。如例二所示.实验示范操作: 例一:求内部RAM30H3FH中的最大值,并存放到首位. 分析:(见前述:求极值的基本思路) 程序清单和注释:见图6-1求极值编辑界面. 程序调试:打开KEIL软件,输入程序清单和注释并保存、编译后,可得到如下界面。图6-1 求极值编辑界面 调试时,先在内部RAM30H3FH中,任意设置数据如图6-2所示:图6-2 执行程序前数据设置情况 然后设置PC、在NOP处设置断点,再连续运行程序.等程序停止后,我们再观察内部RAM数据,如图6-3:图6-3 执行程序后数据变化情况 从图中可见,在RAM30H中,确实是存放着预定数据中的最大值。同时,我们应当注意到,原存放在30H中的数据11H,已经被删除了.程序已经完成预定功能,调试完成。 例二:将内部RAM30H3FH存放的数据按降序进行排列 分析:(见前述:数据排序的基本思路) 程序清单和注释:见图6-4数据排序编辑界面。 程序调试:打开KEIL输入程序清单和注释并保存、编译后,可得到如图6-4界面.再将内部RAM30H3FH的数据恢复原为先状态.然后设置PC、在NOP处设置断点,再连续运行程序。等程序停止后,我们再观察内部RAM数据,如图6-5:图6-4 数据排序编辑界面图6-5 执行排序程序后数据变化情况 从中可见,30H3FH的数据,确实是已经按降序排列好了。程序调试成功。一、实验目的: 1、熟练掌握KEIL软件的使用方法; 2、掌握数据排序类程序的设计和调试方法; 3、掌握一定的程序设计和调试的技巧;二、实验设备: PC机一台,KEIL软件(已安装)。三、实验内容: 1、求内部RAM中50H6FH的数据的最小值,并存放到70H中。 2、将内部RAM中50H6FH的数据,按升序进行排列。 *3、将外部RAM中3000H3050H中的数据,按降序进行排列。(第3项内容,难度较大,可以选做)四、实验步骤:仿照实验教程内容 1、编写实验程序清单; 2、在预定数据区设置好数据; 3、运行程序,并观察程序运行后数据变化情况; 4、判别程序的正确性.五、实验预习要求: 1、预习本实验的教程 2、按实验步骤四中1的要求,编写完成实验程序清单; 3、复习实验一KEIL软件的试用;六、实验报告要求: 1、按规范书写:实验目的实验设备和实验内容. 2、记录实验步骤1,2,3的资料 3、判断程本程序的正确性;七、思考题: 1、试用流程图的形式表示,应当如何操作,才能进行外部RAM的数据排序? 2、你知道利用“冒泡法”进行排序的方法吗? 3、试说明你在程序调试过程中出现的问题和解决该问题的方法。7 实验七 查表程序的设计和调试实验教程:ROM表格和查表程序的设计和调试 用查表的方法,从ROM中读取数据,这是单片机应用中经常使用的手段。所谓”查表”,就是在人们预先写入ROM的数据中,找出一个与已知数据对应的数据。如,找出A中数据的平方值;找出A中用户号的电话号码。查表程序通常使用的指令是MOVC A,A+DPTR,也可使用MOVG A,A+PC。查表程序的设计,应包括两部分,即数据表格和程序。应用查表程序的关键,是找出所需查找的数据在表格中的地址。下面,我们举例说明查表程序的设计:实验示范操作: 例:用查表法求5560的平方值. 显然,需查平方的数(5560)与表格中数据的关系应当是: 553025;563136;573249;583364;593481; 入口条件:A中存放一个需求平方值的BCD码数; 出口结果:A中数的平方值的高位在R7中,低位在R6中; 程序功能:求A中数的平方值,并将结果的高位存R7,低位存R6 分析:我们可以从ROM的1000H单元开始依次预存各数的平方值,并按照计算机中数据存放规则,高位存放在高地址,低位存放在低地址.在ROM中存放的数据影象应当是:1000H251001H301002H361003H311004H491005H321006H641007H331008H811009H34 这些数据,可以用定义字节的伪指令实现: ORG 1000H TABEL:DB 25,30,36,31,49,32,64,33 DB 81,34 数据与ROM中地址的对应关系应当是: 551000H;561002H;571004H;581006H;591008H 可以考虑DPTR对准表的首地址1000H.偏移量A的值为(A-55)X2 程序清单如下:MOV DPTR,#1000H ;DPTR对准表首地址CLR CSUBB A,#55H ;A的值减55RL A ;A的值扩大一倍MOV R5,A ;保存A的值MOVC A,A+DPTR ;从表中取出第一个数(低位)MOV R6,A ;按要求存放R6MOV A,R5 ;取回原A值INC DPL ;指向下一单元MOVC A,A+DPTR ;取出高位值MOV R7,A ;按要求存放R7程序调试: 1、用KEIL输入上述程序清单,并用上述DB伪指令定义ROM数据. 2、编译源程序,设置A=57. 3、全速执行程序. 4、查看R7R6是否分别等于32,49.如果相等了,表明程序已经调试完成.一、实验目的: 1、熟练掌握KEIL软件的使用方法; 2、掌握查表程序的设计和调试方法;二、实验设备: PC机一台, KEIL软件(已安装).三、实验内容: 设计并调试如下功能的程序: 入口条件:A中存放着客户编号,并且客户编号与电话号码关系如下:1886866 ;2-868868;3-868686 出口结果:该客户的电话号码分别存放在R7R6R5中. 程序功能:将A中的客户号,转换成预定的电话号码,并分别存放到R7R6和R5中四、实验步骤:仿照实验教程内容 1、分析ROM表格的影象,并用DB伪指令安置好ROM数据 2、分析A中数据和ROM表格中相应数据的关系 3、设计出查表程序的清单 4、利用KEIL软件输入源程序;执行程序;观察程序执行结果;判别程序的正确性。五、实验预习要求: 1、预习本实验的教程 2、按实验步骤四中1,2,3的要求,编写完成实验程序清单; 3、复习实验一WAVE软件的试用;六、实验报告要求: 1、按规范书写 :实验目的实验设备和实验内容. 2、记录实验步骤1,2,3的资料 3、判断本查表程序的正确性; 七、思考题: 1、如何设计4155的平方表? 2、如何观察ROM中相应地址下的数据情况。 3、试写出你设计的数据表格的地址和数据清单。8 实验八 数据运算程序的设计和调试实验教程: 所谓数据运算程序,就是按入口条件存放的几个数据,经过执行该程序后,可以得到预
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025非专利技术成果转让合同
- 打造高效用户服务体系框架
- 2025年养老院年终个人工作总结(六篇)
- 2025年电气工程师年终总结样本(3篇)
- 2025国考临沂市海关监管岗位行测高频考点及答案
- 2025年下半年咸宁市城建档案馆招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉安市住房公积金管理中心招考工作人员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年台州市黄岩国资本投资运营集团限公司公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年台州市椒江区国家税务局招考易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年台州唐车轨道交通装备限公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 职工职业健康体检表
- 国开2025年《行政法与行政诉讼法》形考作业1-4答案
- 2025年江苏省农垦集团有限公司人员招聘笔试备考及答案详解(全优)
- 《梦回繁华》 语文统编版八年级上册(公开课一等奖创新教学设计)
- 2025年贵州省政府采购评审专家考试试题及答案
- 学堂在线 研究生素养课-积极心理与情绪智慧 章节测试答案
- 眼科护士进修汇报
- 2025至2030中国水面无人艇(USV)行业产业运行态势及投资规划深度研究报告
- 2025年广东省税务系统遴选面试真题带答案详解
- DB52∕T 1837-2024 党政机关办公区物业管理服务规范
- 工程劳务合作管理办法
评论
0/150
提交评论