Keil-C51程序调试过程
- 格式:doc
- 大小:719.50 KB
- 文档页数:13
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是一款针对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”进行仿真。
可以查看元件的工作状态,观察电路的波形等进行调试。
如何在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。
实验一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详细设置一.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 集成开发环境调试功能的使用和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、建立一个工程项目,选择芯片并确定选项双击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工程建立与仿真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)。
如何使用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 执行指令的数量。
如何使用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源源不断地提供脉冲信号。