main()
{
while(1)
{
test=0x08fe;
temp=test; 编译器会优化为一个变量处理,并且主程序中的变量存储在寄存器中
if(temp==0x0800)
{
led=1;
}
}
}
xxxx() interrupt ex0int //外部中断
{
test++;这里是直接读取内存数据的,结果把原本应该是一个的变量弄成两个独立的了
}
led=1; 有多大可能性执行到,怎么解决? 执行概率可能为0
解决方法:加变体说明变量不能优化,主程序在变量操作前禁止终端产生,防止一个变量处理中被改为未知数据 |
|