51系列单片机实验系统指导书 电子工程系
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.8A/D与D/A转换综合实验 第4章89C51系列实验 4.1顺序控制实验 4.2数码管显示实验 4.3键盘、数码管显示综合实验 44A/D转换实验 1.5D/A转换实验
2 目 录 前言 第 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.1 P1 口彩灯控制实验 3.2 数码管显示实验 3.3 顺序控制实验 3.4 8031 和 8155 接口扩展与数码管显示实验 3.5 键盘、数码管显示综合实验 3.6 A/D 转换实验 3.7 D/A 转换实验 3.8 A/D 与 D/A 转换综合实验 第 4 章 89C51 系列实验 4.1 顺序控制实验 4.2 数码管显示实验 4.3 键盘、数码管显示综合实验 4.4 A/D 转换实验 4.5 D/A 转换实验
前 目前,51系列单片机在我国的各行各业得到了广泛应用,各大专院校、职业培训 学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科, 必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果 为了适应这一学习上的要求,国内外厂家开发了多种实验、开发系统,但普遍存在集成 度高,严重脱离实际的情况。作者集多年理论教学、实验教学、产品开发的经验,完全 摒弃了以前各种实验设备的那种思维模式,重新开发出一种实验、开发系统,专从产品 开发角度出发,安排各种硬件实验,并且做到每一个实验就是一个小产品,每个实验就 是一个产品开发的过程,从单片机最小系统开始,逐步扩展功能,从单一功能到功能多 样,从小到大,从简单到复杂,自成系统给人一种完整的学习思路,让学习者概念清晰、 直观明了、易学易懂,特别是加强了硬件故障排除方法的指导,解决了学习者中普遍对 硬件故障排除难的问题:其次是加强了软件调试的指导,提供了一些软件调试方法和步 骤,帮助初学者很快入门,帮助熟练者更加深化 本实验系统采用模块式设计,为各学校单片机的课程设计、学生的毕业设计、提 供了硬件设备,该模块可反复使用、任意组合、方便经济,解决了各单位研究与实验经 费不足的问题。特别在开发产品中更加适用,一个产品谈妥后厂家往往要求几天之内拿 出产品样机,你可用此系统很快拼装成一个产品样机,供编程人员仿真,同时进行印制 板设计。若出现问题,硬件可及时修改、添加,一切开发成功后,再作印制板,一次成 功,减少经费损失,缩短了开发周期,为产品开发提供了方便 本实验指导书分四章:第1章,下载式实验系统的使用:第2章,软件实验:第3 章,硬件实验;第4章,89C51单片机实验,特别第4章完全讲解的是一个产品开发的 全过程,力求使学习者获得更大的收益
3 前 言 目前,51 系列单片机在我国的各行各业得到了广泛应用,各大专院校、 职业培训 学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科, 必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果。 为了适应这一学习上的要求,国内外厂家开发了多种实验、开发系统,但普遍存在集成 度高,严重脱离实际的情况。作者集多年理论教学、实验教学、产品开发的经验,完全 摒弃了以前各种实验设备的那种思维模式,重新开发出一种实验、开发系统,专从产品 开发角度出发,安排各种硬件实验,并且做到每一个实验就是一个小产品,每个实验就 是一个产品开发的过程,从单片机最小系统开始,逐步扩展功能,从单一功能到功能多 样,从小到大,从简单到复杂,自成系统给人一种完整的学习思路,让学习者概念清晰、 直观明了、易学易懂,特别是加强了硬件故障排除方法的指导,解决了学习者中普遍对 硬件故障排除难的问题;其次是加强了软件调试的指导,提供了一些软件调试方法和步 骤,帮助初学者很快入门,帮助熟练者更加深化。 本实验系统采用模块式设计,为各学校单片机的课程设计、学生的毕业设计、提 供了硬件设备,该模块可反复使用、任意组合、方便经济,解决了各单位研究与实验经 费不足的问题。特别在开发产品中更加适用,一个产品谈妥后厂家往往要求几天之内拿 出产品样机,你可用此系统很快拼装成一个产品样机,供编程人员仿真,同时进行印制 板设计。若出现问题,硬件可及时修改、添加,一切开发成功后,再作印制板,一次成 功,减少经费损失,缩短了开发周期,为产品开发提供了方便。 本实验指导书分四章:第 1 章,下载式实验系统的使用;第 2 章,软件实验;第 3 章, 硬件实验;第 4 章,89C51 单片机实验, 特别第 4 章完全讲解的是一个产品开发的 全过程,力求使学习者获得更大的收益
第1章下载式实验系统的使用方法 1.1软件安装与启动 下载式实验系统,是一套既可脱离硬件仿真又可与实验系统联机仿真的实验装置, 对于硬件实验,只要将软件调试好后就可将程序用串行口直接在线写入芯片,再不必象 以前那样要专用的编程器来固化程序 1.1.1软件安装 为使QIH调试器能够正常运行,您必须提供以下软硬件环境:586以上的 PC及兼容机;100M以上的剩余硬盘空间:分辨率为800×600以上的显示器:具有 SPP功能的打印机接口;使用符合 Intel标准的汇编器、编译器和连接器。如 Franklin/KeV32或keiV6.02及以上版本 2.使用:单击开始/程序,在程序条中选QTH2008XS下载式单片机实验仪V2004.1 或直接双击桌面上QTH-2008XS快捷图标。 连机出错 仿真器连机出错,请检查仿真器接口是否正常。 是否进入软件调试! 匚是①否⑩」取消 图1-1连机出错提示框 如果已经连接仿真器或实验仪,则直接进入QTH调试器窗口。如果没有连接仿真 器,等一下屏幕上会出现图1一1所示的连机出错提示框:可以选择是否进入模拟调试: “是”——进入调试;“否”—一请检査并使仿真器正常工作后,再按调试菜单上的复 位钮,进入仿真调试。出现如图1-2所示的模拟调试器窗口: 文件Q)查看Q)项目①)设置)帮助 如需帮助,请按F1键 执行周期:执行:, OlpC=00 图1-2模拟调试器窗口
4 第 1 章 下载式实验系统的使用方法 1.1 软件安装与启动 下载式实验系统,是一套既可脱离硬件仿真又可与实验系统联机仿真的实验装置, 对于硬件实验,只要将软件调试好后就可将程序用串行口直接在线写入芯片,再不必象 以前那样要专用的编程器来固化程序。 1.1.1 软件安装 1. 为使 QTH 调试器能够正常运行,您必须提供以下软硬件环境: 586 以上的 PC 及兼容机;100M 以上的剩余硬盘空间;分辨率为 800×600 以上的显示器;具有 SPP 功能的打印机接口;使用符合 Intel 标准的汇编器、编译器和连接器。如 Franklin/Keil V3.2 或 keil V6.02 及以上版本。 2.使用:单击开始/程序,在程序条中选 QTH2008XS 下载式单片机实验仪 V2004.1 或直接双击桌面上 QTH-2008XS 快捷图标。 图 1-1 连机出错提示框 如果已经连接仿真器或实验仪,则直接进入 QTH 调试器窗口。如果没有连接仿真 器,等一下屏幕上会出现图 1-1 所示的连机出错提示框:可以选择是否进入模拟调试: “是”——进入调试;“否”——请检查并使仿真器正常工作后,再按调试菜单上的复 位钮,进入仿真调试。出现如图 1-2 所示的模拟调试器窗口: 图 1-2 模拟调试器窗口
1.2系统使用方法 学习单片机的最终目的是开发单片机产品或维修单片机产品,开发一个产品必须经 历硬件设计和软件设计两个阶段。而实验系统是将一些简单的实用电路已设计好。再在 该系统中编写程序,调试程序,编写调试程序又必须经历写程序:编译程序:调试程序 三个大的过程,每一个过程又有很多步骤和方法。写程序有程序输入、程序修改、程序 保存。编译程序有成功与否,不成功要反复修改,成功后会自动生成列表文件(.LST) 和目标文件(.OBJ),可进行调试程序,调试过程较复杂,下面分别叙述。 首先在图1一2所示的窗口中可进行程序编写或打开已编好的程序,若编写新的程 序则在主菜单中单击“文件/新建”,若打开编好的程序,则在主菜单中单击“文件/打开 现打开一个编好的文件(P1.ASM),出现如图1-3所示的模拟调试器窗口 盛文件)编辑g)查看00项目)调试①)设置⑧)外设①)窗口①)帮助0x ‖自副「 国x ◆其它文件 RIGHT. R目,#88H 撒消最后一步操作 执行周期: 执行:Ln1,Coal1 Pc=00 图1-3模拟调试器窗口 在主菜单中有9项,即文件、编辑、查看、项目、调试、设置、外设、窗口、帮助 下面将每一项及每一项的子菜单分别叙述,其中文件和编辑菜单内容一般会用,重点讨 论查看、项目、调试、设置、外设、窗口,帮助一项也可自已随时使用。 1.2.1查看 主菜单的“查看”下拉菜单中的内容有:工具栏、状态栏、寄存器窗口、程序寄存 器窗口、数据寄存器窗口、逻辑分析窗口、跟踪记录窗口、变量表、项目管理器窗口、 信息窗口、观察窗口。这些窗口和工具条显示在屏幕或关闭的方法都是第一次选中且单 击打开(关闭)对应的选项,第二次选中且单击关闭(打开)对应的选项。将全部打开 后的屏幕窗口显示如图1-4所 ①号窗口为综合窗口,单击本窗口下面的标签,此窗口会变换成项目管理器窗口 特殊功能寄存器窗口,内部数据存储器(0OH-FFH)窗口,内部位(20H-2FH范围内的00-7F 之间共计128个位)显示窗口。随着程序的不同可以任意选择其中的一个窗口。在项目管 理器窗口和内部数据存储器(00H-FFH)窗口中单击鼠标右键有对应的浮动菜单出现,选 中且单击选项可进行对应的操作。后面的3个窗口可直接改变单元中的数值(赋值)
5 1.2 系统使用方法 学习单片机的最终目的是开发单片机产品或维修单片机产品,开发一个产品必须经 历硬件设计和软件设计两个阶段。而实验系统是将一些简单的实用电路已设计好。再在 该系统中编写程序,调试程序,编写调试程序又必须经历写程序;编译程序;调试程序 三个大的过程,每一个过程又有很多步骤和方法。写程序有程序输入、程序修改、程序 保存。编译程序有成功与否,不成功要反复修改,成功后会自动生成列表文件(.LST) 和目标文件(.OBJ),可进行调试程序,调试过程较复杂,下面分别叙述。 首先在图 1-2 所示的窗口中可进行程序编写或打开已编好的程序,若编写新的程 序则在主菜单中单击“文件/新建”,若打开编好的程序,则在主菜单中单击“文件/打开”, 现打开一个编好的文件(P1.ASM),出现如图 1-3 所示的模拟调试器窗口: 图 1-3 模拟调试器窗口 在主菜单中有 9 项,即文件、编辑、查看、项目、调试、设置、外设、窗口、帮助 下面将每一项及每一项的子菜单分别叙述,其中文件和编辑菜单内容一般会用,重点讨 论查看、项目、调试、设置、外设、窗口,帮助一项也可自已随时使用。 1.2.1 查看 主菜单的“查看”下拉菜单中的内容有:工具栏、状态栏、寄存器窗口、程序寄存 器窗口、数据寄存器窗口、逻辑分析窗口、跟踪记录窗口、变量表、项目管理器窗口、 信息窗口、观察窗口。这些窗口和工具条显示在屏幕或关闭的方法都是第一次选中且单 击打开(关闭)对应的选项,第二次选中且单击关闭(打开)对应的选项。将全部打开 后的屏幕窗口显示如图 1-4 所示: ① 号窗口为综合窗口,单击本窗口下面的标签,此窗口会变换成项目管理器窗口, 特殊功能寄存器窗口,内部数据存储器(00H-FFH)窗口,内部位(20H-2FH 范围内的 00-7F 之间共计 128 个位)显示窗口。随着程序的不同可以任意选择其中的一个窗口。在项目管 理器窗口和内部数据存储器(00H-FFH)窗口中单击鼠标右键有对应的浮动菜单出现,选 中且单击选项可进行对应的操作。后面的 3 个窗口可直接改变单元中的数值(赋值)
②号窗口为信息窗口,该窗口是显示所有操作的信息内容,特别是在将程序进行编 译或编译连接装载后,显示程序出错与否的信息,主要看错误(EROR)和警告( WARNING) 两项,特别是错误项有一个错误就不能编译通过,调试就不能进行,有警告无错误还可 通过,最好显示是“0”个错误,“0”个警告。 ③号窗口也是一个综合窗口,单击本窗口下面的标签,此窗口会变换成代码(Code) 窗口,外部程序( XData)存储器窗口,数据(Data)存储器窗口。随着程序的不同可以任意 选择其中的一个窗口进行观察 巴模拟调试器-[F!sn 回区 文件()信()查着项目)调式0设置()外设)窗口)帮助 09H RG 0030H RIGHT R,#8H 可员叫盛n 习。5 小2回时下cx如…人D/ 如需帮助,请按键 执行局期0时间000n1.ca1=0082模式团 图1-4模拟调试器窗口 在每一个窗口中单击鼠标右键有对应的浮动菜单出现,选中且单击选项可进行对应 的操作。例如在外部程序( XData)存储器窗口中单击鼠标右键出现浮动菜单,要看指定的 单元中的内容,选中浮动菜单中“选择显示地址”且单击出现地址对话窗口,在窗口中 输入要看的地址,对应的地址项马上出现在本窗口中,解决了查找之苦。所有窗口可直 接改变单元中的数值(赋值)。 ④号窗口为观察窗口,有时要观察的值太多,可将要观察的值选定到此窗口中进行 观察,方法是:在此窗口中单击鼠标右键出现浮动菜单,选中浮动菜单中“増加观察项 且单击出现如图1-5所示的对话窗口,按窗口中的要求选中对应的各项,选中的变量
6 ②号窗口为信息窗口,该窗口是显示所有操作的信息内容,特别是在将程序进行编 译或编译连接装载后,显示程序出错与否的信息,主要看错误(ERROR)和警告(WARNING) 两项,特别是错误项有一个错误就不能编译通过,调试就不能进行,有警告无错误还可 通过,最好显示是“0”个错误,“0”个警告。 ③号窗口也是一个综合窗口,单击本窗口下面的标签,此窗口会变换成代码(Code) 窗口,外部程序(XData)存储器窗口,数据(Data)存储器窗口。随着程序的不同可以任意 选择其中的一个窗口进行观察。 图 1-4 模拟调试器窗口 在每一个窗口中单击鼠标右键有对应的浮动菜单出现,选中且单击选项可进行对应 的操作。例如在外部程序(XData)存储器窗口中单击鼠标右键出现浮动菜单,要看指定的 单元中的内容,选中浮动菜单中“选择显示地址”且单击出现地址对话窗口,在窗口中 输入要看的地址,对应的地址项马上出现在本窗口中,解决了查找之苦。所有窗口可直 接改变单元中的数值(赋值)。 ④号窗口为观察窗口,有时要观察的值太多,可将要观察的值选定到此窗口中进行 观察,方法是:在此窗口中单击鼠标右键出现浮动菜单,选中浮动菜单中“增加观察项” 且单击出现如图 1-5 所示的对话窗口,按窗口中的要求选中对应的各项,选中的变量
Fm观察变量输入对话框 变量选择 程序模块名 C Watch C Watch 青选择要观察的变量或地址 C Watchs 返回 图1-5模拟调试器窗口 马上出现在④号窗口中 ⑤主窗口,程序所在的窗口,也有浮动菜单,为调试程序提供了方便。 从上可见观察内容很多,一个屏幕上不可能容纳这么多内容,有的时候窗口很大, 就需要用窗口调整指令来调整好各个窗口位置大小。窗口整体移动的方法是用鼠标单击 上边框条,上边框变蓝,将鼠标左键按住整体移动,鼠标整个窗口一起移动,放到合适 位置,松开鼠标就行。窗口四边分别收缩或放大的方法是,将鼠标点击窗口边线,出现 左右或上下形式的箭头(注意此箭头一晃而过要认真捕捉),马上按住鼠标左键整体移动 鼠标,边线就跟着移动,移至合适位置,松开鼠标就行,有些窗口为竖式长方形,有些窗 口为横式长方形,若要调整它的形状,用窗口命令就行。 1.2.2项目 项目菜单为解决多个程序组合或混合编程(汇编语言C语言)的问题而设置。单击 主菜单中项目,出现下拉菜单,在下拉菜单中有新建项目、打开项目、关闭项目、项目 属性、编译当前文件、编译连接装载、加入模块文件、加入库文件、装入调试信息。下 面重点讨论几项,其他的自己照着操作不再一一叙述。 1.新建项目 单击“项目/新建项目”,出现对话框,在框重输入文件名字,新的项目就建立了 若有原项目,只是打开就行了(但源文件修改以后,每次就在“文件”菜单中选“保存” 或用保存工具图标保存文件) 2.编译文件 单击“项目/编译当前文件”或“项目/编译连接装载”(两种方式的区别在于前者 只编译,后者既编译又将编译后的代码下载到CPU中)将新编写的或打开的程序进行编 译,编译成功的话,下面的信息窗口( Massage)会出现新创建的文件名,且在窗口中出现 组装完成( ASSEMBLY COMPLETE),“0”个错误( ERROR)“0”个警告( WARNING)。系统 会自动生成列表文件和目标文件。若编译有错,信息窗口会指出错误在什么地方,反复 修改,直至编译通过为止 注意:若有一项错误,目标文件和列表文件就不能自动生成 3.项目属性
7 图 1-5 模拟调试器窗口 马上出现在④号窗口中。 ⑤主窗口,程序所在的窗口,也有浮动菜单,为调试程序提供了方便。 从上可见观察内容很多,一个屏幕上不可能容纳这么多内容, 有的时候窗口很大, 就需要用窗口调整指令来调整好各个窗口位置大小。窗口整体移动的方法是用鼠标单击 上边框条,上边框变蓝,将鼠标左键按住整体移动,鼠标整个窗口一起移动,放到合适 位置,松开鼠标就行。窗口四边分别收缩或放大的方法是,将鼠标点击窗口边线,出现 左右或上下形式的箭头(注意此箭头一晃而过要认真捕捉),马上按住鼠标左键整体移动 鼠标,边线就跟着移动,移至合适位置,松开鼠标就行,有些窗口为竖式长方形,有些窗 口为横式长方形,若要调整它的形状,用窗口命令就行。 1.2.2 项目 项目菜单为解决多个程序组合或混合编程(汇编语言 C 语言)的问题而设置。单击 主菜单中项目,出现下拉菜单,在下拉菜单中有新建项目、打开项目、关闭项目、项目 属性、编译当前文件、编译连接装载、加入模块文件、加入库文件、装入调试信息。下 面重点讨论几项,其他的自已照着操作不再一一叙述。 1.新建项目 单击“项目/新建项目”,出现对话框,在框重输入文件名字,新的项目就建立了。 若有原项目,只是打开就行了(但源文件修改以后,每次就在“文件”菜单中选“保存” 或用保存工具图标保存文件)。 2.编译文件 单击“项目/编译当前文件”或 “项目/编译连接装载”(两种方式的区别在于前者 只编译,后者既编译又将编译后的代码下载到 CPU 中)将新编写的或打开的程序进行编 译,编译成功的话,下面的信息窗口(Massage)会出现新创建的文件名,且在窗口中出现 组装完成(ASSEMBLY COMPLETE),“0”个错误(ERROR)“0”个警告(WARNING) 。系统 会自动生成列表文件和目标文件。若编译有错,信息窗口会指出错误在什么地方,反复 修改,直至编译通过为止。 注意:若有一项错误,目标文件和列表文件就不能自动生成。 3.项目属性
单击“项目/项目属性”出现对话框,框中第一页如图1-6所示 (1)C编译器页 工程设 ⑨c编译器|PLM编译器连接器 选择C編译器类型 cKei1编译器 C Franklin编译器 存储器模式 RM大小 小模式 (SMALL C小模式MAIL C紧凑模式〔 MPACT C中模式 MPACT C大模式 CARGE C大模式 LARGE 优化等级 其它选项 寄存器組 缺省值 编译控制项 缺省值 确 X取 图1-6工程设置对话框 SMAL、 COMPACT、LARE这些指令控制存储器模式选择。存储器模式对不同的变量定 义有所影响。 SMAL:小模式,所有函数和过程的变量及局部数据段被定义在8051片内数据存储 COMPACT:紧凑模式,所有函数和过程的变量及局部数据段被定义在8051片外数据存 储区中256字节。这种模式使用(eR0、@R1)访问外部数据存储器。 LARGE:紧凑模式,所有函数和过程的变量及局部数据段被定义在8051片内数据存储 区中64K字节空间。这种模式通过数据指针(DPTR)访问外部数据存储器。 CODE/ NOCODE:CODE指令在列表文件后附加上一个汇编记忆表,源程序中的每个函数 被表示为汇编代表。 OPTIMIZE(n):括号内n为一个0-5的十进制数,另外可选 OPTIMIZE(SIZE)和 OPTIMIZE( SPEED,以决定优化重点是放在代码长度上还是执行速度上。 RAM( SMALL、 COMPACT、 LARGE) RAM指令用来决定程序内存的大小,它影响跳转指令的编码。 RAM( SMALL):CALL和JM指令作为 ACALL和AJM指令的编码,最大程序空间可达2K 字节,整个用户程序必须分布在这2K字节空间内。 RoM( COMPACT):CAL指令以LCAL编码,函数内JMP指令以AJM编码,因此函数长
8 单击“项目/项目属性”出现对话框,框中第一页如图 1-6 所示 ⑴ C 编译器页 图 1-6 工程设置对话框 SMALL、COMPACT、LARGE 这些指令控制存储器模式选择。存储器模式对不同的变量定 义有所影响。 SMALL:小模式,所有函数和过程的变量及局部数据段被定义在 8051 片内数据存储 区。 COMPACT:紧凑模式,所有函数和过程的变量及局部数据段被定义在 8051 片外数据存 储区中 256 字节。这种模式使用(@R0、@R1)访问外部数据存储器。 LARGE:紧凑模式,所有函数和过程的变量及局部数据段被定义在 8051 片内数据存储 区中 64K 字节空间。这种模式通过数据指针(DPTR)访问外部数据存储器。 CODE/NOCODE:CODE 指令在列表文件后附加上一个汇编记忆表,源程序中的每个函数 被表示为汇编代表。 OPTIMIZE(n):括号内 n 为一个 0-5 的十进制数,另外可选 OPTIMIZE(SIZE) 和 OPTIMIZE(SPEED),以决定优化重点是放在代码长度上还是执行速度上。 RAM(SMALL、COMPACT、LARGE) RAM 指令用来决定程序内存的大小,它影响跳转指令的编码。 RAM(SMALL): CALL 和 JMP 指令作为 ACALL 和 AJMP 指令的编码,最大程序空间可达 2K 字节,整个用户程序必须分布在这 2K 字节空间内。 ROM(COMPACT):CALL 指令以 LCALL 编码,函数内 JMP 指令以 AJMP 编码,因此函数长
度不得超过2K字节,而整个程序长度不得超过64字节,这种用法必须根据不同的目的 而决定,看其是否比标准设置ROM( LARGE)效果更佳 ROM( LARGE):将CALL和JMP指令以LCAL和LJP编码。这样就允许不加限制地使 用整个地址空间,用户程序最大可达64K字节。 (2)PLM编译器页 工程设置 ⑨c编译器PL编译器|》连接器 忧化等级 RM大小 ]C小模式MAL 寄存器组 C中模式MEDI〕 C大模式LAGE 编译控制项 缺省值 缺省值 确认 x取消 图1—7工程设置对话框 oODE/ NOCODE:o0E控制表明开始列出生成标准汇编语言格式地目标代码,这些汇编 语言目标代码紧随源程序列表清单之后, NOCOD控制是在出现CODE控制之前,不列出所 生成地目标代码清单。注意: NOPRINT控制不能对CODE控制有抑制作用,而且 NOOBJECT 中也隐含了 NOCODE功能 INTVECTOR/NOINTVECTOR 在 INTVCTOR控制下,编译程序可为模块中每个中断过程产生一个字节入口的中断向 量。对中断n,中断向量入口的绝对地址为8n+3。当然,可以用ASM51单独建立中断向 量。在选用 NOINTVECTOR控制时,编译程序将不产生任何中断向量。 RAM( SMALL、 MEDUIM、 LARGE) RAM指令用来决定程序内存的大小,它影响跳转指令的编码。 RAM(SMAL):CAL和J指令作为ACAL和AJMP指令的编码,最大程序空间可达2K 字节,整个用户程序必须分布在这硎K字节空间内。8051为提高编码密度,仅在2K块内 转移和调用,尽可能不使用3个字节的调用和转移指令。 RoM( MEDUIM):将正在进行编译的模块适合 INBLOCK,而其他模块(包括来自PLM51.LIB
9 度不得超过 2K 字节,而整个程序长度不得超过 64K 字节,这种用法必须根据不同的目的 而决定,看其是否比标准设置 ROM(LARGE)效果更佳。 ROM(LARGE):将 CALL 和 JMP 指令以 LCALL 和 LJMP 编码。这样就允许不加限制地使 用整个地址空间,用户程序最大可达 64K 字节。 ⑵PL/M 编译器页 图 1-7 工程设置对话框 CODE/NOCODE:CODE 控制表明开始列出生成标准汇编语言格式地目标代码,这些汇编 语言目标代码紧随源程序列表清单之后,NOCOD 控制是在出现 CODE 控制之前,不列出所 生成地目标代码清单。注意:NOPRINT 控制不能对 CODE 控制有抑制作用,而且 NOOBJECT 中也隐含了 NOCODE 功能。 INTVECTOR/NOINTVECTOR 在 INTVCTOR 控制下,编译程序可为模块中每个中断过程产生一个字节入口的中断向 量。对中断 n,中断向量入口的绝对地址为 8n+3。当然,可以用 ASM51 单独建立中断向 量。在选用 NOINTVECTOR 控制时,编译程序将不产生任何中断向量。 RAM(SMALL、MEDUIM、LARGE) RAM 指令用来决定程序内存的大小,它影响跳转指令的编码。 RAM(SMALL): CALL 和 JMP 指令作为 ACALL 和 AJMP 指令的编码,最大程序空间可达 2K 字节,整个用户程序必须分布在这 2K 字节空间内。8051 为提高编码密度,仅在 2K 块内 转移和调用,尽可能不使用 3 个字节的调用和转移指令。 ROM(MEDUIM):将正在进行编译的模块适合INBLOCK,而其他模块(包括来自PLM51.LIB
的那些模块)可以任意安放,这样就需使一些调用成为长调用(3个字节)。但是大多数 的转移和大部分调用,仍能保持短编码形式。 RoM( LARGE):将CALL和JP指令以 LCALL和LJMP编码。这样就允许不加限制地使 用整个地址空间,用户程序最大可达64K字节。 OPTIMIZE(n):括号内n的可取值为一个0-3的十进制数,在产生目标代码中,该 控制实现各种优化处理。每一优化级包含了比优化级别低的所有优化处理功能。 REGISTERBANK(寄存器组控制) 其中,寄存器组值为0、1、2或3。在代码生成中, REGISTERBANK控制将确定选用 其四个8051寄存器组中的一个。对一个含有 USING属性的控制,能够由一个过程所替代 PL/M51认为,一个过程中断总是与他所中断的过程使用不同的寄存器组,因而如果在 个独立模块中为每个中断编译代码,则应在 REGISTERBANK控制下编译所有非中断代码 所有的低级中断和高级中断分别处在各自寄存器组的设置下。因此,不用 USING属性也 能避开引起的麻烦 (3)连接器页 编译器非L编译器连接器 库模式 小模式 (SMALL RAM大小 紫凑模式 (COMPACT)其它选项 C大模式 LARGE 「缺省值 定位控制 ode xdata Idata Pdata Stack Precede 主接控制项 缺省值确认×取消 图1—8工程设置对话框 该页中其它各项已介绍,下面只讲述定位控制项: 起始地址/段名,定位BIT段 DATA:起始地址/段名,定位DATA段 IDATA:起始地址/段名,定位 IDATA段。 STACK:段名,定位 STACK段。 CODE:起始地址/段名,定位CODE段
10 的那些模块)可以任意安放,这样就需使一些调用成为长调用(3 个字节)。但是大多数 的转移和大部分调用,仍能保持短编码形式。 ROM(LARGE):将 CALL 和 JMP 指令以 LCALL 和 LJMP 编码。这样就允许不加限制地使 用整个地址空间,用户程序最大可达 64K 字节。 OPTIMIZE(n):括号内 n 的可取值为一个 0-3 的十进制数,在产生目标代码中,该 控制实现各种优化处理。每一优化级包含了比优化级别低的所有优化处理功能。 REGISTERBANK(寄存器组控制) 其中,寄存器组值为 0、1、2 或 3。在代码生成中,REGISTERBANK 控制将确定选用 其四个 8051 寄存器组中的一个。对一个含有 USING 属性的控制,能够由一个过程所替代, PL/M51 认为,一个过程中断总是与他所中断的过程使用不同的寄存器组,因而如果在一 个独立模块中为每个中断编译代码,则应在 REGISTERBANK 控制下编译所有非中断代码, 所有的低级中断和高级中断分别处在各自寄存器组的设置下。因此,不用 USING 属性也 能避开引起的麻烦。 ⑶连接器页 图 1-8 工程设置对话框 该页中其它各项已介绍,下面只讲述定位控制项: BIT:起始地址/段名,定位 BIT 段。 DATA:起始地址/段名,定位 DATA 段。 IDATA: 起始地址/段名,定位 IDATA 段。 STACK:段名,定位 STACK 段。 CODE: 起始地址/段名,定位 CODE 段