51系列单片机实验系统指导书_第1页
51系列单片机实验系统指导书_第2页
51系列单片机实验系统指导书_第3页
51系列单片机实验系统指导书_第4页
51系列单片机实验系统指导书_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、 51系列单片机实验系统指导书目录前言第1章下载式实验系统的使用方法1.1软件安装与启动1.1.1 1.1.2文件操作1.1.3建立工程项目(汇编)1.1.4调试程序第2章软件实验2.1数据传送实验2.2清0实验2.3数据转换实验2.4拆字、拼字实验2.5散转程序实验2.6时钟实验2.7计数器实验2.8无符号十进制数加法实验2.9数据排序实验2.10单字节BCD码除法实验2.11查找相同个数实验第3章硬件实验3.1P1口彩灯控制实验3.2数码管显示实验 3.3顺序控制实验3.48031和8155接口扩展与数码管显示实验3.5键盘、数码管显示综合实验3.6A/D转换实验3.7D/A转换实验3.8

2、A/D与D/A转换综合实验第4章89C51系列实验4.1顺序控制实验4.2数码管显示实验4.3键盘、数码管显示综合实验4.4A/D转换实验4.5D/A转换实验 前 言 目前,51系列单片机在我国的各行各业得到了广泛应用,各大专院校、 职业培训学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科,必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果。为了适应这一学习上的要求,国内外厂家开发了多种实验、开发系统,但普遍存在集成度高,严重脱离实际的情况。作者集多年理论教学、实验教学、产品开发的经验,完全摒弃了以前各种实验设备的那种思维模式,重新开发出一种

3、实验、开发系统,专从产品开发角度出发,安排各种硬件实验,并且做到每一个实验就是一个小产品,每个实验就是一个产品开发的过程,从单片机最小系统开始,逐步扩展功能,从单一功能到功能多样,从小到大,从简单到复杂,自成系统给人一种完整的学习思路,让学习者概念清晰、直观明了、易学易懂,特别是加强了硬件故障排除方法的指导,解决了学习者中普遍对硬件故障排除难的问题;其次是加强了软件调试的指导,提供了一些软件调试方法和步骤,帮助初学者很快入门,帮助熟练者更加深化。 本实验系统采用模块式设计,为各学校单片机的课程设计、学生的毕业设计、提供了硬件设备,该模块可反复使用、任意组合、方便经济,解决了各单位研究与实验经费

4、不足的问题。特别在开发产品中更加适用,一个产品谈妥后厂家往往要求几天之内拿出产品样机,你可用此系统很快拼装成一个产品样机,供编程人员仿真,同时进行印制板设计。若出现问题,硬件可及时修改、添加,一切开发成功后,再作印制板,一次成功,减少经费损失,缩短了开发周期,为产品开发提供了方便。 本实验指导书分四章:第1章,下载式实验系统的使用;第2章,软件实验;第3章, 硬件实验;第4章,89C51单片机实验, 特别第4章完全讲解的是一个产品开发的全过程,力求使学习者获得更大的收益。 第1章 下载式实验系统的使用方法1.1 软件安装与启动 下载式实验系统,是一套既可脱离硬件仿真又可与实验系统联机仿真的实验

5、装置,对于硬件实验,只要将软件调试好后就可将程序用串行口直接在线写入芯片,再不必象以前那样要专用的编程器来固化程序。1.1.1 软件安装 1. 为使 QTH 调试器能够正常运行,您必须提供以下软硬件环境: 586 以上的 PC 及兼容机;100M 以上的剩余硬盘空间;分辨率为 800600 以上的显示器;具有SPP功能的打印机接口;使用符合 Intel 标准的汇编器、编译器和连接器。如 Franklin/Keil V3.2 或 keil V6.02 及以上版本。2.使用:单击开始/程序,在程序条中选QTH2008XS下载式单片机实验仪V2004.1或直接双击桌面上QTH2008XS 快捷图标。

6、 图11连机出错提示框如果已经连接仿真器或实验仪,则直接进入 QTH 调试器窗口。如果没有连接仿真器,等一下屏幕上会出现图11所示的连机出错提示框:可以选择是否进入模拟调试:“是”进入调试;“否”请检查并使仿真器正常工作后,再按调试菜单上的复位钮,进入仿真调试。出现如图12所示的模拟调试器窗口:图12模拟调试器窗口1.2 系统使用方法学习单片机的最终目的是开发单片机产品或维修单片机产品,开发一个产品必须经历硬件设计和软件设计两个阶段。而实验系统是将一些简单的实用电路已设计好。再在该系统中编写程序,调试程序,编写调试程序又必须经历写程序;编译程序;调试程序三个大的过程,每一个过程又有很多步骤和方

