梁工 发表于 2023-3-27 12:05:16

main 发表于 2023-3-27 09:48
对于单片机而言,GOTO,不会导致任何错误。不会跑飞。任何语句都有跑飞的概率,至于goto不一定比其他语句 ...

虽然我用单片机超过30年,但还是能力、水平有限,看不懂你的描述,太高深。
我用C语言,基本不用goto。

main 发表于 2023-3-27 13:41:25

梁工 发表于 2023-3-27 12:05
虽然我用单片机超过30年,但还是能力、水平有限,看不懂你的描述,太高深。
我用C语言,基本不用goto。 ...

我是针对8#的回复,回复的。和主题没多大关系。
8#说: “C语言虽然可以,”goto 你想去的地方“,详细你可以百度,但是这个指令在C语言里用容易跑飞,汇编比较可靠”。
你觉得8#说的对吗?

网老四 发表于 2023-4-5 20:47:01

程序跑飞是怎么定义的?
编程逻辑引起的混乱对于单片机来说就正常干活没有跑飞,只能算程序bug.
只有寄存器数据或片内信号受到干扰,处理器没有正确执行指令行,程序跳到其他指令行运行才叫跑飞吧?

网老四 发表于 2023-4-5 20:55:20

中断返回后想改道运行,最好预先设置个特殊标志,进中断后根据需要修改标志状态,出中断后合适位置做特殊标志判断,就能跳转到想要的地方,
像掉电这类重要的操作,执行之前要判断下特殊标志,这样就能避免一出中断就掉电的问题
这个特殊标志也可以用闲置的低优先级中断函数做,进高优先级中断后把低优先级的中断标志软件置位,这样退出中断会立马响应低优先级中断处理想要的事情,处理完再执行掉电操作.
我觉得应该有很多办法解决这个问题.

main 发表于 2023-4-6 14:17:17

网老四 发表于 2023-4-5 20:55
中断返回后想改道运行,最好预先设置个特殊标志,进中断后根据需要修改标志状态,出中断后合适位置做特殊标志 ...

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

LAOXU 发表于 2023-11-4 18:06:32

很简单, 程序改成这样即可

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

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

页: 1 [2]
查看完整版本: 怎样在中断返回时,返回到主程序中的某个位置。