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

📄 51lcd1602+=

📁 51简易计算器_lcd1602
💻
字号:
C51 COMPILER V9.00   KEY                                                                   12/11/2011 23:03:26 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: D:\Program Files\keil4\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************
   2          按键相关处理程序
   3          **********************************************************/
   4          #include <reg52.h>
   5          #include "work.h"
   6          
   7          //=========================================================
   8          void jiahander(void);
   9          void jianhander(void);
  10          void chenghander(void);
  11          void chuhander(void);
  12          //==========================================================
  13          //键盘扫描函数  返回键值 1-16
  14          //==========================================================
  15          uchar keys(void)
  16          {
  17   1              unsigned char recode,i,j;
  18   1              for(i=0;i<4;i++)
  19   1                      {
  20   2                              KEY=~(0x01<<i);
  21   2                              recode=KEY>>4;
  22   2                              if(recode<0x0f)
  23   2                              { 
  24   3                              for(j=0;j<4;j++)
  25   3                              {if(!(recode&0x01<<j))break;} 
  26   3                              return (i<<2)+(j+1); //返回键值 1-16
  27   3                              } 
  28   2                              delayms(5); //延时5ms
  29   2                      }
  30   1         return 0; //无按键返回
  31   1      }
  32          //=======================================================
  33          //给键值定义值
  34          //=======================================================
  35          uchar scanzhi(void)
  36          {
  37   1              uchar zhi,k;
  38   1              k=keys();
  39   1              switch(k)
  40   1              {
  41   2                      case 0: zhi=27;break;
  42   2                      case 1: zhi=7;break;
  43   2                      case 2: zhi=8;break;
  44   2                      case 3: zhi=9;break;
  45   2                      case 4: zhi=24;break;   // /
  46   2      
  47   2                      case 5: zhi=4;break;
  48   2                      case 6: zhi=5;break;
  49   2                      case 7: zhi=6;break;
  50   2                      case 8: zhi=23;break;   //*
  51   2      
  52   2                      case 9: zhi=1;break;
  53   2                      case 10: zhi=2;break;
  54   2                      case 11: zhi=3;break;
  55   2                      case 12: zhi=22;break;   //-
C51 COMPILER V9.00   KEY                                                                   12/11/2011 23:03:26 PAGE 2   

  56   2      
  57   2                      case 13: zhi=26;break;  //nc
  58   2                      case 14: zhi=0;break;
  59   2                      case 15: zhi=25;break;  //=
  60   2                      case 16: zhi=21;break;  //+
  61   2              }
  62   1              return(zhi);
  63   1      }
  64          //============================================================
  65          void keyscan(void)
  66          {
  67   1              uchar key;
  68   1              key=scanzhi();
  69   1              if(key!=27)  //------有无按键
  70   1              {
  71   2                      if(key<=9) //-----------------------数字输入------------------
  72   2                      {
  73   3                              pflag=1;
  74   3                              sfflag|=0x01;
  75   3                              if(qflag==1)
  76   3                              {
  77   4                                      k=0;
  78   4                                      clearplay(3);
  79   4                                      bczs=0;
  80   4                                      qflag=0;
  81   4                              }
  82   3                              pbuffer1[k++]=0x30+key;
  83   3                              bczs=bczs*10+key;
  84   3                                                              
  85   3                      } //-----------------------------------------------------------
  86   2                      else if(key>20)//------符号输入 
  87   2                      {
  88   3                              pflag=1;
  89   3                              switch(key)
  90   3                              {
  91   4                                      case 21:        jiahander();break;              //+     
  92   4      
  93   4                                      case 22:        jianhander();break;             //-
  94   4      
  95   4                                      case 23:        chenghander(); break;   //*
  96   4      
  97   4                                      case 24:        chuhander(); break;             // /
  98   4      
  99   4                                      case 25:    if(sfflag==0x01) break;
 100   4                                                              if(qflag==1) {sfflag=0; break;  }
 101   4                                                              czshu=bczs;jishuan();sfflag=0x01;pbuffer1[k++]='=';break; //=
 102   4      
 103   4                                      case 26:    bczs=0;jguo=0;bczshu=0;czshu=0;sfflag=0;
 104   4                                                              clearplay(3);k=0;qflag=0;jsfuhao=0; break;                    //nc
 105   4                              }                       
 106   3                      }
 107   2              
 108   2                      while(scanzhi()!=27);   
 109   2              }
 110   1      }
 111          //=======================================================
 112          //等号处理函数
 113          //=======================================================
 114          void jishuan(void)
 115          {
 116   1          
 117   1              switch(jsfuhao)
C51 COMPILER V9.00   KEY                                                                   12/11/2011 23:03:26 PAGE 3   

 118   1              {
 119   2                      case 1: jguo=bczshu+czshu;jchangep();break;
 120   2                      case 2: jguo=bczshu-czshu;jchangep();break;
 121   2                      case 3: jguo=bczshu*czshu;jchangep();break;
 122   2                      case 4: jguo=bczshu/czshu;jchangep();break;
 123   2              }
 124   1              jsfuhao=0;
 125   1              qflag=1;        
 126   1      }
 127          //=======================================================
 128          //加号处理函数
 129          //=======================================================
 130          void jiahander(void)
 131          {
 132   1          if(sfflag>=0x82) return;
 133   1          if((sfflag&0x80)!=0)
 134   1                      {
 135   2                              k--;
 136   2                              pbuffer1[k++]='+';
 137   2                              jsfuhao=1;
 138   2                              return;
 139   2                      }
 140   1              if(qflag==1)
 141   1              {
 142   2                      qflag=0;exchangexx();
 143   2                      bczshu=jguo; bczs=0;pbuffer1[k++]='+';
 144   2              }
 145   1              else
 146   1              {
 147   2                      bczshu=bczs;bczs=0;pbuffer1[k++]='+';
 148   2              }
 149   1              sfflag|=0x80;
 150   1              sfflag+=0x01;
 151   1              jsfuhao=1;
 152   1      }
 153          //=======================================================
 154          //减号处理函数
 155          //=======================================================
 156          void jianhander(void)
 157          {
 158   1          if(sfflag>=0x82) return;
 159   1              if((sfflag&0x80)!=0)
 160   1                      {
 161   2                              k--;
 162   2                              pbuffer1[k++]='-';
 163   2                              jsfuhao=2;
 164   2                              return;
 165   2                      }
 166   1              if(qflag==1)
 167   1              {
 168   2                      qflag=0;exchangexx();
 169   2                      bczshu=jguo; bczs=0;pbuffer1[k++]='-';
 170   2              }
 171   1              else 
 172   1              {
 173   2                      bczshu=bczs;bczs=0;pbuffer1[k++]='-';   
 174   2              }
 175   1              sfflag|=0x80;
 176   1              sfflag+=0x01;
 177   1              jsfuhao=2;
 178   1      }
 179          
