⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shumaguan2.lst

📁 单片机开发液晶显示万年历计算器电子琴电子音乐字母输入
💻 LST
📖 第 1 页 / 共 2 页
字号:
 109          **函数功能:键值处理函数(处理+.-.*./.=)                                                          **
 110          **参数:字符型                                                                                                           **
 111          **返回:整型                                                                                                     **
 112          **********************************************************************/
 113          unsigned int process(unsigned char kvalue)
 114          {                  
 115   1                 
 116   1      
 117   1                              if(isdigit(kvalue))       //如果是数字,求值
C51 COMPILER V8.02   SHUMAGUAN2                                                            03/06/2009 00:27:45 PAGE 3   

 118   1                                      {       
 119   2                                          currentvalue=transition(kvalue)+currentvalue*10;
 120   2                                              result=currentvalue;    
 121   2                                       }
 122   1                              else                                               //如果是功能键
 123   1                                      if(kvalue=='o')                    //如果是ON/C,清0
 124   1                                      {
 125   2                                               result=0;
 126   2                                              currentvalue=0;
 127   2                                              lastvalue=0;
 128   2                                      }
 129   1                              else 
 130   1                                      if(kvalue=='+')   //如果是“+”
 131   1                                      {       Lcd_Clear();
 132   2                                              lastop=kvalue;     //lastop保存操作码
 133   2                                              lastvalue=currentvalue;//当前值成为上次值
 134   2                                              result=currentvalue=0;             //当前值清0
 135   2                                      }
 136   1                                              else if(kvalue=='-')
 137   1                                              {
 138   2                                                       Lcd_Clear();
 139   2                                                      lastop=kvalue;
 140   2                                                      lastvalue=currentvalue;
 141   2                                                      result=currentvalue=0;
 142   2                                              }
 143   1                                                      else if(kvalue=='*')
 144   1                                                      {
 145   2                                                              Lcd_Clear();
 146   2                                                              lastop=kvalue;
 147   2                                                              lastvalue=currentvalue;
 148   2                                                              result=currentvalue=0;
 149   2                                                      }
 150   1                                                              else if(kvalue=='/')
 151   1                                                              {
 152   2                                                                      Lcd_Clear();
 153   2                                                                      lastop=kvalue;
 154   2                                                                      lastvalue=currentvalue;
 155   2                                                                      result=currentvalue=0;
 156   2                                                              }                                                                               
 157   1      
 158   1                                                                      else if(kvalue=='=')     //如果是“=”
 159   1                                                                      {       
 160   2                                                                              Lcd_Clear();
 161   2                                                                              switch(lastop)    //判断操作码是什么
 162   2                                                                              {
 163   3                                                                                      case '+':
 164   3                                                                                      {
 165   4                                                                                              result=result+lastvalue;
 166   4                                                                                              currentvalue=result;
 167   4                                                                                              break;
 168   4                                                                                      }
 169   3                                                                                      case '-':
 170   3                                                                                      {
 171   4                                                                                              result=lastvalue-currentvalue;
 172   4                                                                                              currentvalue=result;
 173   4                                                                                              break;
 174   4                                                                                      }
 175   3                                                                                      case '*':
 176   3                                                                                      {
 177   4                                                                                              result=currentvalue*lastvalue;
 178   4                                                                                              currentvalue=result;
 179   4                                                                                              break;
C51 COMPILER V8.02   SHUMAGUAN2                                                            03/06/2009 00:27:45 PAGE 4   

 180   4                                                                                      }
 181   3                                                                                      case '/':
 182   3                                                                                      {
 183   4                                                                                              result=lastvalue/currentvalue;
 184   4                                                                                              currentvalue=result;
 185   4                                                                                              break;
 186   4                                                                                      }
 187   3                                                                                      default:
 188   3                                                                                              break;
 189   3                                                                              }                                                               
 190   2                                                              }
 191   1              if(result>999999999)
 192   1              {
 193   2                      result=0;                       
 194   2                      currentvalue=0;
 195   2              }
 196   1              return result;
 197   1      }
 198          /**********************************************************************
 199          **函数功能:判断按键的键值是功能键还是数字键                                             **
 200          **参数:整型数                                                                                                           **
 201          **返回:BOOL型                                                                                                           **
 202          **********************************************************************/
 203          bit isdigit(unsigned char kvalue)
 204          {
 205   1              if(kvalue>='0'&&kvalue<='9')
 206   1              return 1;
 207   1              else 
 208   1              return 0;
 209   1      }
 210          /**********************************************************************
 211          **函数功能:把数字的ASCII转换成整型                                                                      **
 212          **参数:整型数                                                                                                           **
 213          **返回:整型                                                                                                             **
 214          **********************************************************************/
 215          unsigned char transition(unsigned char kvalue)
 216          {
 217   1              if(kvalue>='0'&&kvalue<='9')
 218   1                      return (kvalue-'0');
 219   1              else
 220   1                      return 0;
 221   1      }
 222          /******************************************************************************
 223          * 函数名称

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -