51单片机中定义两个无符号32位变量
顿巴斯基吧
全部回复
仅看楼主
level 11
donbass 楼主
2021年05月16日 15点05分 1
level 11
donbass 楼主
两个变量做减法,有时会出错,如0x6200-0x61A8
2021年05月16日 15点05分 2
level 11
donbass 楼主
两个变量改成无符号16位变量,运算正确
2021年05月16日 15点05分 3
level 11
donbass 楼主
32位变量运算时,使用寄存器工作组中的R0R1R2R3,0x6200-0x61A8=0xFFFFFF58
2021年05月16日 15点05分 4
level 11
donbass 楼主
51单片机不要定义32位变量
2021年05月20日 10点05分 5
level 11
donbass 楼主
调整编译器的优化等级低于等于2Data Overlaying,
添加一段代码
u8 clock_expired(clock_t *t)
{
clock_time_t temp =systime; 此处为添加
if(temp == systime) 此处为添加
{
if((temp-(t->start))>=t->interval)return1;
}
return0;
}
已可以正常使用32位变量运算
2021年05月25日 14点05分 6
level 11
donbass 楼主
2021年05月25日 15点05分 7
level 11
donbass 楼主
依次为优化等级0,1,2,3
其中0,1,2,数据正常,3数据出错
2021年05月25日 15点05分 8
1