makesoft 发表于 2018-3-15 10:20:10

51用16位变量,主程序和中断竞争时,编译器自动保护吗?

本帖最后由 makesoft 于 2018-3-15 10:52 编辑

在KEIL中,当主程序和中断程序使用16位变量时,一般来说编程的时候都是需要特别保护的,比如ADC在中断里面计算结果,主程序使用结果都是用下面类似函数来处理,防止高低字节分别更新,在IAR里也有这样的问题吗,用过的说说?

//安全读取可能被中断改变的16位变量
S16 SafeReadS16(S16 whTemp) {
S16 whTemp1;

whTemp1=whTemp;
if(whTemp1!=whTemp)
    whTemp1=whTemp;
return(whTemp1);
}

另外IAR的BOOL好像使用的是CHAR,可以定位成BIT吗?

su33691 发表于 2018-3-15 10:39:52

这类变量就属于临界变量,编程时要严格予以保护。
页: [1]
查看完整版本: 51用16位变量,主程序和中断竞争时,编译器自动保护吗?