qllaoda 2022-06-08 10:56 采纳率: 0%
浏览 55

51单片机进行整数运算的时候如果发生中断会怎样?

51单片机进行整数运算的时候如果发生中断会怎样?
51单片机处理16位或32位整数,即使是简单的赋值,也需要拆成多个指令的。假如正在执行赋值操作进行到一半的时候,发生了中断,而中断里又会用到这个整形变量,在中断里读到的值是否就是一个中间状态?对这种情况要不要做防范?

  • 写回答

4条回答

  • 番杰 2022-06-08 15:40
    关注

    应该不会读到中间过程值;
    打给比方:
    a = b + c;
    此时程序正在计算b+c,还未完成,进入中断里,使用的a还是之前的a的数值;
    不会是b+c的数值还没有赋值给a;

    提示:如果要避免你担心的情况,
    可以在程序这样写:计算前关闭中断,计算后再打开中断;
    像这样:
    // 禁止中断的代码;
    a = b + c;
    // 允许中断的代码;

    评论

报告相同问题?

问题事件

  • 创建了问题 6月8日