现需要调整两个变量Min和Max,Min和Max的范围分别在MinSet()和MaxSet()中限制,
Min和Max通过加减按键调整,过程在此忽略。
液晶屏幕上有一个符号,这个符号我用标志为flag表示
其中flag这个标志是通过按键来开启和关闭的
要求是这样的:
当flag==1时,(即屏幕上对应的符号点亮时)
Min和Max只能在30到80之间设置
Min最低能设到30,Max最高能设到80;
且Min和Max之间的差值在最小时为5。
当Min通过加减键设置到30时停住。
Max通过加减键设置到80时停住。
当flag==0时,(即屏幕上对应的符号熄灭)
Min和Max只能在0到100之间设置
且Min和Max之间的差值在最小时为5.
Min通过加减键设置到0时停住。
Max通过加减键设置到100时停住。
总体来说就是,根据flag的状态使Min和Max能在对应的限制状态下调整。
我现在是这样做:定义一个标志位flag
//限制MIN
MinSet()
{
if(flag)//图案点亮时
{
if(Min>75)
{Min=75;}
else if(Min>(Max-5))
{Min=(Max-5);}
else if(Min<30)
{Min=30;}
}
else//图案不点亮时
{
if(Min>95)
{Min=95;}
else if(Min>(Max-5))
{Min=Max-5;}
else if(Min<0)
{Min=0;}
}
}
//限制Max
MaxSet()
{
if(flag)
{
if(Max>80){Max=80;}
else if(Max<(Min+5)){Max=Min+5;}
else if(Max<35){Max=35;}
}
else
{
if(Max>100){Max=100;}
else if(Max<(Min+5)){Max=Min+5;}
else if(Max<5){Max=5;}
}
}
在实际操作中大部分情况上面的限制是有效的。
但在一些临界状态下,会有问题。
举个例:
在flag==0这个状态时,我将Min设置为5,Max为10;
这时如果我改变flag状态,即让flag=1;
则会出现Min的值不能确定的状态。
我分析是这样的:当Min为5时,假如进入MinSet()时,由于小于30所以Min=30;
Min等于30时,又大于Max-5,导致Min=10-5;
陷入了类似的死循环。
有点搞不懂如何实现上面要求的功能,有点困惑,求指点思路,谢谢各位! |