C51 COMPILER V9.00   KEY                                                                   12/11/2011 23:03:26 PAGE 4   

 180           //=======================================================
 181           //乘号处理函数
 182           //=======================================================
 183          void chenghander(void)
 184          {
 185   1              if(sfflag>=0x82) return;
 186   1              if((sfflag&0x80)==0x80)
 187   1                      {
 188   2                              k--;
 189   2                              pbuffer1[k++]='*';
 190   2                              jsfuhao=3;
 191   2                              return;
 192   2                      }
 193   1              if(qflag==1)
 194   1              {
 195   2                      qflag=0;exchangexx();
 196   2                      bczshu=jguo; bczs=0;pbuffer1[k++]='*';
 197   2              }
 198   1              else
 199   1              {
 200   2                      bczshu=bczs;bczs=0;pbuffer1[k++]='*';   
 201   2              }
 202   1              sfflag|=0x80;
 203   1              sfflag+=0x01;
 204   1              jsfuhao=3;
 205   1      }
 206          //=========================================================
 207          //除号处理函数
 208          //=========================================================
 209          void chuhander(void)
 210          {
 211   1              if(sfflag>=0x82) return;
 212   1          if((sfflag&0x80)!=0)
 213   1                      {
 214   2                              k--;
 215   2                              pbuffer1[k++]='/';
 216   2                              jsfuhao=4;
 217   2                              return;
 218   2                      }
 219   1              if(qflag==1)
 220   1              {
 221   2                      qflag=0;exchangexx();
 222   2                      bczshu=jguo; bczs=0;pbuffer1[k++]='/';
 223   2              }
 224   1              else
 225   1              {
 226   2              bczshu=bczs;bczs=0;pbuffer1[k++]='/';   
 227   2              }
 228   1              sfflag|=0x80;
 229   1              sfflag+=0x01;
 230   1              jsfuhao=4;
 231   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1001    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V9.00   KEY                                                                   12/11/2011 23:03:26 PAGE 5   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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