找回密码
 立即注册
楼主: ma***

怎样在中断返回时,返回到主程序中的某个位置。

[复制链接]

该用户从未签到

46

主题

2968

回帖

6691

积分

超级版主

积分
6691
发表于 2023-3-27 12:05:16 | 显示全部楼层
main 发表于 2023-3-27 09:48
对于单片机而言,GOTO,不会导致任何错误。不会跑飞。任何语句都有跑飞的概率,至于goto不一定比其他语句 ...

虽然我用单片机超过30年,但还是能力、水平有限,看不懂你的描述,太高深。
我用C语言,基本不用goto。
  • TA的每日心情
    无聊
    2024-2-14 08:42
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    4

    主题

    19

    回帖

    218

    积分

    中级会员

    积分
    218
     楼主| 发表于 2023-3-27 13:41:25 | 显示全部楼层
    梁工 发表于 2023-3-27 12:05
    虽然我用单片机超过30年,但还是能力、水平有限,看不懂你的描述,太高深。
    我用C语言,基本不用goto。 ...

    我是针对8#的回复,回复的。和主题没多大关系。
    8#说: “C语言虽然可以,”goto 你想去的地方“,详细你可以百度,但是这个指令在C语言里用容易跑飞,汇编比较可靠”。
    你觉得8#说的对吗?
  • TA的每日心情
    奋斗
    昨天 10:38
  • 签到天数: 50 天

    [LV.5]常住居民I

    3

    主题

    57

    回帖

    371

    积分

    中级会员

    积分
    371
    发表于 2023-4-5 20:47:01 | 显示全部楼层
    程序跑飞是怎么定义的?
    编程逻辑引起的混乱对于单片机来说就正常干活没有跑飞,只能算程序bug.
    只有寄存器数据或片内信号受到干扰,处理器没有正确执行指令行,程序跳到其他指令行运行才叫跑飞吧?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:38
  • 签到天数: 50 天

    [LV.5]常住居民I

    3

    主题

    57

    回帖

    371

    积分

    中级会员

    积分
    371
    发表于 2023-4-5 20:55:20 | 显示全部楼层
    中断返回后想改道运行,最好预先设置个特殊标志,进中断后根据需要修改标志状态,出中断后合适位置做特殊标志判断,就能跳转到想要的地方,
    像掉电这类重要的操作,执行之前要判断下特殊标志,这样就能避免一出中断就掉电的问题
    这个特殊标志也可以用闲置的低优先级中断函数做,进高优先级中断后把低优先级的中断标志软件置位,这样退出中断会立马响应低优先级中断处理想要的事情,处理完再执行掉电操作.
    我觉得应该有很多办法解决这个问题.
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    2024-2-14 08:42
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    4

    主题

    19

    回帖

    218

    积分

    中级会员

    积分
    218
     楼主| 发表于 2023-4-6 14:17:17 | 显示全部楼层
    网老四 发表于 2023-4-5 20:55
    中断返回后想改道运行,最好预先设置个特殊标志,进中断后根据需要修改标志状态,出中断后合适位置做特殊标志 ...

    你这个办法不可行。在“进入掉电模式”之前打开中断,就决定了,主流程里面没有任何办法拦截。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 137 天

    [LV.7]常住居民III

    37

    主题

    872

    回帖

    3990

    积分

    荣誉版主

    积分
    3990
    发表于 2023-11-4 18:06:32 | 显示全部楼层
    很简单, 程序改成这样即可

    if(满足低功耗条件)
    {
        //配置中断
        ...
        EA = 1;           <--必须提前允许相关的中断和总中断,否则唤醒不了了。
        ...                    <--如果这时候进入中断,而中断处理结果是:不能“马上”进入掉电模式,怎么办!!!
        ...
        NOP(4);

        EA = 0;   
        NOP(10);
        EA = 1;   
        //进入掉电模式
        PCON | = 2;  <--进入掉电模式,等待外部触发。
        NOP(4);
        ...
    }

    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-9 04:14 , Processed in 0.058949 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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