找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2863|回复: 5
收起左侧

C语句中,为什么这个地方不能打断点

[复制链接]
ID:333467 发表于 2018-12-13 11:50 | 显示全部楼层 |阅读模式
求助:

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
回复

使用道具 举报

ID:333467 发表于 2018-12-13 13:14 | 显示全部楼层
调节优化等级为3时,该处可以运行打断点了。
但没明白为什么优化等级调高后,该语句竟然没转成汇编,被优化掉该语句。
回复

使用道具 举报

ID:333467 发表于 2018-12-13 13:17 | 显示全部楼层
改成PDATA或XDATA后,即使高优化等级也可以了。
回复

使用道具 举报

ID:445662 发表于 2018-12-13 15:01 | 显示全部楼层
keil设置里面,点击c51,再点击优化程度选择,选择0级优化就可以解决问题。
回复

使用道具 举报

ID:387733 发表于 2018-12-13 16:49 | 显示全部楼层
因为优化时,相同的指令合并,该处会被多次执行,程序无法判断断点实际情况。具体的应该结合编译后的汇编程序,更好理解。在汇编里面打断点才是最准确的。在C里面要打断点调试,可以先将优化级别降到最低,调试通过后再把优化级别调高。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表