7、法。写程序有程序输入、程序修改、程序保存。编译程序有成功与否,不成功要反复修改,成功后会自动生成列表文件(.LST)和目标文件(.OBJ),可进行调试程序,调试过程较复杂,下面分别叙述。首先在图12所示的窗口中可进行程序编写或打开已编好的程序,若编写新的程序则在主菜单中单击“文件/新建”,若打开编好的程序,则在主菜单中单击“文件/打开”,现打开一个编好的文件(P1.ASM),出现如图13所示的模拟调试器窗口: 图13模拟调试器窗口在主菜单中有9项,即文件、编辑、查看、项目、调试、设置、外设、窗口、帮助下面将每一项及每一项的子菜单分别叙述,其中文件和编辑菜单内容一般会用,重点讨论查看、项目、调试

8、、设置、外设、窗口,帮助一项也可自已随时使用。1.2.1 查看主菜单的“查看”下拉菜单中的内容有:工具栏、状态栏、寄存器窗口、程序寄存器窗口、数据寄存器窗口、逻辑分析窗口、跟踪记录窗口、变量表、项目管理器窗口、信息窗口、观察窗口。这些窗口和工具条显示在屏幕或关闭的方法都是第一次选中且单击打开(关闭)对应的选项,第二次选中且单击关闭(打开)对应的选项。将全部打开后的屏幕窗口显示如图14所示: 号窗口为综合窗口,单击本窗口下面的标签,此窗口会变换成项目管理器窗口,特殊功能寄存器窗口,内部数据存储器(00H-FFH)窗口,内部位(20H-2FH范围内的00-7F之间共计128个位)显示窗口。随着程序

9、的不同可以任意选择其中的一个窗口。在项目管理器窗口和内部数据存储器(00H-FFH)窗口中单击鼠标右键有对应的浮动菜单出现,选中且单击选项可进行对应的操作。后面的3个窗口可直接改变单元中的数值(赋值)。号窗口为信息窗口,该窗口是显示所有操作的信息内容,特别是在将程序进行编译或编译连接装载后,显示程序出错与否的信息,主要看错误(ERROR)和警告(WARNING)两项,特别是错误项有一个错误就不能编译通过,调试就不能进行,有警告无错误还可通过,最好显示是“0”个错误,“0”个警告。号窗口也是一个综合窗口,单击本窗口下面的标签,此窗口会变换成代码(Code)窗口,外部程序(XData)存储器窗口,

10、数据(Data)存储器窗口。随着程序的不同可以任意选择其中的一个窗口进行观察。 图14模拟调试器窗口在每一个窗口中单击鼠标右键有对应的浮动菜单出现,选中且单击选项可进行对应的操作。例如在外部程序(XData)存储器窗口中单击鼠标右键出现浮动菜单,要看指定的单元中的内容,选中浮动菜单中“选择显示地址”且单击出现地址对话窗口,在窗口中输入要看的地址,对应的地址项马上出现在本窗口中,解决了查找之苦。所有窗口可直接改变单元中的数值(赋值)。号窗口为观察窗口,有时要观察的值太多,可将要观察的值选定到此窗口中进行观察,方法是:在此窗口中单击鼠标右键出现浮动菜单,选中浮动菜单中“增加观察项”且单击出现如图1

11、5所示的对话窗口,按窗口中的要求选中对应的各项,选中的变量图15模拟调试器窗口马上出现在号窗口中。主窗口,程序所在的窗口,也有浮动菜单,为调试程序提供了方便。从上可见观察内容很多,一个屏幕上不可能容纳这么多内容, 有的时候窗口很大,就需要用窗口调整指令来调整好各个窗口位置大小。窗口整体移动的方法是用鼠标单击上边框条,上边框变蓝,将鼠标左键按住整体移动,鼠标整个窗口一起移动,放到合适位置,松开鼠标就行。窗口四边分别收缩或放大的方法是,将鼠标点击窗口边线,出现左右或上下形式的箭头(注意此箭头一晃而过要认真捕捉),马上按住鼠标左键整体移动鼠标,边线就跟着移动,移至合适位置,松开鼠标就行,有些窗口为竖

12、式长方形,有些窗口为横式长方形,若要调整它的形状,用窗口命令就行。1.2.2 项目项目菜单为解决多个程序组合或混合编程(汇编语言C语言)的问题而设置。单击主菜单中项目,出现下拉菜单,在下拉菜单中有新建项目、打开项目、关闭项目、项目属性、编译当前文件、编译连接装载、加入模块文件、加入库文件、装入调试信息。下面重点讨论几项,其他的自已照着操作不再一一叙述。1新建项目单击“项目/新建项目”,出现对话框,在框重输入文件名字,新的项目就建立了。若有原项目,只是打开就行了(但源文件修改以后,每次就在“文件”菜单中选“保存”或用保存工具图标保存文件)。2.编译文件单击“项目/编译当前文件”或 “项目/编译连

13、接装载”(两种方式的区别在于前者只编译,后者既编译又将编译后的代码下载到CPU中)将新编写的或打开的程序进行编译,编译成功的话,下面的信息窗口(Massage)会出现新创建的文件名,且在窗口中出现组装完成(ASSEMBLY COMPLETE),“0”个错误(ERROR)“0”个警告(WARNING) 。系统会自动生成列表文件和目标文件。若编译有错,信息窗口会指出错误在什么地方,反复修改,直至编译通过为止。注意:若有一项错误,目标文件和列表文件就不能自动生成。3项目属性单击“项目/项目属性”出现对话框,框中第一页如图16所示 C编译器页 图16工程设置对话框SMALL、COMPACT、LARGE

