程序中,我们会碰到,A、B两个变量在相近的时刻都可能发生变化,但是具体是哪个变量先变化不得而知,但我们在后期判断的时候,又必须明晰A变量变化前提下,判断B变量的变化情况。
1、方法
0)将ABC的值都保存;
1)将这AB组成一个字节变量C,只要是这个字节变量C发生变化,我们就获知AB肯定发生了变化(不管是A变了还是B变了);
2)开启定时器,等待另一个变量的变化结束(加入另一个量发生了变化),同时,置同C变量的值;
3)待A和B均变化结束后,判断是A变了,还是B变了。
4)置同A和B变量前后的值。
typdef struct {
uint_32 a:1,
uint_32 b:1,
uint_32 nouse:30
}MYSTRUCT;
int A_1,A_2,B_1,B_2;
MYSTRUCT C_1,C_2;
int timer;
while(1)
{
A_1 = A_2;
B_1 = B_2;
C_1 = C_2;
//实时获取全局量A_2、B_2的值,且赋值给C_2
C_2.a = A_2;
C_2.b = B_2;
if(C_2 != C_1)
{
timer = 100;//开启定时器
C_1 = C_2;//C置同
}else{
if(定时器 == 0)
{
//判断A、B值的变化
do sth.
//置同A变量前后的值,置同B变量前后的值
A_1 = A_2;
B_1 = B_2;
}else{
//定时器--;
timer--;
}
}
}
}
2、总结
1)将不知道变化先后的量组成一个值,来判断
2)加延时,给变量变化留时间
3)C变量要将副本置同,保证接下来的else能够起作用。