Keil-C51程序调试过程
keil调试程序方法
keil调试程序方法
一、Keil调试程序方法
1、打开Keil,新建工程,在工程目录下,右键选择“添加新建文件”,然后选择“源文件”。
这时会弹出“新建文件对话框”,在文件类型中选择“C文件”。
2、编写C代码,调试程序,为了方便调试,先在程序里加上调试的操作,如“printf”,“getchar”等。
3、如果添加多个C文件时,也可以选择“添加新建文件”,然后选择“工程文件”,在弹出的对话框里输入文件名,然后点击“确定”。
4、编译源代码,编译完成后,查看是否有编译错误,如果没有编译错误,就可以继续下一步。
5、点击编译器的“调试”按钮,它会自动加载要调试的程序,然后就可以进行调试了。
6、在Keil的调试界面上,可以使用鼠标画“断点”,程序运行时,就能自动地停在“断点”处。
7、当一段程序运行完成,可以按F11快捷键,让程序自动运行,或者按“运行”按钮,让程序在断点处暂停,然后再单步执行一行一行调试。
8、Keil调试界面可以编辑程序,也可以查看程序的运行结果,从而可以及时发现程序中的bug。
9、在Keil的调试界面上,可以编辑程序,也可以给变量赋值,从而方便快速地调试程序。
10、当完成调试后,可以按“重新编译”按钮,重新编译整个程序,再查看编译结果,最后保存这个工程,保存文件名为*.uv2文件。
KEILC51和PROTEUS的使用
KEILC51和PROTEUS的使用KEILC51是一款针对51系列单片机的集成开发环境,可以方便地进行编译、调试和仿真。
PROTEUS是一款集成电路设计软件,可以用于电路图的设计、仿真和调试。
本文将介绍KEILC51和PROTEUS的使用方法。
一、KEILC51的安装和使用2. 安装完成后,打开KEIL C51,创建一个新项目。
选择新建一个“Project”。
在对话框中输入项目名称,并选择项目的存放路径。
3.在项目内部,可以添加源文件、库文件和头文件。
可以通过右键单击项目名称,选择“添加”,然后选择相应的文件类型进行添加。
4. 在源文件中编写C语言程序。
可以使用标准的C语法进行编写,也可以使用Keil C51提供的51系列特定的语法进行编写。
5. 进行编译和生成可执行程序。
在菜单栏中选择“Project”->“Build Target”,或者使用快捷键“Ctrl+F7”进行编译。
编译完成后,会在项目目录下生成相应的可执行程序。
6. 进行调试和仿真。
在菜单栏中选择“Debug”->“Start/Stop Debug Session”,或者使用快捷键“F5”进行调试。
可以设置断点、单步执行、查看变量值等进行调试。
二、PROTEUS的安装和使用2. 安装完成后,打开PROTEUS,创建一个新电路。
选择“Schematic Capture”->“Design”创建一个新的电路图。
在电路图中添加所需的元件,例如电阻、电容、晶体管等。
3.连接元件之间的引脚,可以使用连线工具进行连线。
在连线时,可以使用自动连接功能快速连接元件之间的引脚。
4.设置仿真属性。
在电路图中选择“P”工具,然后在对话框中选择相应的仿真模型和仿真参数,例如选择51系列单片机的仿真模型。
5. 进行仿真和调试。
在菜单栏中选择“Debug”->“Start Debugging”,或者使用快捷键“F5”进行仿真。
可以查看元件的工作状态,观察电路的波形等进行调试。
如何在C51中调试过程
如何在KEIL中调试C8051?
调试C8051系列芯片,虽然Silicon公司有自己的调试软件(使用keil的IDE),但是用惯了KEIL的调试窗口,用Silicon的总不习惯。
而公司又要用到C8051芯片,于是网上搜索,终于找到如何在keil中调试C8051的方法。
首先,确保电脑已安装KEIL软件,任一版本皆可。
然后,下载一个相关的驱动,如下图:。
(可网上搜索或邮件向
我索取。
)
安装好驱动后,打开keil软件,只需几处设置即可使用,设置过程如下:
①选择flash—configue flash tools。
②在弹出界面设置Debug项:
③点击上图最右setting,弹出如下界面:
如果电脑已经接入C8051调试适配器,则中间选项(即上图中间灰色部分)可选择,插
入调试适配器后一定记得将此处选中,否则无法调试。
④设置utilities项,按下图设置即可。
⑤点击settings,弹出如下界面,按下图设置即可(一般默认如此)。
⑥设置完毕。
好了,现在即可在KEIL中自由调试C8051。
my mail:gydeyou005@
来自: /bailsfi/blog/item/28b7e8cdc5889b420fb34505.html。
实验一KeilC51集成开发环境的使用练习、仿真与调试
实验一Keil C51 集成开发环境的使用练习、仿真与调试、实验目的1、熟悉Keil C51 集成开发环境的使用方法2、熟悉Keil C51集成开发环境调试功能的使用和DP-51PR0C单片机综合仿真实验仪的使用。
、实验设备及器件IBM PC 机一台DP-51PR0C单片机综合仿真实验仪一台、实验内容1、进行Keil C51 集成开发环境的安装和使用练习。
然后按照以下内容建立文件并编译产生HEX 文件。
0RG 0000HLJMP Main0RG 00F0HMain:M0V R7, #0Loop:M0V R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, LoopCPL P1.0 ; P 1 .0 取反CPL P1.1 ; P 1 .1 取反CPL P1.2 ; P 1 .2 取反CPL P1.3 ; P 1 .3 取反CPL P1.4 ; P 1 .4 取反CPL P1.5 ; P 1 .5 取反CPL P1.6 ; P 1 .6 取反CPL P1.7 ; P 1 .7 取反SJMP MainEND2、进行Keil C51 集成开发环境的仿真调试练习。
然后按照以下内容建立文件并编译仿真调试。
0RG 8000HLJMP Main0RG 80F0HMain:M0V R7, #0Loop:MOV R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, LoopCPL P1.0 ; P 1 .0取反CPL P1.1 ; P 1 .1取反CPL P1.2 ; P 1 .2取反CPL P1.3 ; P 1 .3取反CPL P1.4 ; P 1 .4取反CPL P1.5P 1 .5取反JCPL P1.6 ; P 1 .6取反CPL P1.7 ; P 1 .7取反SJMP Mai nEND四、实验要求1、熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。
Keil C51的使用
编辑课件
16
5、移除文件
要把某个文件从工程中移除,可在此文件上单击右键, 然后单击“Remove File ’ ’ ”。
移除不是删除,文件依然存在。
编辑课件
17
我来演示
1、打开一个已有的工程项目(不是默认项目)。 2、打开一个已有的工程项目,修改单片机型号。
3、打开一个已有的工程项目,删除原有的文件,装 入一个已有的C语言文件。
此时光标在编辑窗口里闪烁,就可以输入用户的应 用程序了。
或者把已有的程序从其他地方直接复制到程序编辑 窗口内。
文件的建立也可以用Windows环境的附件中的记 事本或写字板等纯文本编辑软件完成。
参见教材《单片机的C5编1辑应课件用程序设计》第 309 页 27
新建文件时,建议首先保存空白文件。
编辑课件
11
如果在选择了目标器件后,想更改器件,可选择 Project菜单中的Select Device for Target‘Tartet 1’。
由于不同厂家的许多型号性能相近,因此,如果找不 到用户要求的芯片信号,可以选择其他公司的相近型 号。
参见教材《单片机的C5编1辑应课件用程序设计》第 308 页 12
uVision2支持的所有CPU器件的型号根据生产厂家 形成器件组。
用户可根据需要选择相应的器件组并选择相应的器 件型号。
编辑课件
10
通过滚动条,选择生产厂商、目标CPU。
如:Atmel器件组内的AT89C51单片机。首先找到 Atmel公司,然后单击左边的“+”号展开该组。选择 AT89C51之后,单击“确定”。
程序输入完毕后别忘了再次保存。
参见教材《单片机的C5编1辑应课件用程序设计》第 309 页 28
Keil C51详细设置
Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框内对应工具栏。
二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX Ri,A 或MOVX A,Ri 指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,DPTR或MOVX DPTR,A 来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先<或默认>存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small 的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main<>里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP 指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.3. OPERATINGNONE:不适用操作系统RTX51-TINY:使用TINY操作系统RTX-FULL:使用FULL操作系统Keil C51 提供了Tiny多任务操作系统,使用定时器0来做任务切换,效率很低,无实用价值。
基于 Keil C51 集成开发环境的仿真与调试
基于Keil C51 集成开发环境的仿真与调试一.实验目的熟悉Keil C51 集成开发环境调试功能的使用和DP-51PRO 单片机综合仿真实验仪的使用。
二.实验设备及器件IBM PC 机一台DP-51PRO 单片机综合仿真实验仪一台三.实验内容调试仿真功能是指DP-51PRO 单片机综合仿真实验仪运行单片机P87C52X2 内部的MON51 监控程序,把用户的应用程序装载到外部SRAM 中,从而实现运用Keil C51 集成开发环境所提供的所有调试命令来调试用户的应用程序或仿真用户的应用系统,然后按照以下内容建立文件并编译仿真调试。
ORG 8000HLJMP MainORG 80F0HMain:MOV R7, #0Loop:MOV R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, Loop ;延时CPL P1.0 ; P 1 .0 取反CPL P1.1 ; P 1 .1 取反CPL P1.2 ; P 1 .2 取反CPL P1.3 ; P 1 .3 取反CPL P1.4 ; P 1 .4 取反CPL P1.5 ; P 1 .5 取反CPL P1.6 ; P 1 .6 取反CPL P1.7 ; P 1 .7 取反SJMP Main;END四.实验要求熟练掌握结合DP-51PRO 单片机综合仿真实验仪和Keil C51 集成开发环境进行仿真调试。
五.实验步骤1.用40 针排线把DP-51PRO 实验仪上的A1 区J76 接口和A2 区J79 接口相连,然后使用导线把A2 区的J61 接口与D1 区的J52 接口相连。
2.对DP-51PRO 实验仪上电,首先,在A1 区,把JP13 中的SRAM_E 和FLASH_E 两个跳线座的短路器拔走(即不短接),把MOD_SW1 开关拨到LOAD 模式,即在下载状态下,用户应将本实验仪所提供的专用仿真调试芯片P87C52X2插入到DP-51PRO单片机综合仿真实验仪的U13锁紧座上;然后ISP 跳线JP14 跳开(即不短接),短接JP15 的1、2 两个跳线(TXD、RXD),然后按下复位按键“RESET”。
Keil-C51-基本使用方法 (1) 。。。。2
、Keil C51工程建立与仿真1、建立一个工程项目,选择芯片并确定选项双击Keil uVision2快捷图标后进入Keil C51开发环境,单击“工程”菜单,在弹出的下拉菜单选中“新工程”选项,屏幕显示为图1。
附录:一图1 建立一个工程项目在文件名中输入一个项目名“my-test”,选择保存路径(可在“我的文档”中先建立一个同名的文件夹),单击保存。
在随后弹出的“为目标target选择设备”(Select Device for Target “Target1”)对话框中用鼠标单击Atmel前的“+”号,选择“89C51”单片机后按确定,如图2所示。
图 2 选择单片机后按确定选择主菜单栏中的“工程”,选中下拉菜单中“Options for Target ‘Target1’”,出现图3所示的界面。
单击“target”页面,在晶体Xtal(MHz)栏中选择试验板的晶振频率,默认为24MHz,我们讲座试验板的晶振频率为11.0592MHz,因此要将24.0改为11.0592。
然后单击输出“Output”页面,在“建立hex格式文件”前打勾选中,如图3-4。
其它采用默认设置,然后点确定。
图3 选择Target页面图4 选择Output页面2、建立源程序文件图 5 建立源程序文件程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(如my-test.asm)保存在刚才所建立的一个文件夹中(my-test)。
3、添加文件到当前项目组中单击工程管理器中“Target 1”前的“+”号,出现“Source Group1”后再单击,加亮后右击。
在出现的下拉窗口中选择“Add Files to Group‘Source Group1’”,如图6所示。
在增加文件窗口中选择刚才以asm格式编辑的文件my-test.asm,鼠标单击“ADD”按钮,这时my-test.asm文件便加入到Source Group1这个组里了,随后关闭此对话窗口。
Keil C51 基本使用方法
附录:一、Keil C51工程建立与仿真1、建立一个工程项目,选择芯片并确定选项双击Keil uVision2快捷图标后进入Keil C51开发环境,单击“工程”菜单,在弹出的下拉菜单选中“新工程”选项,屏幕显示为图1。
图1 建立一个工程项目在文件名中输入一个项目名“my-test”,选择保存路径(可在“我的文档”中先建立一个同名的文件夹),单击保存。
在随后弹出的“为目标target选择设备”(Select Device for Target “Target1”)对话框中用鼠标单击Atmel前的“+”号,选择“89C51”单片机后按确定,如图2所示。
图2 选择单片机后按确定选择主菜单栏中的“工程”,选中下拉菜单中“Options for Target ‘Target1’”,出现图3所示的界面。
单击“target”页面,在晶体Xtal(MHz)栏中选择试验板的晶振频率,默认为24MHz,我们讲座试验板的晶振频率为11.0592MHz,因此要将24.0改为11.0592。
然后单击输出“Output”页面,在“建立hex格式文件”前打勾选中,如图3-4。
其它采用默认设置,然后点确定。
图3 选择Target页面图4 选择Output页面2、建立源程序文件单击“文件”菜单,在下拉菜单中选择“新建”,随后在编辑窗口中输入以下的源程序(如图5)。
ORG 0000HLJMP MAINORG 030HMAIN: MOV P0,#00HMOV P1 ,#00HMOV P2 ,#00HMOV P3 ,#00HACALL DELMOV P0 ,#0FFHMOV P1 ,#0FFHMOV P2 ,#0FFHMOV P3 ,#0FFHACALL DELAJMP MAINORG 0200HDEL: MOV R5,#04HF3: MOV R6,#0FFHF2: MOV R7,#0FFHF1: DJNZ R7,F1DJNZ R6,F2DJNZ R5,F3RETEND图5 建立源程序文件程序输入完成后,选择“文件”,在下拉菜单中选中“另存为”,将该文件以扩展名为.asm格式(如my-test.asm)保存在刚才所建立的一个文件夹中(my-test)。
(完整word版)KeilC51程序调试过程
如何使用Keil C软件调试单片机程序调试一般都是在发生错误与意外的情况下使用的。
如果程序能正常执行,调试很多时候都是用不上的.所以,最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。
单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试.使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。
但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。
软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。
硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到仿真器,然后与单片机一样执行。
仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出)。
仿真器会将单片机内部内存与时序等情况返回给计算机,这样就可以在计算机里看到单片机程序真实的执行情况。
不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。
仿真器可以接入实际的电路中。
图1:仿真器下面将具体介绍如何使用Keil uVision 软件来调试单片机程序。
首先:打开一个已经编译通过的单片机项目。
选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试。
接下来看到的窗口就是调试窗口了:下面具体说说相关子窗口的功能:1、左侧的ProjectWorkspaceRegs是片内内存的相关情况值;Sys是系统一些累加器、计数器等。
Regs很简单就不多说。
具体介绍一下Sys:a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。
b 寄存器B,主要用于乘法和除法操作。
spsp_maxdptr 数据指针DPTR。
PC $states 执行指令的数量。
C51程序在Keil C51下的调试步骤
C51程序在Keil C51下的调试步骤现在广泛使用的C51集成开发环境是Keil软件。
要使用Keil软件,首先要正确安装Keil软件,该软件的Eval版本可以直接去http://www. 下载,其步骤与一般Windows 程序安装类似,这里就不再赘述了。
Keil软件的详细说明见相关资料,这里仅作简要说明,以便于读者在后面的章节中实际动手调试、仿真程序。
1.建立工作项目文件图1启动Keil μVison2启动Keil μVison2,如果打开后就有打开的文件,单击“Project->Close Project”菜单将其关闭。
单击“File->New... ",打开一个新的文件输入窗口,在这个窗口里输入上述源程序。
输入完毕之后,选择“File-->Save",给这个文件取名保存,取名字的时候必须要加上扩展名,一般C语言程序均以“.c”为扩展名(一定要加扩展名,否则后面添加文件就找不到该文件,这是初学者很容易忘记的),这里将其命名为mytest.c。
图2 建立工程文件单击“Project->New Project...",出现对话框,要求给将要建立的工程起一个名字,这里起名为test,不需要输入扩展名。
单击“保存”按钮,出现第二个对话框,如图3所示:图3 CPU选择窗口这个对话框要求选择工程中所用的单片机型号,这里选择Atmel公司的89S52芯片。
单击ATMEL前面的“+”号,展开该层,单击其中的89S52,然后再单击“确定”按钮,会出现一个对话框,询问是否要将标准的8052启动代码加入工程,单击“是”按钮。
此时,在工程窗口的文件页中出现了“Target 1”,前面有“+”号,单击“+”号展开,可以看到下一层的“Source Group 1 ",需要手动把刚才编写好的源程序加入,方法如下:单击“Source Group 1 ",使其反白显示,然后单击鼠标右键,出现一个下拉菜单,如图4所示。
keil51
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。
下面介绍Keil C51软件的使用方法进入Keil C51 后,屏幕如下图所示。
几秒钟后出现编辑界进入Keil C51后的编辑界面简单程序的调试学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1)建立一个新工程单击Project菜单,在弹出的下拉菜单中选中New Project选项2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存.3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.4)完成上一步骤后,屏幕如下图所示到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。
5)在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮。
6)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,弹出如下菜单然后单击“Add File to Group …Source Group 1‟” 屏幕如下图所示选中Test.c,然后单击“Add ”屏幕好下图所示注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗?子项的多少与所增加的源程序的多少相同7)现在,请输入如下的C语言源程序:#include <reg52.h> //包含文件#include <stdio.h>void main(void) //主函数{SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1; //此行及以上3行为PRINTF函数所必须printf(“Hello I am KEIL. \n”); //打印程序执行的信息printf(“I will be your friend.\n”);while(1);}在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
Keil C51程序调试过程
Keil C51 程序调试过程
用MCS-51 单片机软件Keil C51 编写程序时,经常需要调试,如果不是经常用这个软件的话,很容易忘记这些调试步骤,现在举一个例子验证延迟函数delay()使其延迟的时间为500ms 供以后复习查考。
源程序写完后,就可以调试了,按照图1 所示,先进行第一步和第二步操作,使界面切换到图2 的状态,可以看到在文本编辑窗口中,有一个黄色箭头指向13 行的位置,说明程序从
这个位置开始执行。
左上角有一些跟调试相关的按钮,如全速执行、单步进入~~~对于我这个例子,目的是验证delay()函数的延迟时间,使其大约为500ms。
按照下列方法可以达到我的目的:
图1 编译界面
图2 调试界面
点击单步跳出按钮(或功能键F10),黄色箭头从第13 行往下移一行(14),再单击单步跳出,则箭头移到15 行那边,表示程序从第13 行执行到第15 行,(注:这种方式是一步一步执行程序,如果要同时执行几行,如从第13 行一
下子到15 行,可以这样来做,用鼠标在第15 行的位置处点击两下会出现一个图2 所示的红色图标,此时点击全速执行按钮,则黄色的箭头则会从第13 行
快速移到15 行,这两行同时执行)此时左边寄存器窗口中的sec 有一个数值,表示程序执行的时间(即delay()延迟时间),可能不是为500ms。
此时,改变delay()函数中x,y 的数值,然后点击图1 的第二步所对应的按钮切换到图1 所示的编译界面上来,点击重新构造所有对象文件编译一下程序,然后再切换到图2 的界面上来进行调试。
重复上面的步骤,直到左边寄存器窗口中的。
Keil C51编程调试教程
Keil C51集成开发环境编程与调试教程山东师大传媒学院刘新阳编一、Keil中进行C语言编程的基本步骤同VC之类的通用C语言集成开发环境(IDE)一样,Keil也采用“工程”(Project)的方式管理源代码及相关文件,这种管理方式为由多个源代码文件组成的大型程序开发提供了方便。
不管是最简单的C51程序,还是复杂的多文件程序都需要以下步骤:1)先建立新的工程文件;2)在工程中新建源代码文件,或是将已经存在的源代码文件加入工程;3)编译;4)调试,修正错误再编译;5)将生成的二进制文件*.hex烧入单片机。
本教程重点介绍上述前4个步骤。
二、Keil中新建工程的步骤1. 单击菜单“Project——New uVision Project……”出现新建工程对话框:在此对话框中选择存放工程各类文件的路径和文件夹,然后为工程的主文件取个名字,以后单击该主文件即可打开这个工程项目。
2. 选择单片机型号上个窗口关闭后,马上会呈现下面这个窗口,在这里我们要选择所使用的单片机型号。
具体到这里,我们选择Atmel文件夹下的AT89C51。
(也可以选择下面的AT89C52、AT89S51或AT89S52)注意:单击OK后会出现下面这个提示信息:这里一定要选“否”,即:不需要自动添加起始代码。
完成后,即可看到Keil主界面:此时可以看到屏幕左侧的“Project”窗口(工程文件管理器)中,Target1下面的Source Group1(源代码文件组1)为空,即现在新建的工程中还不包含任何源代码文件。
所以,接下来要做的就是新建源代码文件。
3. 新建源代码文件单击菜单“File——New……”之后,即可在编辑区看到新建了一个名为text1的文本文件。
单击工具栏上的“保存”(图标为磁盘)按钮,可以在保存文件对话框中选择这个文本文件的保存位置(一般和工程文件保存在同一级文件夹)和文件的主名及扩展名。
如果只有一个源代码文件,一般主名命名为工程名,若是C语言源代码,扩展名设置为.c即可。
51单片机调试过程
51单片机调试过程单片机作为一种常见的嵌入式系统芯片,在电子设备中发挥着重要的作用。
调试是单片机开发的关键一步,它涉及到硬件和软件的配合,确保单片机能够正确运行。
本文将详细介绍51单片机的调试过程,包括硬件连接、软件编写和调试方法等内容。
一、硬件连接在进行51单片机的调试之前,首先需要正确连接相应的硬件。
一般来说,需要以下几个关键的硬件元件:1. 单片机主板:单片机主板是整个系统的核心,上面集成了51单片机芯片以及其他必要的电路元件。
2. 电源模块:提供单片机工作所需的电源稳定和滤波功能。
3. 晶振模块:通过晶振来提供单片机的时钟信号,保证准确的计时工作。
4. 外部存储器:如闪存或EEPROM,用于存储程序代码和数据。
5. 外设模块:如按键、LED灯、数码管等,用于与单片机进行交互。
确保以上硬件元件正确连接到单片机主板,并按照电路图进行正确的焊接和连接。
二、软件编写1. 编写程序代码:根据具体的需求,编写单片机程序的代码。
可以使用汇编语言或C语言进行编写。
在编写代码的过程中,需要考虑到单片机的特点和指令集,确保代码的可靠性和高效运行。
以下是一个简单的LED灯闪烁程序的示例:```c#include<reg52.h>sbit LED = P1^0; // 定义P1.0为LED引脚void delay(unsigned int t) // 延时函数{unsigned int i, j;for(i = t; i > 0; i--)for(j = 110; j > 0; j--);}int main(){while(1){LED = 0; // 点亮LEDdelay(1000); // 延时1秒LED = 1; // 关闭LEDdelay(1000); // 延时1秒}return 0;}```2. 编译和下载:将编写好的程序代码通过相应的编译工具进行编译,生成可执行的二进制文件。
实验一 Keil软件的使用及简单程序的调试方法
实验一 Keil软件的使用及简单程序的调试方法一、实验目的掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。
二、实验器材计算机1台三、实验内容1.Keil的使用方法。
2.建立一个单片机汇编语言程序的调试过程及方法四、实验步骤1.Keil的使用方法。
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
启动Keil 后的界面如下:几秒钟后即进入Keil的编辑界面。
用户便可建立项目及应用程序。
2.简单程序的调试方法Keil是通过项目工程来管理汇编程序的。
因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。
(1)建立一工程单击Project菜单,在弹出的下拉菜单中选中New Project选项。
并在弹出的对话框中确定保存的位置及工程名称。
又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。
选择Atmel公司的AT89C51单片机。
如下图所示单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。
(2)建一文件单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。
单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。
如下图所示。
(3)将文件添加到工程中单击“Target 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。
2014 Keil_C51_软件的使用
(1)新建工程 单击“Project”菜单,在弹出的下拉菜单中选中“New Project”选项,如图11-3所 示,输入工程文件的名字(如ads),选择要保存的路径(如保存到C51目录里),然 后单击“保存”按钮,如图4所示。
图3 新建工程菜单的选择
图4 工程文件的存盘
(2)选择单片机的型号 在第(1)步后会弹出一个对话框,要求选择单片机的型号,如图 11-5所示。Keil C51几乎支持所有的51内核的单片机,如选择Atmel 的“AT89C1051”,右边栏是对这个单片机的基本的说明,然后单击 “确定”按钮。
(2)“Memory Model”有3个选项,如图13所示。
图13 Memory
Model选项
Small:变量存储在内部RAM中,默认选Small。 Compact:变量存储在外部RAM里,使用8位页间接寻址。 Large:变量存储在外部RAM里,使用16位间接寻址。 三种存储方式都支持内部256B和外部64KB的RAM,区别是变量默认的存储位置。
图1
启动Keil C51时的屏幕
图2 Keil C51的应用程序界面
Keil C51是美国Keil Software公司出品的51系列兼容 单片机C语言软件开发系统,与汇编相比,C语言在 功能上、结构性、可读性、可维护性上有明显的优势, 因而易学易用。用过汇编语言后再使用C来开发,体 会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开 发调试工具,全Windows界面。另外重要的一点, 只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的 汇编代码很紧凑,容易理解。在开发大型软件时更能 体现高级语言的优势。
1.2
keil的调试步骤与方法
keil的调试步骤与方法Keil调试步骤与方法Keil是一款常用的嵌入式开发环境,用于编写和调试嵌入式系统的程序。
在进行嵌入式开发过程中,调试是一个非常重要的环节,它可以帮助开发人员找出程序中存在的问题并进行修复。
本文将介绍Keil的调试步骤与方法,帮助读者更好地进行嵌入式开发与调试。
一、准备工作在使用Keil进行调试之前,我们需要先进行一些准备工作。
首先,我们需要安装Keil软件,并配置好开发板的硬件环境。
其次,我们需要将待调试的程序下载到开发板中,并连接上调试器。
最后,我们需要在Keil中打开待调试的项目文件,以便进行后续的调试操作。
二、设置断点在进行程序调试时,我们常常需要在程序中设置断点,以便在指定位置停下来观察程序的执行情况。
在Keil中,我们可以通过单击代码行号的方式来设置断点。
当程序执行到设置的断点位置时,会自动停下来,以便我们观察相关的变量值和程序执行流程。
三、单步执行单步执行是调试过程中常用的操作之一,它可以使程序以单步的方式执行,以便我们逐行观察程序的执行情况。
在Keil中,我们可以通过点击工具栏上的“单步执行”按钮来进行单步执行操作。
在单步执行过程中,我们可以观察变量的值的变化,以及程序的执行流程,帮助我们找出程序中的问题。
四、观察变量值在调试过程中,我们经常需要观察程序中的变量值,以便判断程序的执行是否符合预期。
在Keil中,我们可以通过“观察窗口”来观察变量的值。
在观察窗口中,我们可以添加需要观察的变量,并在程序执行过程中实时查看其数值的变化。
五、查看寄存器值在嵌入式系统中,寄存器是非常重要的硬件资源,它们直接影响着程序的执行。
在Keil中,我们可以通过“寄存器窗口”来查看寄存器的值。
在寄存器窗口中,我们可以查看各个寄存器的当前值,以便判断程序的执行是否符合预期。
六、调试输出除了观察变量和寄存器的值外,我们还可以通过调试输出来观察程序的执行情况。
在Keil中,我们可以使用printf函数来进行调试输出。
使用keilc51软件的开发流程
使用Keil C51软件的开发流程1. 准备工作在使用Keil C51软件进行开发之前,需要进行以下准备工作: - 下载并安装Keil C51软件 - 确保计算机上安装了相应的驱动程序 - 准备所需的硬件设备和器件2. 创建新项目•打开Keil C51软件,选择“File”菜单,点击“New Project”选项•在弹出的对话框中,选择项目保存的文件夹和名称,点击“Save”•在弹出的对话框中,选择“8051”系列的芯片类型,点击“OK”•在弹出的对话框中,选择芯片型号,点击“OK”3. 配置项目选项•在项目窗口中,点击鼠标右键,选择“Options for Target”选项•在弹出的对话框中,可以进行各项项目选项的配置,如存储器映射、优化选项等•配置完成后,点击“OK”按钮保存配置4. 编写程序代码•在项目窗口中,选择“Source Group”文件夹,点击鼠标右键,选择“Add Files to Group”选项•在弹出的对话框中,选择要添加的代码文件,点击“Add”•在代码编辑器中编写程序代码5. 编译程序•点击Keil C51软件界面的“Build”按钮,开始编译程序•若编译过程中出现错误提示,需要根据错误信息进行代码修改•编译无误后,将生成的目标文件保存在指定的文件夹中6. 调试程序•连接硬件设备到计算机上•在Keil C51软件界面的“Debug”选项中,选择“Start/Stop Debug Session”选项•在弹出的对话框中,选择调试使用的硬件接口,点击“OK”•进入调试模式,可以进行单步调试、断点设置等操作,查看程序运行情况7. 烧写程序•在Keil C51软件界面的“Flash”选项中,选择“Download”选项•在弹出的对话框中,选择要烧写的目标芯片和烧写方式,点击“OK”•点击“Start”按钮开始烧写程序到目标芯片中•烧写完成后,断开硬件连接,程序即可在目标芯片上运行8. 测试与调试•将目标芯片插入到目标系统中•针对项目的需求,进行测试和调试工作•根据测试结果进行代码的优化和修改,重新编译、烧写程序9. 打包与发布•最终确定程序无误后,可以将程序进行打包•打包后的程序可以发布到目标设备或进行产品交付以上就是使用Keil C51软件的开发流程的基本步骤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何使用Keil C软件调试单片机程序调试一般都是在发生错误与意外的情况下使用的。
如果程序能正常执行,调试很多时候都是用不上的。
所以,最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。
单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试。
使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。
但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。
软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。
硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到仿真器,然后与单片机一样执行。
仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出)。
仿真器会将单片机内部内存与时序等情况返回给计算机,这样就可以在计算机里看到单片机程序真实的执行情况。
不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。
仿真器可以接入实际的电路中。
图1:仿真器下面将具体介绍如何使用Keil uVision 软件来调试单片机程序。
首先:打开一个已经编译通过的单片机项目。
选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试。
接下来看到的窗口就是调试窗口了:下面具体说说相关子窗口的功能:1、左侧的ProjectWorkspaceRegs是片内内存的相关情况值;Sys是系统一些累加器、计数器等。
Regs很简单就不多说。
具体介绍一下Sys:a 累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。
b 寄存器B,主要用于乘法和除法操作。
spsp_maxdptr 数据指针DPTR。
PC $states 执行指令的数量。
sec 执行指令的时间累计(单位:秒)。
psw 程序状态标志寄存器PSW,八位寄存器,用来存放运算结果的一些特征量,如有无进位、借位等。
p 奇偶标志P。
反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。
f1ov 溢出标志位OV。
MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。
rsf0ac 辅助进位标志AC。
又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。
cy 进位标志CY(PSW 7)。
它表示运算是否有进位(或借位)。
如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0。
由于PSW存放程序执行中的状态,故又叫程序状态字。
运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)。
根据指令执行的不同,上述值会有相应的变化,程序员可以监测这些在单片机中看不到的值而达到调试的目的。
虽然软件调试无法实现硬件调试那样的信号输出,但是软件调试也可以在软件窗口监测输出信号的高低电平,以及单片机相关端口的变化,实现模拟监测输出信号的目的。
上图所示,Port0,Port1,Port2,Port3就对应于单片机的四个P0,P1,P2,P3 口,共32个针脚。
这是全部打开后的效果。
有了输出,就应该有输入的设置:选择Interrupt这个按钮可以打开输入预设窗口,输入值窗口如下:选择不同的Int Source 会有不同的Selected Interrupt的变化,通过选择与赋值达到模拟输入的目的。
接下来是串口的设置:出现设置串口的窗口:监测窗口数据还有一个窗口:点击:将会出现,这个窗口可以监测从串口输出的ASCII代码。
最下面还有一个定时器的设置:3个定时器与一个看门狗,设置定时器的数量与工程选择的单片机种类有关系,如果是8051就只有2个定时器,如果是选择8052 就有3个定时器了。
定时器的设置很简单:参考的数很多,这里暂时省略介绍。
下面再介绍一下一些常用的调试按钮:就是Reset ,相当于单片机的复位按钮,按下后,所有的系统状态将变成初始状态。
这是全速运行,相当于单片机的通电执行。
这个是停止全速运行的按钮。
step into 逐语句;进入并单步执行。
step over 逐过程。
step out 跳出。
执行到断点处。
可以在代码所在窗口的最左边右击按钮插入一个断点,如下图所示:有了这个功能,就可以控制监控要执行到某位置时系统的状态。
最后在介绍一个很实用的功能:这个是Disassembly Windows,按下后可以把C51 Disassembly 为相应的汇编语言,如果有汇编语言知识的话,就可以对比C51程序与汇编程序了。
由于汇编语言的效率高很多,这也可以作为查看C51执行效率的一个方法。
上图中就可以看出,C51 代码是如何被解释为汇编的。
调试还有很多的功能,这里只是介绍了一小部分,希望能起到抛砖引玉的作用,更多的细节需要你自己去发掘与学习。
Keil C51程序调试过程用Keil C51编写程序时,经常需要调试,如果不是经常用这个软件的话,很容易忘记这些调试步骤,现在举一个例子“验证延迟函数delay()使其延迟的时间为500ms”说明。
源程序写完后,就可以调试了,按照图1所示,先进行第一步和第二步操作,使界面切换到图2的状态,可以看到在文本编辑窗口中,有一个黄色箭头指向13行的位置,说明程序从这个位置开始执行。
左上角有一些跟调试相关的按钮,如“全速执行”、“单步进入”……。
对于这个例子,目的是验证delay()函数的延迟时间,使其大约为500ms。
按照下列方法可以达到这个目的:图1 编译界面图2 调试界面点击“单步跳出”按钮(或功能键F10),黄色箭头从第13行往下移一行(14),再单击“单步跳出”,则箭头移到15行那边,表示程序从第13行执行到第15行(注:这种方式是一步一步执行程序。
如果要同时执行几行,比如从第13行一下子执行到15行,可以作如下操作:先用鼠标在第15行的位置处点击两下会出现一个图2所示的红色图标;然后点击“全速执行”按钮,则黄色的箭头会从第13行快速移到15行。
即:这两行同时被执行)。
此时左边寄存器窗口中的sec有一个数值,表示程序执行的时间,即delay()函数的延迟时间。
如果延迟时间不是500ms,可改变delay()函数中x,y的数值,再点击图1的第二步所对应的按钮切换到图1所示的编译界面,点击“重新构造所有对象文件”编译程序,然后再切换到图2的界面上来进行调试。
重复上面的步骤,直到左边寄存器窗口中的sec(单位秒)数值大约为0.50s,即可说明delay()延迟时间为500ms。
(注:这种方法比较麻烦,而且延迟时间不会很精确,如果要精确延迟的话可采用定时器的方式。
)Keil C调试案例--优化导致的问题如下是一个简单的Keil C中的小程序:#include <reg52.h>void main(){unsigned char i,j;i = 0xf0;j = 0x0f;P0 = i;P1 = j;while (1);}编译OK后,进入Debug session,按F11单步执行,发现"i = 0xf0"和"j = 0x0f"这两句没有执行。
如下图:很多初学者百思不得其解,其实,这是由于Keil C本身的8级优化导致的。
解决的方法有两种:1、降底优化级别,如下图,可降至级别2。
2、在局部变量i,j定义前加上Volatile,禁止Keil C优化这两个变量。
如下:volatile unsigned char i,j;调试OK!KEIL-C调试点滴问:用KEIL写C代码,做完以后的调试工作应该如何开展?只有PC机,没有任何的硬件设备。
2 楼good02xaut(good)回复:用自带的编译功能然后查错误。
写完代码后,F7编译,Alt+F5调试,F10单步运行。
可以查看寄存器的值以及RAM的内容。
还可以改变P1~P3口的输入。
KEIL 就是一个开发仿真一体的。
4 楼zhou_huanxi(阿周)回复:Keil C本身就是编译与仿真一体的。
当不要外部数据时很方便,可以使用Keil C自带的软件调试器(软件仿真器),有单步运行,设置断点等功能。
当要外部输入时(比如用定时器作计数器用),有两种处理方法:(1)做产品时最好是用硬件仿真器调试。
(2)学习时可用以下方法:Keil C提供了几个调试输入用的窗口,可用它们来模拟输入;调试函数由自己根据需要按特定的格式来编辑,再按KEIL C 的要求调入即可。
下面给出用定时器作外部事件计数时模拟外部输入的调试函数,并写出Keil C调用的步骤如下:步骤一:编写如下信号函数:single void t0_singal(void){while(1){PORT3|=0x10; //pull INT0(P3.4) high againPORT3&=~0x10; //pull INT0(P3.4) low and generate interrupt PORT3|=0x10; //pull INT0(P3.4) high againtwatch(CLOCK); //wait for 1 second}}步骤二:在DEBUG状态下选择:DEBUG》“Function Editor(Open Ini File)",这时,将弹出两个新屏幕,将其中的“打开”窗口关闭;保留“Function Editor窗口;步骤三:在Function Editor窗口中输入上面的函数:single void t0_singal(void)步骤四:保存(注意:扩展名为.ini),编译该程序,成功后关闭Function Editor 窗口;步骤五:执行用户程序(必须连续执行);步骤六:在屏幕左下脚的命令窗口中,键入t0_singl()后(必须回车),Keil C 便可向P3.4源源不断地提供脉冲信号。