14、这些指令控制存储器模式选择。存储器模式对不同的变量定义有所影响。SMALL:小模式,所有函数和过程的变量及局部数据段被定义在8051片内数据存储区。COMPACT:紧凑模式,所有函数和过程的变量及局部数据段被定义在8051片外数据存储区中256字节。这种模式使用(R0、R1)访问外部数据存储器。LARGE:紧凑模式,所有函数和过程的变量及局部数据段被定义在8051片内数据存储区中64K字节空间。这种模式通过数据指针(DPTR)访问外部数据存储器。CODE/NOCODE:CODE指令在列表文件后附加上一个汇编记忆表,源程序中的每个函数被表示为汇编代表。OPTIMIZE(n):括号内n为一个05的

15、十进制数,另外可选OPTIMIZE(SIZE) 和OPTIMIZE(SPEED),以决定优化重点是放在代码长度上还是执行速度上。RAM(SMALL、COMPACT、LARGE)RAM指令用来决定程序内存的大小,它影响跳转指令的编码。RAM(SMALL): CALL和JMP指令作为ACALL和AJMP指令的编码,最大程序空间可达2K字节,整个用户程序必须分布在这2K字节空间内。ROM(COMPACT):CALL指令以LCALL编码,函数内JMP指令以AJMP编码,因此函数长度不得超过2K字节,而整个程序长度不得超过64K字节,这种用法必须根据不同的目的而决定,看其是否比标准设置ROM(LARGE

16、)效果更佳。ROM(LARGE):将CALL和JMP指令以LCALL和LJMP编码。这样就允许不加限制地使用整个地址空间,用户程序最大可达64K字节。PL/M编译器页 图17工程设置对话框CODE/NOCODE:CODE控制表明开始列出生成标准汇编语言格式地目标代码,这些汇编语言目标代码紧随源程序列表清单之后,NOCOD控制是在出现CODE控制之前,不列出所生成地目标代码清单。注意:NOPRINT控制不能对CODE控制有抑制作用,而且NOOBJECT中也隐含了NOCODE功能。INTVECTOR/NOINTVECTOR在INTVCTOR控制下,编译程序可为模块中每个中断过程产生一个字节入口的中

17、断向量。对中断n,中断向量入口的绝对地址为8n3。当然,可以用ASM51单独建立中断向量。在选用NOINTVECTOR控制时,编译程序将不产生任何中断向量。RAM(SMALL、MEDUIM、LARGE)RAM指令用来决定程序内存的大小,它影响跳转指令的编码。RAM(SMALL): CALL和JMP指令作为ACALL和AJMP指令的编码,最大程序空间可达2K字节,整个用户程序必须分布在这2K字节空间内。8051为提高编码密度,仅在2K块内转移和调用,尽可能不使用3个字节的调用和转移指令。ROM(MEDUIM):将正在进行编译的模块适合INBLOCK,而其他模块(包括来自PLM51.LIB的那些模

18、块)可以任意安放,这样就需使一些调用成为长调用(3个字节)。但是大多数的转移和大部分调用,仍能保持短编码形式。 ROM(LARGE):将CALL和JMP指令以LCALL和LJMP编码。这样就允许不加限制地使用整个地址空间,用户程序最大可达64K字节。OPTIMIZE(n):括号内n的可取值为一个03的十进制数,在产生目标代码中,该控制实现各种优化处理。每一优化级包含了比优化级别低的所有优化处理功能。REGISTERBANK(寄存器组控制)其中,寄存器组值为0、1、2或3。在代码生成中,REGISTERBANK控制将确定选用其四个8051寄存器组中的一个。对一个含有USING属性的控制,能够由一

19、个过程所替代,PL/M51认为,一个过程中断总是与他所中断的过程使用不同的寄存器组,因而如果在一个独立模块中为每个中断编译代码,则应在REGISTERBANK控制下编译所有非中断代码,所有的低级中断和高级中断分别处在各自寄存器组的设置下。因此,不用USING属性也能避开引起的麻烦。连接器页 图18工程设置对话框该页中其它各项已介绍,下面只讲述定位控制项:BIT:起始地址/段名,定位BIT段。DATA:起始地址/段名,定位DATA段。IDATA: 起始地址/段名,定位IDATA段。STACK:段名,定位STACK段。CODE: 起始地址/段名,定位CODE段。XDATA: 起始地址/段名,定位X

20、DATA段。PDATA: 起始地址,为PDATA类型的段定义起始地址。PRECODE:起始地址,在寄存器和位存储区中定位段。1.2.3调试程序调试程序是使用该软件的最复杂、最关键的一步,在调试之前, 要进行各项操作与设置,不然下拉菜单中的各项打不开(没有从白色变成黑色)。1.装载:装入当前程序的调试信息。该命令的快捷键为Ctrl+L,工具图标见由“查看/工具栏/调试工具”打开的工具条。2.源程序调试:进入源程序调试方式。3.混合码调试:对 C 程序进入源与汇编码的混合状态调试方式。4.单步执行:跟踪运行程序,在反汇编窗口下执行一条指令,如果当前是调用指令,则进入所调用的子程序;如果在源程序窗口

