Keil uVision2中,为什么进入调试命令后不能设置断点啊?

为什么单击Debug/(start)命令后,不能在c程序中设置断点,而出现汇编窗口?怎么解决呢?如何重新设置?

初学51单片机或是业余玩玩单片机开发,每次总要不断的调试程序,如没有仿真器又不喜欢用软件仿真,那只有每次把编译好的程序烧录到芯片上,然后在应用电路或实验板上观察程序运行的结果,对于一些小程序这样的做好也可以很快找到程序上的错误,但是程序大了,变量也会变的很多,而直接烧片就很难看到这些变量的值了,在修改程序时还要不断的烧片实验,确实很麻烦,这时如果有一台仿真器就会变得很好方便了。但一台好的仿真器对于业余爱好者来说确实有一些贵,在这里介绍这种易于自制的51芯片仿真器虽然有一些地方不够完善,但还是非常适于初学51单片机的朋友和经济能力不是很好的业余爱好者。  这个仿真器的仿真CPU是使用SST公司的SST89C58或SST89C54(其它相容的芯片也可,这里主要讲述SST89C58),对于没有可以烧写SST89C58芯片的朋友应该选用CA版本的SST89C58芯片,这个CA型号的芯片出厂时已内置了BSL1.1E的固件程序。那什么是BSL呢?BSL就是英文BOOT-Strap Loader,意思就是可引导装载,形象来说就像电脑用DOS起动盘起动后可以装载应用程序并运行。只不过SST89C58是用串口来输入程序资料的。为了能把编译好的单片机程序HEX或BIN文件下载到SST89C58芯片上,SST公司还提供了一种叫EasyIAP的软件,IAP为In-Application Programming,有了这个软件就可以把SST89C54变为在线下载的实验器。在这里不详述EasyIAP的使用,只讲述如何利用它去把SST89C58升级为带SoftICE固件程序的51仿真器?lt;/P> 一、制作带串口的的最小化应用板 无论是EasyIAP还是仿真器,都需要用串行口使SST89C58芯片和PC上位机进行通讯传输数据,因此我们先要制作一个带RS232/TTL转换的应用板,如果你的51实验电路板或目标电路板已带有这样的电路那么你就可以跳过这一段了。图二是笔者所设计的可以用于制作SST89C58/54仿真器、S51系列下载器或51系列实验应用的小型应用板。(做个广告,这板子将在本站进行发售)它的电路是很简单的,用两个NPN的小功率三极管和一些电阻二极管做RS232/TTL转换(可参看 ,其它元件则做复位和时钟振荡电路。图三是我以前做的51应用板,刚好可以用就拿来用了,省却了用万用板做图四那样的东西,但这块应用板不能像图4那个可以当芯片插到目标板上。在晶振方面最好使用11.0592M或12M。二、有编程器的做法   做好以上所说的电路后,那么就可以把仿真CPU的HEX文件烧到SST89C58里面,再把它插到上面的电路中就可以了。因为SST89C58有两个程序存储区,在这里要注意的是在烧写时就把仿真监控程序烧到SST89C58的第二个存储区也就是的RB1。烧写时要求用支持SST89C58的编程器,站长所用的是TOP2000。烧写设置画面如图五,在这里要注意的是如果你要烧写BSL固件程序做IAP在线下载器是不要对加密位SB1-3进行加密,并设存储位为RB1,否则无法用IAP功能。各编程器的设置不一样具体参看编程口的说明书。三、没有编程器的做法   如果你手头上没有支持SST89C58的编程器,那么你就要购卖CA版的SST89C58芯片,当然不是CA版的也是可以做的,只是相对来说比较麻烦这里就不做讨论了,可以对参看红日网友发起的贴子( 。    1.首先把CA版的SST89C58芯片插到上面介绍的电路板中,因CA版上已装入了BSL3,你可以先下载EasyIAP11E,测试一下你的电路板是否是正常工作的。(用EasyIAP11F也可以)如果你能保证你的电路是正常工作的可以跳过这一步。把你的电路接到电脑串口上,打开EasyIAP11E软件。按菜单上的RS232弹出串口设置画面,设好你要用的串口和波特率,选用波特率选用默认的38400就可。确定后按菜单的“Auto DetectChip”。当你的电路正常时就会图七的画面,并在2所示位置显示芯片的型号,BSL版本等信息。如果你无法到这一步就请检查你的电路是否有正常的复位和起振,串口电路是否正常或芯片是否损坏等等问题。 2.升级BSL11E到BSL11F。下载EaspIAP11F并运行。下面是操作截图和注意事项
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-04
我也遇到了同样的问题,重建工程,将原c文件加入,再debug就可以了