标题:
C语句中,为什么这个地方不能打断点
[打印本页]
作者:
zhou5201986
时间:
2018-12-13 11:50
标题:
C语句中,为什么这个地方不能打断点
求助:
void Read_Pressure_Data(u8 Pressure_Num)
{
u8 i;
if(Pressure_Num == 1)
{
Pressure_Data = 0;
for(i=0;i<8;i++)
{
SCL1 = 1;///////////////////////////此处无法打断点,如截图。
Delay_uS(1);
Pressure_Data<<=1;
Pressure_Data|=SDA1;
Delay_uS(1);
SCL1 = 0;
Delay_uS(1);/////////////该语句执行完后 下次直接跳到 444行, 443行没有执行。(443行没发打上断点)
}
}
断点.jpg
(56.02 KB, 下载次数: 61)
下载附件
2018-12-13 11:47 上传
作者:
zhou5201986
时间:
2018-12-13 13:14
调节优化等级为3时,该处可以运行打断点了。
但没明白为什么优化等级调高后,该语句竟然没转成汇编,被优化掉该语句。
作者:
zhou5201986
时间:
2018-12-13 13:17
改成PDATA或XDATA后,即使高优化等级也可以了。
作者:
kanmu
时间:
2018-12-13 15:01
keil设置里面,点击c51,再点击优化程度选择,选择0级优化就可以解决问题。
作者:
sxhwdz
时间:
2018-12-13 16:49
因为优化时,相同的指令合并,该处会被多次执行,程序无法判断断点实际情况。具体的应该结合编译后的汇编程序,更好理解。在汇编里面打断点才是最准确的。在C里面要打断点调试,可以先将优化级别降到最低,调试通过后再把优化级别调高。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1