21、下,执行当前文本下的一条语句,如果是调用指令则进入所调用的子程序。该命令的快捷键为F8,工具图标见由“查看/工具栏/调试工具”打开的工具条。5.宏单步执行:单步运行程序。反汇编窗口下如果是调用指令,则越过所调用的子程序;源程序窗口下,如果是调用语句,则越过所调用的子程序。该命令的快捷键为F10,工具图标见由“查看/工具栏/调试工具”打开的工具条。6.连续单步:连续单步操作。该命令的快捷键为Ctrl+F8。7.连续宏单步:连续宏单步操作。该命令的快捷键为Ctrl+F10。8.连续执行:全速运行,遇断点停止。该命令的快捷键为F5,工具图标见由“查看/工具栏/调试工具”打开的工具条。9.执行到光标处

22、:全速运行到光标处。该命令的快捷键为F7,工具图标见由“查看/工具栏/调试工具”打开的工具条。10.跳出子程序:当前执行在子程序处时,执行该命令跳出子程序。该命令的快捷键为Shift+F11,工具图标见由“查看/工具栏/调试工具”打开的工具条。11.设置断点:单击“调试/设置断点”出现断点设置窗口,可设置或清除断点;设置断点属性等。该命令的快捷键为F9。12. 复位:复位仿真器, 该命令的快捷键为Ctrl+R。13. 屏蔽断点全速运行 该命令的快捷键为Ctrl+F5。1.2.4设置(S)1. 仿真器设置:单击“设置/仿真器设置”出现如图19所示的对话框,在该对话框中可设置仿真器的仿真模式。 8

23、052 模式 选择 8052 仿真模式,(EA=0)。在此模式下可仿真采用 8031/8032、80C31/80C32、8051/8052、78C32 单片机的应用系统。仿真程序存贮器模式选择栏中,可选择四种仿真存贮器模式之一: 内程序存贮器 内数据存贮器 仿真程序存贮器在仿真器上。数据存贮器也在仿真器上,该模式在无目标板时,最初调试软件用以排除软件中的故障。 图19仿真模式设置对话框 内程序存贮器 外数据存贮器仿真程序存贮器在仿真器上,数据存贮器及 I/O 口在用户板上。一般采用该模式。通过该模式进行在线测试,可排除目标板上硬件故障,并进行软件调试。 外程序存贮器 内数据存贮器程序存贮器在用

24、户板上(EPROM),数据存贮器在仿真器上。该模式很少使用。主要用于目标板缺少数据存贮器,将仿真器上数据存贮作临时使用。外程序存贮器 外数据存贮器程序存贮器在用户板(EPROM)上,数据存贮器及 I/O 口在用户板上。该模式可进行反汇编跟踪分析目标板程序,或调试目标板上 EPROM 中程序。 8752 模式 当选择8752仿真模式,(EA=1)。可仿真采用 87C51/87C52 、W78E5X、AT89C5X、LG90C5X 单片机的应用系统。仿真程序存贮器模式选择栏中,可选择四种仿真存贮器模式之一: 内程序存贮器 内数据存贮器 例如:仿真 89C52 8K 程序存贮器,大于 8K 程序存贮

25、器在仿真器上,扩展的外部数据存贮器在仿真器上。该模式在无目标板时调试软件,用于排除软件中的故障。 内程序存贮器 外数据存贮器例如:仿真89C52 8K 片内程序存贮器,大于 8K 程序存贮器在仿真器上,扩展的外部数据存贮器及I/O 口在用户板上。一般采用该模式。通过该模式进行在线测试,可排除目标板上硬件故障,并进行软件调试。 外程序存贮器 内数据存贮器例如:仿真 89C52 8K 片内程序存贮器,大于 8K 程序存贮器在用户板上。扩展的外部数据贮器在仿真器上。该模式很少使用。主要用于目标板缺少数据存贮器时,将仿真器上数据存贮作临时使用。 外程序存贮器 外数据存贮器例如:仿真 89C52 8K

