关于单片机中用矩阵键盘输入然后比较两组数的大小更优化的算法
我做了一个温控报警装置,用矩阵键盘输入上限和下限,(如果上限>下限指示灯亮,否则灯不亮),我已给出我的算法,希望大家给出更加优化的算法出来,我现在的只是比较2组数而且是只有两位数的,
那么要是2组3位数,或则更加多的数,那我这种方法会弄的很复杂,看大家有没有更好的算法。
(注释给大家写详细点:)
void temper_control_service() //温度控制函数,进行上限和下限比较的函数
{
if(uiSetData4_flag) //第四个键按下的标志,表示输入已完成,开始比较
{
if((uiSetData1>uiSetData3)||\
((uiSetData1==uiSetData3)&&uiSetData2>uiSetData4)) //uiSetData1上限十位,uiSetData2上限个位
//uiSetData3下限十位,uiSetData4下限个位
{
XBYTE=0xfe;//灯亮 //地址法,用的库函数absacc.h
}
else
{
XBYTE=0xff;//灯亮
}
uiSetData4_flag=0; //完后清零
}
}
大概看了一下。你不要把输入的个位和十位先转换成一个变量的数值,然后再整个数值比较。不要单独比个位和十位。我《从业将近十年!手把手教你单片机程序框架》“第84节:实时同步把键盘输入的BCD码数组转换成数值的液晶屏显示程序”中有这方面的例子。 鸿哥我就是觉得我这种方法很不好,所以才问下更好的算法:lol:lol:lol:lol:lol,谢谢鸿哥:D:D
页:
[1]