keil除了可以编写、编译和仿真执行来调试用户程序外,还可以通过串口实现联机调试,即通过单步、断点看代码在硬件上的执行效果。步骤如下:
使用的是AT89C51CC03单片机,keil版本是Keil C51 V9.00。
1、用KEIL建立工程项目文件,编程、编译调试用户程序,保证软件执行进行没什么问题。
2、修改KEIL安装点keil/c51/FlashMon目录下与单片机型号一致的配置文件config.inc,主要是根据实际情况修改cpu_clock和code_start两个参数值,我改为12M和0E000H。
3、重新编译该目录下的程序,生成新的调试程序Monitor.HEX,如果没有重新生成,把选项create HEX file勾上。
4、运行FLIP程序,将Monitor.HEX烧进单片机中,起始地址为0E000H,即 SBV=E0、BLJB选上、BSB=0、EB=FF
5、点击Start Application按钮执行Monitor.HEX程序
6、运行keil,打开工程项目文件,修改调试参数,即菜单project-->option for target,选debug页,点击右边的use keil monitor 51 driver,点击seting按钮,选择串口和波特率,注意,要和烧片子时用的波特率一致,一般用9600。需要注意的是,如果串口为自动方式(即除了三根通信线外,还接了RTS和DTR),需要将RTS和DTR设置为inactive.
7、编译好程序,点击debug菜单下的调试命令,可以单步执行,可以设置断点,可以全速运行,这时候实际使用单片机硬件运行程序,可以看到执行效果,如显示、按键响应等。这种情况下可以调试程序实际执行的效果。
8、如果不设置断点,全速运行用户程序,则用户程序和实际运行一致,keil会失去对用户程序的控制,无法中断用户程序的执行(只有按reset才能中断用户程序运行了)
9、发现问题可退出调试状态,修改程序,重新编译,然后再次进入调试状态,单步或设置断点进行调试。注意,全速运行时不能中断,否则退不出(强行退出的后果是monitor的状态不对,无法再次进入联机调试状态)。
10、退出调试后,无论是按reset还是通过flip程序的start application按钮,都无法再次执行monitor程序,此时执行的是用户程序,要想继续调试,只能擦除flash,重新将monitor烧进单片机。
关键字:KEIL 联机调试 步骤
引用地址:
用KEIL实现联机调试的步骤
推荐阅读最新更新时间:2024-03-16 16:20
用keil2软件模拟延时语句的时间
首先点击project下的option for target ’target1‘ 将晶振频率改为11.0592MHz,与TX-1C试验板上的晶振频率一致 然后点击debug下的start/stop debug session 按钮进行调试 延时代码如下 #include reg52.h //int整型变量分配两个字节,范围在(-32768~32767即-2^15~2^15-1)之间 unsigned int i,j;//无符号整型变量分配两个字节,范围在(0~65535即2^16-1)之间 sbit led8=P1^7;//将P1口的最高位声明为led8 void main() { while(1) {
[单片机]
OpenHarmony移植stm32步骤
OpenHarmony移植stm32步骤操作如下: 使用的开发工具:keil5 MDK 使用keil5打开工程后按F7进行编译问题 鸿蒙系统在github 上的地址:https://liteos.github.io/porting/ 编译器错误原因是因为 inline 这个类型没有定义改成 __inline FlagStatus pwrclkchanged = RESET;把代码移到上面,这个错误的意思是变量的定义和负值应该在代码执行之前就行了。
[单片机]
Keil(MDK-ARM)系列教程(二)_工具栏详细说明
Ⅰ、写在前面 Toolbars工具栏其实就是在菜单下面一行一行的快捷图标按钮,这些快捷按钮之所以归为工具栏里面,在于它们使用的频率较高。比如编译按钮,这个按钮在我们编程的时候使用的频率是相当高,其他快捷按钮同样也经常使用。 本文说的Toolbars工具栏和大部分上位机软件(如:Keil、IAR、VS、STM32CubeMX等)一样,只是工具栏的多少不同,工具栏中快捷按钮的多少不同而已。 本文虽然以Keil MDK-ARM V5为例来讲述,其实Keil MDK-ARM 其它版本,以及Keil C51的各个版本也有同样工具栏,功能也一样。因此,本文也适合它们。 本文内容已经整理成PDF文件,提供给大家下载: http:
[单片机]
STM32学习笔记之Keil工程Lib库文件的制作和运用
最近看了百度手环开源项目,发现所有的算法都被封装成了一个lib文件在keil中调用 也是第一次学习到。 问题引出:为什么要做成lib库? 1、有些方案公司为了将自己写的关键部分源代码不进行公开,但是同时库文件又需要让别人能够正常调用,那封装成lib的格式就是一个好方法。 2、编译某些工程文件时非常耗时,像UCGUI和ST官方的库时,由于文件众多,编译一次可能得1两分钟,这时可以打包成库,这时编译工程时就不会再次编译库的文件,节省不少的时间。 唯一一点不好的是:不能用右键go to Definition 'XXX'来直接找到源文件定义了。但是一般别人都是测试好就封装成lib的 制作方法:以UCGUI为例 第一步:
[单片机]
STM32开发 -- Keil使用(1)
一、keil主界面详解 打开一个工程文件,可以看到如下的界面: 下面我们就一一来介绍下。为了讲解专门找到一个keil汉化补丁。也是够够的了。 这里的汉化为了方便讲解,实际工作中建议还是用英文版本。 下载:keil 4汉化包 1、菜单栏 文件 其中需要注意的是 License Management,破解时需要在这里输入。 编辑 视图 工程 闪存 调试 外围设备(仿真) 工具 2、工具栏 文件操作 新建文件夹 Ctrl + N 打开文件 Ctrl + O 保存当前文件 Ctrl + S 保存所有文件 无 剪切 Ctrl + X 复制 Ctrl + C 粘贴 Ctrl + V
[单片机]
EUV吞吐量/掩膜/成本/光罩/产能/工艺步骤深度分析
在每年一度的半导体行业战略研讨会(ISS)上,半导体行业的高管们都会讨论半导体技术趋势和全球市场的发展。这篇文章介绍了一位行业观察家在会议上分享的内容和结论。下面就随嵌入式小编一起来了解一下相关内容吧。 为什么使用EUV? 半导体行业的公司过去曾经讨论过,当EUV光刻技术的成本低于光学光刻时,将在半导体制造中实施EUV技术,但是现在,一些其它的因素正在推动EUV技术的采纳。 周期时间 - 单次EUV曝光可以取代3次或更多的光学曝光,每个掩模层可以节省大约1.5天的时间。 边缘放置误差(EPE) - 创建图案时使用多个掩膜会导致EPE的增加,将多个光学掩模简化为单个EUV掩模可以将EPE减少高达90%。
[嵌入式]
keil C51 指针总结
变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下: 数据类型 变量名表 在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto)、外部(extern)、静态(static)和寄存器(register),缺省类型为自动(auto)。这些存储种类的具体含义和使用方法,将在第七课《变量的存储》中进一步进行学习。 而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型
[单片机]
STC单片机在KEIL编译器中的头文件
STC单片机在 keil 编译器里找不到头文件如何处理。首先在网络上找到一个关于STC单片机的升级包。安装上去以后,就可以看到有STC型号的单片机可以选择了。但是此时,它的头文件却无法调用。也没有在keil的安装文件下找到这个升级包应该附带的STC单片机头文件。 解决办法就是打开一个AT89S52的头文件,在此头文件的基础上假如STC独有的一些SFR声明,然后把文件名改为STC89S52.H,然后放入工程所在文件夹,就可以进行正常调用了。 STC的特殊SFR声明如下: /* After is STC additional SFR */ /* sfr AUXR = 0x8e; */ /* sfr
[单片机]