26、片内程序存贮器,大于 8K 程序存贮器在用户板上。扩展的外部数据存贮器及 I/O 口在用户板上。 仿真器存贮空间选择当选择 8752 模式时,跟据 CPU 片内存贮器空间有四种选择:87C51/78E51 4K 片内程序存贮器87C52/78E52 8K 片内程序存贮器87C54/78E54 16K 片内程序存贮器87C58/78E58 32K 片内程序存贮器 主频选择主频分仿真主频及逻辑主频两类。仿真主频是指仿真器的仿真频率;逻辑主频是指带逻辑分析仪仿真器的采集频率。有四种频率选择:6MHz、12MHz、24MHz对于(QTH-8052F+ 其频率选择为:2.7648MHz、5.5296MH

27、z、11.0592MHz)及外晶振,当选择外晶振时,由目标板或仿真头提供振荡频率(即用户自己选择的晶振)。 外复位选择该功能允许用户板的复位引入仿真器内仿真 CPU,可调试外部复位电路及实时仿真外部看门狗电路及自复位电路。2.设置PC值:设置当前程序计数器值。3.设置文本编辑器:单击“设置/设置文本编辑器”弹出设置文本编辑器对话框,可设置环境参数,如字体、颜色等。4.项目属性:设置源程序的编译/连,在前面已讲述1.2.5外设(O)1. 端口:端口设置窗口,显示或改变端口的状态。如图110所示。2. 定时/计数器 0:定时器/计数器 0 模式和控制窗口,其 TMOD 和 TCON 的值,可以作为

28、定时器0初始化的编程依据,如图110所示。 图110 外设图示3. 定时/计数器 1:定时器/计数器 1 模式和控制窗口,其 TMOD 和 TCON 的值,可 图111外设图示以作为定时器1初始化的编程依据。4. 定时/计数器 2:定时器/计数器 0模式和控制窗口,其中 T2CON 的值,可以作为定时器 2 初始化的编程依据。5. 串行口:串行口工作模式和控制窗口,其 SMOD 和 SCON 的值,可以作为串行口初始化的编程依据。如图111所示。6. 中断:中断状态窗口,包括 INT0,INT1,T0,T1,T2 和 UART 中断状态以及优先级和允许设置。设置或清除相应的标志,可以改变中断的

29、状态,也可以通过相应的值,作为中断初始化的编程依据。如图111所示。1.2.6 QTH 集成开发实验系统使用QTH 集成开发环境提供了以下两种方式开发应用程序:l 不使用QTH 集成开发环境项目管理方式对源程序文件直接进行汇编/连接方式,兼容传统开发习惯。l 使用 QTH 集成开发环境项目管理方式可进行多模块、混合语言编程的方式,也同样适合单模块程序的开发。1.不使用项目管理方式开发应用程序不使用 QTH 集成开发环境项目管理方式,只能进行单模块方式下的应用程序开发,具有很大的局限性。以下是不使用 QTH 集成开发环境项目管理方式开发应用程序的步骤。 关闭当前项目单击“项目/关闭项目” 此时

30、QTH 集成开发环境关闭界面上所有的窗口。不使用 QTH 集成开发环境项目管理方式开发应用程序,用户必须关闭已经打开的项目,因为当打开项目文件后,QTH集成开发环境默认所有编译/汇编、产生代码的过程都是对项目或项目所包含的文件进行的。 在文件菜单下打开应用程序单击“文件/新建”或“文件/打开”,出现如图112所示的对话框。单模块方式下的文件调试可以按照以下方法新建或打开文件:单击“文件/新建”,输入文件名和扩展名,新建文件单击“文件/打开”,选择文件选取框中的文件将其打开 图112 打开对话框 编译/汇编单击“项目/编译”QTH 集成开发环境根据文件的扩展名,自动对当前激活的文件选择调用外部编

31、译器或汇编器: 图113 信息框 如果当前文件的扩展名为 ASM,“编译/汇编”命令调用外部汇编命令对当前文件汇编。 如果当前文件的扩展名为 C,“编译/汇编”命令调用外部 C编译命令对当前文件编译。执行“项目/编译”命令后产生的结果显示在如图113所示的信息框中:错误信息关联QTH 集成开发环境调用外部命令编译后产生的结果,显示在信息窗口中。信息窗口中,当编译发生错误时,信息窗口中的错误信息自动与源文件关联,提示出错的位置。在信息窗口中错误提示处双击鼠标左键,也可将错误信息与源文件的错误位置关联,如图114所示。 图114 信息关联框l 如果编译没有错误,可进入第步操作l 如果编译出现错误,

32、在修改文件后重复进行第步操作 产生代码并装入仿真器调试单击“项目/装入调试信息”或“调试/装入”装入调试信息或装入命令对编译连接无误后产生的 OBJ 文件进行连接,产生用于下载的代码。此命令自动地对修改过的源程序进行编译或汇编,对没有修改过的程序将越过编译或汇编过程,然后连接所有的 OBJ,LIB 文件,再装载代码到仿真器,完成调试程序所需的准备工作。装载完成后,调试器窗口调试工具条所有命令钮变亮。2.使用项目管理方式开发应用程序使用 QTH 集成开发环境项目管理方式,可以对单模块和多模块方式应用程序进行开发。以下是使用 QTH 集成开发环境项目管理方式开发应用程序的步骤:l 建立一个新的项目

33、进入第步新建项目l 打开已经存在的项目文件进入第步打开项目 图115新建项目对话框 新建项目单击“项目/新建项目”出现图115所示的对话框 项目名称栏:QTH 集成开发环境的项目文件是按项目名称管理的,项目管理器内的项目名称不可以相同。在项目名称输入栏内,项目名称用户必须输入,并且项目名称不得超过 8 个字符,不可以使用汉字以及“-,?,*,/”等 DOS 文件所不可以使用的字符。 图116打开对话框立即加入模块文件:选择立即加入模块文件,表示在项目建立后,会自动打开文件选取框,供用户选择文件添加到项目管理器。 加入模块文件单击“项目/加入模块文件”出现“打开”窗口,选择文件在当前新建或打开的

