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

📄 计算器.lst

📁 单片机计算器程序设计! 单片机计算器程序设计! 单片机计算器程序设计! 单片机计算器程序设计!
💻 LST
字号:
C51 COMPILER V6.23a  _芲闫_                                                                03/30/2007 21:30:12 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE _芲闫_
OBJECT MODULE PLACED IN 计算器.OBJ
COMPILER INVOKED BY: D:\mcs51\Keil\C51\BIN\C51.EXE 计算器.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1                  #include<reg52.h>
   2                  #define uchar unsigned char
   3                  #define uint unsigned int
   4                  char a[16]={0};
   5                  char b[16]={0};
   6                  uchar dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x40};
   7                  uchar wx[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
   8                  uchar m,n,l,smz1,smz,zhi,flag,cp;
   9                  char i,j,k;
  10                  bit flag1,flag2,flag3;
  11                  sbit key1=P1^3;
  12                  sbit key2=P1^2;
  13                  void delay()
  14                  {
  15   1                      for(i=0;i<100;i++);
  16   1              }
  17                  void jia()
  18                  {
  19   1                      for(i=0;i<16;i++)
  20   1                      {
  21   2                              a[i]=a[i]+b[i]+cp;
  22   2                              if(a[i]>=10)
  23   2                              {
  24   3                                      a[i]=a[i]-10;
  25   3                                      cp=1;
  26   3                              }
  27   2                              else
  28   2                                      cp=0;
  29   2                      }
  30   1              }
  31                  void jian()
  32                  {
  33   1                      flag3=0;
  34   1                      for(i=15;i>=0;i--)
  35   1                              {
  36   2                                      if(a[i]==b[i])
  37   2                                              continue;       
  38   2                                      else if(a[i]>b[i])
  39   2                                      {
  40   3                                              flag3=1;
  41   3                                              break;
  42   3                                      }
  43   2                                      else
  44   2                                              break;
  45   2                                      
  46   2                              }
  47   1                      if(flag3==1)
  48   1                      {
  49   2                              for(i=0;i<16;i++)
  50   2                              {
  51   3                                      a[i]=a[i]-cp-b[i];
  52   3                                      if(a[i]<0)
  53   3                                      {
  54   4                                              a[i]=a[i]+10;
  55   4                                              cp=1;
C51 COMPILER V6.23a  _芲闫_                                                                03/30/2007 21:30:12 PAGE 2   

  56   4                                      }
  57   3                                      else
  58   3                                              cp=0;
  59   3                              }
  60   2                              for(i=15;i>=0;i--)
  61   2                                      if(a[i]!=0)
  62   2                                      {
  63   3                                              a[i+1]=11;
  64   3                                              break;
  65   3                                      }               
  66   2                       }
  67   1                      else
  68   1                      {
  69   2                              for(i=0;i<16;i++)
  70   2                              {
  71   3                                      a[i]=b[i]-cp-a[i];
  72   3                                      if(a[i]<0)
  73   3                                      {
  74   4                                              a[i]=10+a[i];
  75   4                                              cp=1;   
  76   4                                      }
  77   3                                      else
  78   3                                              cp=0;
  79   3                              }
  80   2                      }
  81   1              }
  82                  void chen()
  83                  {
  84   1      
  85   1              }
  86                  void chu()
  87                  {
  88   1      
  89   1              }
  90                  uchar key()
  91                  {
  92   1                      P2=0x0f;
  93   1                      smz=P2;
  94   1                      P2=0xf0;
  95   1                      smz1=P2;
  96   1                      smz=smz+smz1;
  97   1                      return smz;
  98   1              }
  99          
 100                  void js()
 101                  {
 102   1                      cp=0;
 103   1                      switch(flag) 
 104   1                      {
 105   2                              case 0xfe: jia();break;
 106   2                              case 0xfd: jian();break;
 107   2                              case 0xfc: chen();break;
 108   2                              case 0xfb: chu();break;
 109   2                      }
 110   1              }
 111          
 112                  void ys()
 113                  {       
 114   1                      flag1=1;
 115   1                      if(zhi==0xee)
 116   1                      {
 117   2                              js();
C51 COMPILER V6.23a  _芲闫_                                                                03/30/2007 21:30:12 PAGE 3   

 118   2                              flag2=1;
 119   2                      }
 120   1                      else
 121   1                      {
 122   2                              js();
 123   2                              flag=zhi;
 124   2                              flag2=0;
 125   2                      }
 126   1                      for(j=0;j<16;j++)
 127   1                      {
 128   2                              b[j]=a[j];
 129   2                              a[j]=0;
 130   2                      }
 131   1              }
 132          
 133                  void yw()
 134                  {
 135   1                      flag1=0;
 136   1                      m=0;
 137   1                      if(flag2==1)
 138   1                      {
 139   2                              for(i=0;i<16;i++)
 140   2                                      b[i]=0;
 141   2                              flag2=0;
 142   2                      }
 143   1                      if(a[7]==0)
 144   1                      {
 145   2                              for(i=6;i>0;i--)
 146   2                                      a[i+1]=a[i];
 147   2                              a[1]=a[0];
 148   2                              a[0]=zhi;
 149   2                      }
 150   1              }
 151          
 152                  void pd()
 153                  {
 154   1                      switch(key())
 155   1                      {       
 156   2                              case 0xff:zhi=10;break;
 157   2                              case 0xed:zhi=1;while(key()==0xed);break;
 158   2                              case 0xdd:zhi=2;while(key()==0xdd);break;
 159   2                              case 0xbd:zhi=3;while(key()==0xbd);break;
 160   2                              case 0xeb:zhi=4;while(key()==0xeb);break;
 161   2                              case 0xdb:zhi=5;while(key()==0xdb);break;
 162   2                              case 0xbb:zhi=6;while(key()==0xbb);break;
 163   2                              case 0xe7:zhi=7;while(key()==0xe7);break;
 164   2                              case 0xd7:zhi=8;while(key()==0xd7);break;
 165   2                              case 0xb7:zhi=9;while(key()==0xb7);break;
 166   2                              case 0xde:zhi=0;while(key()==0xde);break;
 167   2                              case 0xee:zhi=0xff;while(key()==0xee);break;
 168   2                              case 0x7e:zhi=0xfe;while(key()==0x7e);break;
 169   2                              case 0x7d:zhi=0xfd;while(key()==0x7d);break;
 170   2                              case 0x7b:zhi=0xfc;while(key()==0x7b);break;
 171   2                              case 0x77:zhi=0xfb;while(key()==0x77);break;
 172   2                              case 0xbe:zhi=0xee;while(key()==0xbe);break;
 173   2                      }
 174   1      
 175   1                      if(zhi==0xff)
 176   1                      {
 177   2                              m=0;
 178   2                              for(j=0;j<16;j++)
 179   2                              {
C51 COMPILER V6.23a  _芲闫_                                                                03/30/2007 21:30:12 PAGE 4   

 180   3                                      a[j]=0;
 181   3                                      b[j]=0;
 182   3                              }
 183   2                      }
 184   1                      else if(zhi==0xfe||zhi==0xfd||zhi==0xfc||zhi==0xfb||zhi==0xee)
 185   1                      {
 186   2                              ys();
 187   2                      }
 188   1                      else if(zhi==10);       
 189   1                      else
 190   1                      {
 191   2                              yw();
 192   2                      }
 193   1              }
 194          
 195                  void display()
 196                  {
 197   1                      if(flag1==0)
 198   1                      {
 199   2                              for(j=15;j>0;j--)
 200   2                              {
 201   3                                      if(a[j]!=0)
 202   3                                      {
 203   4                                              if(j>=8)
 204   4                                              {
 205   5                                                      a[0]=10;
 206   5                                                      for(i=1;i<8;i++)
 207   5                                                              a[i]=0;
 208   5                                                      m=0;
 209   5                                                      break;
 210   5                                              }
 211   4                                              m=j;
 212   4                                              break;
 213   4                                      }
 214   3                              }
 215   2                              for(j=0;j<m+1;j++)
 216   2                              {
 217   3                                      n=a[j];
 218   3                                      P0=~dm[n];
 219   3                                      key1=1;
 220   3                                      key1=0;
 221   3                                      P0=wx[j];
 222   3                                      key2=1;
 223   3                                      key2=0;
 224   3                                      delay();
 225   3                              }
 226   2                      }
 227   1                      else
 228   1                      {
 229   2                              for(j=15;j>0;j--)
 230   2                              {
 231   3                                      if(b[j]!=0)
 232   3                                      {
 233   4                                              if(j>=8)
 234   4                                              {
 235   5                                                      b[0]=10;
 236   5                                                      for(i=1;i<8;i++)
 237   5                                                              b[i]=0;
 238   5                                                      m=0;
 239   5                                                      break;
 240   5                                              }
 241   4                                              m=j;
C51 COMPILER V6.23a  _芲闫_                                                                03/30/2007 21:30:12 PAGE 5   

 242   4                                              break;
 243   4                                      }
 244   3                              }
 245   2                              for(j=0;j<m+1;j++)
 246   2                              {
 247   3                                      n=b[j];
 248   3                                      P0=~dm[n];
 249   3                                      key1=1;
 250   3                                      key1=0;
 251   3                                      P0=wx[j];
 252   3                                      key2=1;
 253   3                                      key2=0;
 254   3                                      delay();
 255   3                              }
 256   2                      }               
 257   1              }
 258                  void main()
 259                  {
 260   1                      flag1=0;
 261   1                      cp=0;
 262   1                      m=0;
 263   1                      flag=0xfe;
 264   1                      while(1)
 265   1                      {
 266   2                              pd();
 267   2                              display();
 268   2                      }
 269   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1045    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     63    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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