KEIL C51使用说明.docx
- 文档编号:4044930
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:27
- 大小:696.30KB
KEIL C51使用说明.docx
《KEIL C51使用说明.docx》由会员分享,可在线阅读,更多相关《KEIL C51使用说明.docx(27页珍藏版)》请在冰点文库上搜索。
KEILC51使用说明
20.1 工程项目的建立、源程序文件的建立及加载
KeilC51软件UVision打开后,程序窗口的左边有一个项目工作区管理窗口,该窗口有3个标签,分别是Files、Regs和Books,这3个标签页分别显示当前项目的文件结构、CPU的寄存器及部分特殊功能寄存器的值(调试时才出现)和所选CPU的附加说明文件,如果是第一次启动KeilC51,那么这3个标签页全是空的(图20-1)。
图20-1 KeilC51打开后界面
20.1.1 建立工程文件
在单片机开发项目中,有时有多个的源程序文件,并且还要为项目选择CPU以确定编译、汇编、连接的参数,指定调试的方式等。
为便于管理,KeilC51使用工程项目(Project)的方法,将这些参数设置和所需的所有文件都放在一个工程项目中,只能对工程项目而不能对单一的源程序进行编译(汇编)和连接等操作。
一、
先在硬盘上建立一个需保存工程文件的目录(例如在“我的文档”中建立一个test的文件夹),为便于管理及使用,目录名称可与工程名称一致。
二、
1、选择“工程>新工程”菜单(图20-2)。
弹出对话框,要求给将要建立的工程起一个名字,可以在编辑框中输入一个名字(例如test),扩展名不必输入(默认的扩展名为.uv2)。
点击“保存”按钮(图20-3)。
2、随后弹出一个“为目标target选择设备”(Select Device for Target “Target1”)对话框,这个对话框要求选择目标CPU(即你所用单片机开发板芯片的型号),KeilC51支持的CPU很多,我们选择Atmel公司的AT89C51(或AT89S51)芯片,用鼠标单击Atmel前的“+”号,选择“AT89C51(或AT89S51)”单片机后按确定(图20-4)。
随即系统弹出是否拷贝8051启动代码到工程项目并添加到当前项目组的提示(CopyStandard8051StartupCodetoProjectFolderandAddFiletoProject?
),我们选否。
三、
此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“SourceGroup1”。
图20-2 选择“工程>新工程”菜单界面
图20-3 建立新工程界面
图20-4 选择单片机型号界面
20.1.2 源程序文件的建立
使用菜单“文件>新建”或者点击工具栏的新建文件按钮(图20-5),即在右侧打开一个新的文本编辑窗口,在该窗口中可以输入单片机汇编语言源程序或单片机C语言教程源程序(图20-6)。
程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(汇编语言源程序)或.c格式(C语言源程序)保存在刚才所建立的一个文件夹中(test),这里假设源程序文件名为test.asm(图20-7)。
图20-5 新建源程序文件界面
图20-6 打开新的文本编辑窗口
图20-7 “另存为”对话框
源程序文件也可以使用任意的文本编辑器编写。
20.1.3 添加文件到当前项目组中
这时的工程项目还是一个空的工程,里面什么文件也没有,把刚才单片机学习编写好的源程序test.asm加载进工程。
单击工程管理器中“Target1”前的“+”号,出现“Source Group1”后再单击,加亮后右击。
在出现的下拉窗口中选择“AddFilestoGroup‘SourceGroup1’”(图20-8)。
注意,该对话框下面的“文件类型”默认为Csourcefile(*.c),也就是以C为扩展名的文件,如我们的文件是以asm为扩展名的,那么在列表框中找不到test.asm,要将文件类型改掉。
点击对话框中“文件类型”后的下拉列表,找到并选中“AsmSourceFile(*.a51,*.asm)”,这样在列表框中就可以找到test.asm文件了(图20-9)。
我们可以在增加文件窗口中选择刚才以asm格式(或c格式)编辑的文件,鼠标单击“ADD”按钮,这时源程序文件便加入到SourceGroup1这个组里了,随后关闭此单片机培训对话窗口。
点击“SourceGroup1”前的“+”号,可以看到test.asm文件已在其中(图20-10)。
双击后,即可打开该源程序。
图20-8 AddFilestoGroup‘SourceGroup1’界面
图20-9 AddFilestoGroup‘SourceGroup1’对话框
图20-10 test.asm文件
20.2 工程项目的详细设置
工程建立好以后,还要对工程进行进一步的设置,以满足要求。
首先点击左边窗口的Target1,然后使用菜单“项目>目标‘target1’选项”即出现对工程设置的对话框,共有8个页面,默认为对象页面(图20-11)。
绝大部分设置项通常可以采用默认值。
图20-11 对象页面
20.2.1 对象页面
时钟(MHz)后面的数值是晶振频率值,默认值是所选目标CPU的最高可用频率值,对于AT89C51而言是24MHz,而AT89S51是33MHz。
该数值与最终产生的目标代码无关,仅用于单片机学习软件模拟调试时显示程序执行时间。
正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你实际所用的晶振频率相同。
储存器模式用于设置RAM使用情况,有3个选择项,Small:
是所有变量都在单片机的内部RAM中。
Compact:
变量存储在外部RAM里,使用8位间接寻址。
Large:
变量存储在外部RAM里,使用16位间接寻址,可以使用全部外部的扩展RAM。
1.Small:
一般使用Small来存储变量,此时单片机开发板优先将变量存储在内部RAM里,如果内部RAM空间不够,才会存到外部RAM中。
2.Compact:
Compact的方式要通过程序来指定页的高位地址,编程较复杂,如果外部RAM很少,只有256字节,那么对该256字节的读取就比较快。
如果超过256字节,而且需要不断地进行切换,就较麻烦,Compact模式适用于比较少的外部RAM的情况。
3.Large:
Large模式是指变量会优先分配到外部RAM里。
需要注意的是,3种存储方式都支持内部256字节和外部64KB的RAM。
因为变量存储在内部RAM里,运算速度比存储在外部RAM要快得多,大部分的单片机开发应用都是选择Small模式。
代码ROM大小用于设置ROM空间的使用,也有3个选择项,Small、Compact及Large。
1.Small:
只用低于2K的程序空间,适用于AT89C2051这些芯片,2051只有2K的代码空间,所以跳转地址只有2KB,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL LJMP指令。
如果代码地址跳转超过2K,那么会出错。
2.Compact:
单个函数的代码量不能超过2K,整个程序可以使用64K程序空间。
3.Large:
可用全部64K空间,表示程序或子函数代码都可以大到64KB,使用codebank还可以更大。
通常都选用该方式。
选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small方式。
操作系统选项中,KeilC51提供了两种操作系统:
Rtxtiny和Rtxfull,通常我们不使用任何操作系统,用该项的默认值:
None(不使用任何单片机教材操作系统)。
Useon-chipROM(0x0-0xFFF)选择项,表示使用片上的ROM(选中该项并不会影响最终生成的目标代码量),该选项取决于单片机应用系统,如果单片机的EA接高电平,则选中这个选项,表示使用内部ROM,如果单片机的EA接低电平,表示使用外部ROM,则不选中该选项。
片外代码(CODE)储存器:
表示片外ROM的开始地址和大小,如果没有外接程序存储器,那么不需要填任何数据。
这里假设使用一个片外ROM,地址从0x7000开始,一般填16进制的数,Size(尺寸)为片外ROM的大小。
假设外接ROM的大小为0x2000字节,则最多可以外接3块片外ROM。
片外数据(XDATA)储存器:
用于确定系统扩展RAM的地址范围,可以填上外接Xdata外部数据存储器的起始地址和大小,这些选择项必须根据所用硬件来决定。
如果仅仅是89C51单片应用,未进行任何扩展,那么无需设置。
代码分段:
是使用CodeBanking技术。
KeilC51可以支持程序代码超过64KB的情况,最大可以有2MB的程序代码。
如果单片机培训代码超过64KB,那么就要使用CodeBanking技术,以支持更多的程序空间。
20.2.2 输出页面
输出页面中(图20-12),按钮“选择目标(OBJ)目录”是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。
图20-12 Output页面
“可执行文件名”:
设置生成的目标文件的名字,缺省情况下和项目的名字一样。
CreateExecutable:
如果要生成OMF以及HEX文件,一般选中“调试信息”和“浏览信息”。
选中“调试信息”将会产生调试信息,这些信息用于调试,如果需要对单片机论坛程序进行调试,应当选中该项。
“浏览信息”是产生各种信息,该信息可以用菜单“查看”进行浏览,一般取默认值。
“生成hex文件”用于生成可执行代码文件,默认情况下该项未被选中,如果要烧录芯片做硬件实验,就必须选中该项。
CreateLibrary:
选中该项时将生成lib库文件,一般的应用是不生成库文件的。
构造后操作栏中有以下几个设置。
完成时“嘀”一声提示:
编译完成之后发出“咚”的声音。
开始调试:
马上启动调试(软件仿真或硬件仿真),根据需要来设置,一般是不选中。
运行用户程序#1、运行用户程序#2:
这个选项可以设置编译完之后所要运行的其他应用程序(比如有些用户自己编写了51单片机开发板烧写芯片的程序,编译完便执行该程序,将Hex文件写入芯片),或者调用外部的仿真程序。
可根据自己的需要设置。
20.2.3 列表页面
列表页面用于调整生成的列表文件选项。
在汇编或编译完成后将产生(*.lst)的列表文件,在连接完成后也将产生(*.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是“CCompileListing”下的“汇编代码”项,选中该项可以在列表文件中生成C语言源程序所对应的单片机汇编语言代码(图20-13)。
图20-13 Listing页面
20.2.4 C51页面
C51页面用于对KeilC51软件的C51编译器的编译过程进行控制(图20-14),其中比较常用的是“代码优化选项”组,该组中级别是优化等级,C51在对源程序进行编译时,可以对代码多至9级优化,默认使用第8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别再试。
“侧重”是选择编译优先方式,第一项是代码大小优化(最终生成的代码量小),第二项是执行速度优先(最终生成的代码速度快),第三项缺省。
默认的是速度优先,可根据需要更改。
图20-14 C51页面
20.2.5 调试页面
调试页面中(图20-15)有两类仿真形式可选:
“使用模拟器”和“KeilMonitor-51Driver”,前一种是纯软件仿真,后一种是带有Monitor-51目标仿真器的仿真。
对于没有Monitor-51目标仿真器的用户,只有采用软件仿真。
默认方式下的仿真是软件仿真(使用模拟器)。
图20-15 Debug页面
启动时加载程序:
选择这项之后,KeilC51会自动装载程序代码。
一直运行到main():
调试单片机C语言教程程序时可以选择这一项,PC会自动运行到main程序处。
工程设置对话框中的其他各页面与C51编译选项、A51的汇编选项、BL51连接器的连接选项等用法有关,这里均取默认值。
设置完成后按确认返回主界面,工程文件就建立、设置完毕了。
20.3 编译、连接
在设置好工程后,即可进行编译、连接。
选择主菜单栏中的“项目”,在下拉菜单中选中“构造对象”(图20-16),对当前工程进行编译、连接,这时输出窗口出现源程序的编译结果。
如果选择“重新构造所有对象文件”将会对当前工程中的所有文件重新进行编译,然后再连接,这样最终产生的目标代码是最新的。
图20-16 编译、连接操作
以上操作也可以通过工具栏按钮直接进行。
编译过程中的信息将出现在单片机教程输出窗口中的构造页中,如果源程序中有语法错误,将提示错误ERROR(S)的类型和行号,双击该行,可以定位到出错的位置。
对源程序进行修改没有语法错误后,重新进行编译、连接,编译成功后,最终可得到hex格式的文件(如test.hex),该文件可被编程器读入并写到芯片中,同时还会产生一些其他相关的文件,可被用于KeilC51的仿真与调试。
20.4.1 常用调试命令
在对工程成功地进行编译(汇编)、连接以后,在主菜单中打开“调试”栏,点击“开始/停止调试模式”,即可进入软件模拟仿真调试状态,KeilC51内建了一个仿真CPU用来模拟执行程序,该仿真CPU功能非常强大,可以在没有硬件和仿真器的情况下进行单片机开发程序的调试,但是在时序上,软件模拟仿真是达不到硬件的时序的。
进入调试状态后,“调试”栏菜单项中原来不能用的命令现在已经可以使用了。
“调试”栏菜单上的大部分命令可以在调试界面上找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等单片机培训命令(图20-17)。
图20-17 软件模拟仿真调试状态
使用菜单“单步到之外”或相应命令或功能键F10可以用“单步跳过”形式执行命令,所谓“单步跳过”,是指将汇编语言中的子程序或高级语言中的函数作为一个语句一步执行完。
使用菜单“单步”或相应的命令按钮或使用快捷键F11可以单步执行程序(即一条一条语句执行),通过单步执行程序,可以找出一些问题的所在,但是仅依靠单步执行来查错效率较低。
20.4.2 断点设置
程序调试时,一些程序行必须满足一定的单片机i学习条件才能被执行到(如程序中某变量达到一定的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法:
断点设置。
断点设置的方法有多种,常用的是在某一程序行设置断点(图20-18),设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此时观察有关变量值,以确定问题所在。
在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单:
“调试>设置/取消断点”设置或移除断点,也可以用鼠标在该行双击实现同样的功能;另外“使能/禁止断点”用来开启或暂停光标所在行的断点功能;其它还有“禁止所有断点”、“取消所有断点”等设置。
这些功能也可以用工具条上的快捷按钮进行单片机汇编语言设置。
图20-18 断点设置
20.4.3 在线汇编
在进入KeilC51的调试环境以后,若发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行单片机C语言教程编译、连接后再次进入调试。
如果调试时只是需要对某些程序行进行临时的试验修改(如修改参数以得到所需的延时时间),那么这样的重复过程显得太麻烦,为此KeilC51软件提供了在线汇编的能力。
将光标定位于需要修改的程序行上,用菜单“调试>在线汇编”即可出现如图20-19所示的对话框,在“输入新指令”后面的编缉框内直接输入需更改的程序语句,输入完后键入回车将自动指向下一条语句,可以继续修改。
如果不再需要修改,可以点击右上角的关闭按钮关闭单片机论坛窗口。
图20-19 在线汇编对话框
20.4.4 程序调试时的常用窗口
KeilC51软件在调试程序时提供了多个窗口,主要包括输出窗口(OutputWindows)、查看和呼叫堆栈窗口(Watch&CallStatckWindows)、存储器窗口(MemoryWindow)、反汇编窗口(DissamblyWindow)和串行窗口(SerialWindow)等。
进入调试模式后,可以通过菜单“查看”(View)下的相应命令打开或关闭这些窗口。
图20-20是输出窗口、查看和呼叫堆栈观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。
进入51单片机开发板调试程序后,输出窗口自动切换到Command页。
图20-20 输出窗口、查看和呼叫堆栈窗口和存储器窗口
存储器窗口
存储器窗口中可以显示系统各种内存中的值,通过在“地址”(Address)后的编缉框内输入“字母:
数字”即可显示相应内存值,其中字母可以是C、D、I、X,分别代表代码存储空间、直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部RAM空间,数字代表想要查看的地址。
例如输入“D:
0x20”即可观察到地址20H开始的片内RAM单元值;键入“C:
0x100”即可显示从100H开始的ROM单元中的值,即查看程序的二进制代码。
该窗口的显示值可以以各种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键,在弹出的快捷菜单中选择PIC单片机培训,该菜单用分隔条分成三部分,其中第一部分与第二部分的三个选项为同一级别,选中第一部分的任一选项,内容将以整数形式显示,而选中第二部分的ASCII项则将以字符型式显示,选中Float项将以相邻四字节组成的浮点数形式显示,选中Double项则将相邻8字节组成双精度形式显示。
第一部分又有多个选择项,其中Decimal项是一个开关,如果选中该项,则窗口中的值将以十进制的形式显示,否则按默认的十六进制方式显示。
Unsigned和Signed后分别有三个选项:
Char、Int、Long分别代表以单字节方式显示、将相邻双字节组成整型数方式显示、将相邻四字节组成长整型方式显示,而Unsigned和Signed则分别代表avr单片机开发板无符号形式和有符号形式,究竟从哪一个单元开始的相邻单元则与你的设置有关。
以整型为例,如果你输入的是“I:
0”,那么00H和01H单元的内容将会组成一个整型数,而如果你输入的是“I:
1”,01H和02H单元的内容会组成一个整型数,依此类推。
第三部分的ModifyMemoryatX:
xx用于更改鼠标处的内存单元值,选中该项即出现如图20-21所示的对话框,可以在对话框内输入要修改的内容。
图20-21 更改内存单元值
工程窗口寄存器页
图20-22是工程窗口寄存器页的内容,寄存器页包括了当前的工作寄存器组和系统寄存器组。
系统寄存器组有一些是实际存在的寄存器,如A、B、DPTR、SP、PSW等,有一些是实际中并不存在或虽然存在却不能对其操作的,如PC、States等。
每当程序中执行到对其寄存器的操作时,该寄存器会以反色(蓝底白字)显示,用鼠标单击然后按下F2键,即可修改该值。
图20-22 工程窗口寄存器页
查看和呼叫堆栈观察窗口
这也是很重要的一个窗口,工程窗口中不仅可以观察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要观察其他寄存器的值或者在高级语言编程时需要直接观察变量,还要借助于这个窗口了。
一般情况下,我们仅在单步执行时才对变量值的变化感兴趣,全速运行时,变量的值是不变的,只有在程序停下来之后,才会将这些值的最新变化反映出来。
但是,在一些特殊场合我们也可能需要在全速运行时观察变量的变化,此时可以点击查看>定期窗口更新,确认该项处于被选中状态,即可在全速运行时动态地观察有关值的变化。
但是,选中该项,将会使程序模拟执行的速度变慢。
KeilC51提供了串行窗口,我们可以直接在串行窗口中键入字符,该字符虽不会被显示出来,但却能传递到仿真CPU中,如果仿真CPU通过串行口发送字符,那么这些字符会在串行窗口显示出来,用该窗口可以在没有硬件的情况下用键盘模拟串口通信。
由于该项涉及到高级语言编程,这里就不具体介绍了。
20.5 外围接口工具
为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端门等常用外设的使用情况,KeilC51提供了一些外围接口对话框,通过“外围设备”菜单选择。
“外围设备”的下拉菜单内容与你建立项目时所选的CPU有关。
如果是选择的89C51这一类单片机,那么将会有Interrupt(中断)、I/OPorts(并行I/O口)、Serial(串行口)、Timer(定时/计数器)这四个外围设备菜单(图20-23)。
打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这些对话框中直观地观察和更改各外围设备的运行情况。
图20-23 外围设备菜单
20.5.1 P1□作为输入端□
程序每执行一个循环之前,修改一次P1端口的值(图20-24),观察变量的值是直接观看屏幕右下角的变量表;另外的方法是将鼠标移动到源程序的变量处,等待大约1秒钟左右,屏幕上即可弹出该变量的相关信息。
图20-24 P1□作为输入端□
20.5.2 P1□作为输出端□
执行循环时观察P1口的输出。
由于P1口只用于输出,故无须修改端口值(图20-25)。
图20-25 P1□作为输出端□
20.5.3 外部中断INT0
外部中断INT0对应于P3.2口线,因此,用鼠标单击“外设>Port3”窗口从右向左数第三位(P3.2口线对应的位),每单击一下,即产生一次中断,原因是外部中断是下降沿或低电平有效(图20-26)。
图20-26 外部中断INT0
另外,也可以点击“外设>Interrupt”,在出现图20-27所示中断对话界面后,进行设置。
图20-27 中断对话界面
20.5.4 定时器/计数器0
MCS-51系列单片机有两至三个定时器/计数器,均可以作为定时器或计数器使用。
点击“外设>Timer0”即出现图20-28所示定时/计数器0的外围接口界面,可以直接选择Mode组中的下拉列表以确定定时/计数工作方式(0~3四种工作方式,设定定时初值等),点击选中TR0,status后的stop(停止)就变成了run(运行)。
如果全速运行程序,此时TH0、TL0后的值也快速地开始变化(要求“定期窗口更新”处于选中状态),直观地演示了定时/计数器的工作情况。
图20-28 定时/计数器0的外围接口界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KEIL C51使用说明 C51 使用说明
![提示](https://static.bingdoc.com/images/bang_tan.gif)