34、项目中添加源程序文件。注意:必须逐个加入模块文件,并且把主模块第一个加入其中。 打开项目单击“项目/打开项目” 出现“打开”窗口。对于调试已经存在的项目,可以直接打开项目文件进入第四步操作。 设置项目属性设置当前项目的编译及连接控制属性。 编译/汇编/连接单击“项目/编译连接装载”,QTH 集成开发环境根据文件的扩展名,自动对激活的文件选择调用外部编译器或汇编器进行编译。l 如果当前文件的扩展名为ASM,编译/汇编命令调用外部汇编命令对当前文件汇编。l 如果当前文件的扩展名为 C,编译/汇编命令调用外部 C 编译命令对当前文件编译。文件编译/连接的命令行参数由“项目/项目属性”确定。 错误信息

35、关联文件经过编译/连接后的结果显示于信息窗口,出现错误后错误信息与文件关联。在信息窗口中错误之处双击鼠标左键,可将错误与文件关联: 如果没有错误,进入第步操作 如果出现错误,修改文件后重复第步操作 装入调试信息单击“项目/编译连接装载”单击“项目/装入调试信息”单击“调试/装入”编译连接装载命令对经过编译/汇编无误后产生的 OBJ 文件进行连接产生用于下载的代码。此命令对修改过的源程序自动进行编译或汇编,否则将越过编译或汇编过程进行连接并装载代码到仿真器,完成调试文件所需的准备工作,并自动装入调试信息到仿真器。l 使用编译连接装载命令,命令管理器会自动判别文件是否需要重新编译/汇编,提高调试效

36、率,对编译连接通过的程序自动装入调试信息到仿真器。l 使用重新装入信息或装入命令,直接装入调试信息到仿真器。1.2.7 调试举例例11:单模块汇编语言源程序(不使用项目管理方式开发应用程序)程序用已编好的文件,存于QTHASM文件夹中,文件名:P1.ASM 关闭项目文件关闭当前已经打开的项目,保证编译/汇编连接都是对当前激活的文件进行操作。 打开文件掌握数据转换方法程序编写方法点击“文件/打开”,在文件选取框中选择文件 P1.ASM。 编辑修改文件对打开后的文件进行编辑修改。 编译连接装载单击“项目/编译连接装载”命令P1.ASM 文件汇编,编译/汇编后产生的结果出现在 QTH 集成开发环境信

37、息窗口。如果程序存在错误,集成开发环境将自动关联到源程序的错误处,转到第步操作;如果正确,则装入调试信息到仿真器可进行第步。 装入代码到仿真器使用项目|装入调试信息命令,将产生代码装入仿真器,此时 QTH 集成开发环境进入调试状态。QTH 集成开发环境的文件窗口 P1.ASM 的左侧出现了一列小圆点,表示当前程序计数器 PC。如图117所示。 图117 调试应用程序.经过前面操作,为 QTH 集成开发环境调试应用程序提供了所有准备工作。您可以开始对源程序进行调试。例12:多模块汇编语言源程序(使用项目管理方式开发应用程序)多模块程序 AMPLE1.C,SAMPLE2.ASM,假定已存于 C:Q

38、THC51和 C:QTHC51目录内,当建立项目时,项目文件也存放在该目录内。 建立新的项目文件选择项目|新建项目命令,根据提示输入、设置以下项目:l 在项目名称框中输入 SAMPLE,此时项目名称为 SAMPLE。l 选择立即加入模块文件,表示在项目建立后将自动打开文件捡取框,供用户选择文件添加到项目管理器。l 在项目属性项内将 C 编译器其它选项内选择 “NOREGPARMS” 控制项。 编辑修改文件对打开后的文件进行编辑修改。 编译连接装载使用项目|编译连接装载或热键 F4 命令对当前多模块文件编译/汇编,编译/汇编后产生的结果出现在 QTH 集成开发环境信息窗口。如果程序存在错误,集成

39、开发环境将自动关联到源程序的错误处,转到第步操作;如果正确,则装入调试信息到仿真器可进行第步。 错误信息关联文件经过编译/汇编后的结果显示于信息窗口,出现错误后错误与文件关联。在信息窗口中错误之处双击鼠标左键,可将错误与文件关联:l 如果没有错误,可进入第步操作。l 如果出现错误,修改文件后重复进行第步操作。 调试应用程序使用项目|装入调试信息命令,将产生代码装入仿真器,此时 QTH 集成开发环境进入调试状态。QTH 集成开发环境的文件窗口的左侧出现了一列小圆点,表示当前程序的有效行,即此时存在相应的代码,键入 F8 跟踪运行键,程序运行到 main 函数的第一条语句,并在该行的左侧出现绿色的

