独闷闷网

 找回密码
 立即注册
搜索
查看: 3071|回复: 2
收起左侧

[求助] 关于单片机中用矩阵键盘输入然后比较两组数的大小更优化的算法

[复制链接]
发表于 2015-1-4 20:48:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2021-6-14 01:53 , Processed in 0.134740 second(s), 17 queries .

快速回复 返回顶部 返回列表