‘壹’ 单片机调试的问题
仿真器就是仿真单片机运行的行为,程序是在仿真器运行的向电脑反馈运行结果并接受电脑的控制,所以你可以设置断点,而单片机运行却不接受电脑的控制,所以就是支持ISP的也不可以断点处停下来,当然有些支持硬件Debug的单片机,如MSP430,就不要仿真器,直接可以通过下载线和电脑联系仿真,但实际运行中(脱离下载线或调试环境)就不会在断点处停下来。总而言之断点只能用在仿真中,而不能在单片机独立运行的环境中运用。
不用插单片机插仿真器的仿真头在扳上插单片机的位置。
‘贰’ 在keil软件中调试程序时,无法设置断点,必须切换到汇编语言窗口才能设置断点,怎么办
首先要说的,Keil是非常不错的模拟和调试工具。
其次要说的就是我个人理解的经验:
1、keil是模拟MCU的内部特性和外部设备(I/O口、中断、串行、定时等)特性,其模拟是一种“自内向外”的真实模拟,换句话说,可以又任意一个内部数据处理结果去指导I/O口工作,但这种I/O工作的方向是“输出型”的(广义),而对于MCU要去获取外部状态的工作(我把它称作为“输入型”的),则在Keil中调试无法能反映真实情况,必须要配合相应硬件才能正常调试,因为当仅用Keil软件(不用任何其他硬件)在电脑上“软”调试工程时,读取外部I/O口,读过来的数据都是1,但这可能并不意味着你的软件有问题。
2、有了真实“输出型”的调试,而无法“输出型”的调试,你是不是觉得只有一半的功能呢?其实不是这样的。当我们要去调试“输出型”时,我的做法是用软件去制作一个和外部硬件特性一样的软件模块(一般这个模块做起来是比较费力的),也就是说用我做的另一个独立的软件模块去产生或选取MCU需求的输入数据,这样就能验证某些过程是否在执行中按照自己的意识操作。
我曾经就只有keil做过DS18B20的“搜索ROM”的算法实现和整个过程(因为如果直接烧进MCU程序的话,如果不出正确结果,其实根本就发现不了错误存在),我做了一个外部DS18B20的硬件仿真软件模块(由很多个函数组成),后来就是在Keil的一些“软”单步调试中发现了我所有算法中的出现的问题,最后我才把多个DS18B20连接在一个MCU的I/O口上,全部正确的获取了在线的能正常工作的DS18B20的64位地址。
最后我想说的就是,仅在keil下去仿真外部硬件特性做需要的软件模块比较会忽略某些方面而出错的(一般而言),所以要开发keil工程话,我非常推荐用相应的仿真器(这个可是硬件哦)去调试你的项目。
PS:可惜我一直都是没有硬件仿真器的条件下开发工作的,有的时候会相当耗时。
‘叁’ VC++6.0无法设置断点进行调试是怎么回事(如下图所示)
断点无效。调试器没有连接到要调试的进程,被调试的进程找不到调试数据库或日期时间不同需要重新编译。 实心圆圈是可用的断点。空心的,就是无效的
‘肆’ 单片机软件调试方法,请问单片机程序调试都有什么方法
用keil调试,主要是设置断点,单步执行,运行到光标处,查看运行时间,监视变量和表达式的值,这些都是常用的手段,你仔细看看工具栏就知道了
‘伍’ 大家好,我是学习pic单片机新手,这几天我用mplab sim调试程序发现断点在用单步执行调试时断不了啊
首先PIC单片机的中断在C中只能写一个中断函数,进中断后判断是什么中断标志然后再执行不同的功能。
然后保证你中断的使能都开正确。
我觉得有可能是你单步调试步数不够,远没有到定时的时间,所以一直没跳入中断。你可以在中断内部设置一个断点,然后运行,看是否能进入。
‘陆’ 单片机调试的方法和步骤是什么
首先,了解硬件接口以及功能,以便于配置IO端口;
第二,根据硬件设计以及功能需要,编写单片机程序;
第三,编译程序,把程序烧写到单片机中,或者链接debug调试器,在线对单片机进行仿真;
第四,在线仿真可以支持单步调试和断点调试,测试单片机的软件功能;
第五,如果出现问题,首先分析是软件逻辑的问题,还是硬件方面的问题,以便于对症下药;
最后,将软件写入单片机的flash中,将单片机加密,防止其他人窃取单片机内部代码。
‘柒’ keil中调试的时候为什么不能设置断点了 双击无效!F无效
如果你鼠标点中的代码被编译器优化掉,这样的代码在硬件中不存在(被优化掉了),所以打不上断点的.
另外如果是断点个数超过硬件限制,一般会弹出一个提示断点个数过多的提示的.所以你要打断点的代码被优化的可能性比较大.
‘捌’ 在keil下用ulink2调试能够单步运行但是为什么不能设置断点
有两点需注意:
有些地方是不能打断点(如:变量定义处)。
代码优化之后,有些地方不会执行,所以不能断点。
Keil系列教程:
http://blog.csdn.net/column/details/13472.html
‘玖’ 单片机中如何用断点方式调试程序
在程序某个地方放个函数或子程序,像串口发送程序或LED显示程序,执行到这里LED点亮或串口发出你想看的数据,这就是断点方式调试
‘拾’ 单片机调试 中断进不去为什么
我试了,可以进入中断,只是你的a值太大了,要等很久P1口才移位,你可以把a改成5试一下,循环流水灯
,你是单步调试吗?那你先将a改成1,在a--;处加一断点连续运行,再单步调应该就可以了