40、小手,表示当前的程序计数器 PC。到此,QTH 集成开发环境提供应用程序的所有准备工作。1.2.8 断点QTH 集成开发环境配合 QTH 系列仿真器,具有强大的断点功能:可以在编辑和调试状态下设置或清除断点,并且在退出集成开发环境时自动保存断点信息。1.断点标记QTH 集成开发环境的断点标记,根据系统状态和所处窗口类型,标记如下:l 在编辑或调试状态下,源程序窗口内绿色小手无效断点或临时断点,退出进不保存。l 在调试状态下,源程序窗口内的红色小手有效地址断点,退出时保存。l 在反汇编窗口内设置的断点,标记为红色光地址断点,退出时保存。2.断点变化规律在编辑或调试状态下源程序窗口内没有断点处设置

41、断点,标记为绿色小手;再次设置断点,标记被清除。在调试状态下源程序窗口内有效程序执行处设置断点,标记为红色空心小手,再次设置断点,标记被清除。在调试状态下与源程序断点关联的反汇编窗口红色光带处设置断点,在反汇编窗口内清除断点,同时将源程序窗口断点标记清除;再次设置断点,反汇编窗口标记为红色光带,源程序窗口的对应行再次标记为断点行。3.源程序文本上设置断点 编辑状态设置断点当用户在编写源程序的过程中,根据调试需求,可以直接在源程序文本的任何地方设置或清除断点。如果设置了断点,将以绿色小手标记在源程序文本左侧的灰色状态栏内,断点属性为无效断点。当编译连接装载通过后,自动转化为有效断点,对于在源程序

42、文本上设置的无效断点,系统退出时不保存。 调试状态设置的断点在调试状态下,可以直接在源程序文本上设置断点(当文本左侧的灰色状态栏内时,表示当前程序为有效行)。设置后,断点以红色小手标记在文本左侧的灰色状态栏内;如果没有出现小圆点,则不可以设置有效断点。在编辑状态下设置的断点,通过编译连接后,如果预设的断点编译后是有效行,则断点标记为有效断点;如果不是有效行,则仍为无效断点。对于在源程序文本上设置的断点,系统退出的全部自动保存。 在反汇编窗口设置的断点断点在反汇编窗口内以红色光带表示,可以任意设置地址断点,如果设置的断点与源程序有效地址关联,则与源程序相关联的地址处设置断点,在源程序窗口内出现红

43、色小手。 图118 断点设置窗口如果在源程序断点相关联的反汇编窗口红色光带处设置断点,将清除窗口内的断点光带,同时清除源程序断点标记;再次设置断点,反汇编窗口标记为红色光带,源程序对应行再次标记为断点。 断点设置窗口通过断点设置可执行增加断点,删除断点等操作。设置断点属性禁止或允许断点,断点的过点次数等。 1.2.9 具体调试方法 1.调试判位变量转移指令AD0:JB P1.3,AD0的方法。 不管用单步还是全速运行,碰到此句时,若P1.30就停止执行,只有当P1. 30时,才接着向下执行,调试时没有硬件,本仿真系统提供了硬件接口,只要在主菜单View的下拉菜单中,选Hardware就弹出对话

44、窗口,在窗口中选P1口,弹出P1口结构图,赋值使P1.30,此时再运行,程序就往下执行。 同样可调试,判位变量转移指令,AD0:JNB P1.3 AD0 ,只是赋值时,使P1.31。 2.调试外部中断程序 外部中断0(),请示端口为P3.2,中断入口地址为0003H,低电平有效。外部中断1(),请示端口为P3.3,低电平有效,中断入口地址为0013H。在编写程序时,只要在中断服务程序之前(或开头)安排两条语句,ORG 0003H, AJMP INTP0就行,INTP0为中断服务子程序的标号,当P3.2为低电平时, 执行到开外部中断指令,SETB EA;SETB EX1,程序就进入中断服务子程序

45、。若P3.2不为低电平, 程序就不进入中断服务程序,调试时使P3.2为0的方法,是在主菜单View 的下拉菜单中,选Hardware,弹出对话窗口,在窗口中选P3口,对P3.2赋值为0 就行,同样可调试外部中断1()。 3.定时器中断调试方法 51系列有两个16位的定时/计数器,当用作定时器时,由单片微机内部的时钟脉冲,经12分频后,送加1 计数器, 当用作计数器时, 由外部提供计数脉冲,通过引脚P3.4(T0)和P3.5(T1)端口送计数器,端口出现,由“1”(高电平)到“0”(低电平)的负跳变脉冲时,计数器则加1,计数器不断加1计数到FFFF时,16 位计数器将由全“1”回归全“0”,计数

46、器产生回“0”溢出脉冲,置位中断系统的中断请求标志位, 请求主机进行中断处理,即溢出中断。若用外部脉冲计数,所对应的引脚应有负跳变脉冲,有一个计一个,无脉冲就停止计数。若用内部时钟脉冲时, 就与外端口无关。 T0的中断入口地址是000Bh ,T1的中断入口地址是001BH。编程时,只要在中断服务程序之前或程序开头安排两条语句,ORG 000BH;AJMP CONT0 ,CONT0为中断服务子程序的标号,当程序执行SETB EA , SETB TR0 ,若有溢出时,程序就进入中断服务程序, 否则就不进入中断服务程序。若要溢出快,就将初值TL0 、TH0两单元的值设置大一些, 例如TH0的值设置为

47、FF ,TL0的值设置为FE或FD,这样程序运行一次或两次就溢出,很好调试,若初值设置为0000,从0000到FFFF要运行65536次,若用单步运行就要很长时间。同样,可调试外部脉冲计数器。 4.下面以跳“彩灯左移”为例具体说明 单击“ 文件(File)/新建”,并编写程序,跳“彩灯左移”源程序,程序的功能是使接于P1口的8个指示灯顺次点亮,反复循环。ORG 0000H /*指定下面所编的程序固化到ROM中的起始地址*/LOP: MOV P1,#0FEH /*第1个指示灯亮*/ACALL DEL /*调用延时子程序延时*/MOV P1,#0FDH /*第2个指示灯亮*/ACALL DELMO

48、V P1,#0FBH /*第3个指示灯亮*/ACALL DELMOV P1,#0F7H /*第4个指示灯亮*/ACALL DELMOV P1,#0EFH /*第5个指示灯亮*/ACALL DELMOV P1,#0DFH /*第6个指示灯亮*/ACALL DELMOV P1,#0BFH /*第7个指示灯亮*/ACALL DELMOV P1,#7FH /*第8个指示灯亮*/ACALL DELAJMP LOP /*反复循环*/DEL: MOV R7,#0FFHDEL1:MOV R6,#0FFHDEL2:DJNZ R6,DEL2DJNZ R7,DEL1RETEND 单击“文件/另存为”保存文件。将刚编

49、好的跳“彩灯左移”源程序存盘,取名为P1.AMS。 编译(汇编)。单击“项目(Project)/编译连接下载”系统自动编译程序。编译通过后,自动生成OBJ文件和列表文件,名字分别为P1.OBJ和 P1.LST。 进行各项设置, 设置为仿真调试;仿真模式为8052;频率为12M晶振;内数据存储器,内程序存储器。 打开数据存贮空间(Data dump)中的CPU内部数据RAM窗口、特殊功能寄存器窗口和外设P1端口。 调试运行。全速运行,用工具条中连续运行图标或快捷键F5。单步运行,用F8或工具条中单步图标。单步越过,用F10或工具条中单步越过图标。 调试时, 一般是先用全速命令运行一次, 看是不是

50、程序功能达到了,若不是你想要的结果,就要反复修改程序,调试程序,调试时一般将几个方法综合使用,如先用单步运行程序,边运行边观察结果,开始时,用键将光带置于第2条指令处,一般是光标移过后才有结果。 当光带在第2条指令时,按一下F8,光带移动至第3条指令。此时P1 的内容应变为FE, 再按一下F8 ,光带移动到第19 条指令,调用延时子程序,再按一下F8,光带移动至第20条,此时R7 的内容应改变为FF ,再按一下F8 ,光带移动至第21条, R6单元中的内容应改变为FF,再按一下F8,光带不动,进入循环,再按F8,FF递减,一直要按住F8,让FF减为0,再跳出第一循环,然后进入第二循环,执行DJ

51、NZ R6,DEL1 ,R61后就又跳出DEL1,进入第一循环,一直循环下去,直到第二循环R6的FF减为0 时,再执行第23条,返回到第4条指令去执行。所以碰到循环, 若用单步就要很长时间来执行几条指令,解决的办法:一是用断点;二是将R6、R7的数据改为01H就行了,这里介绍改数字方法来跳出循环,只要R6,R7的值改为02H,单步运行后, 程序有两种结果:一是进入死循环, 说明循环部分有问题,修改程序后,重新仿照上面运行,一直到第二种情况出现为止。二是运行到第23 条返回指令,返回到第4条指令,此时,查P1中的值应为FE,还未变,再按一下F8,光带运行到第5条指令,此时P1的内容应为FD,再按

52、下 F8 ,光带运行到第19条指令,又一次进入延时程序,如此反复,一止至P1中的内容依次出现FE、FD、FB、F7、EF、DF、BF、7F为止,第一遍 “彩灯左移”完成,只要第一遍成功了,第二遍就没有必要再调试了,到此为止,程序算是调试成功了,然后下载到芯片中,若硬件不出问题,应是最后结果,若此 “彩灯左移 ”不出现,最大的可能故障是硬件出了问题,排除硬件故障,直到成功。 第2章 软件实验 本章专门安排12个软件实验,全部由软件仿真调试,完全脱离仿真器, 避免了做软件实验中,学生可能损坏仿真器的问题。 通过这些实验程序的调试,使学生熟悉MCS-51的指令系统,掌握软件仿真方法;了解单片机软件设计过程;掌握汇编语言设计方法,以及怎样用软件仿真提

温馨提示

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

评论

0/150

提交评论