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

📄 jishuan.lst

📁 单片机应用下的计算器
💻 LST
📖 第 1 页 / 共 2 页
字号:
  11          
  12          unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  13          unsigned char a[8];
  14          unsigned char i,j;
  15          unsigned char temp,x,count;
  16          unsigned char key,k;
  17          unsigned long sun=0,chu=0,xian=0;
  18          bit wei=0;
  19          
  20          
  21          
  22          
  23          
  24          
  25          
  26          void main(void) 
  27          
  28          { 
  29   1      
  30   1        TMOD=0x01; 
  31   1      
  32   1        TH0=(65536-4000) / 256; 
  33   1      
  34   1        TL0=(65536-4000) % 256; 
  35   1      
  36   1        TR0=1; 
  37   1      
  38   1        ET0=1; 
  39   1      
  40   1        EA=1;
  41   1         
  42   1         
  43   1         
  44   1         
  45   1         
  46   1        count=0;
  47   1        
  48   1        
  49   1      
  50   1        for( k=4;;k++) 
  51   1      
  52   1          { 
  53   2      
  54   2            P3=dispbitcode[k]; 
C51 COMPILER V7.07   JISHUAN                                                               04/05/2009 16:58:31 PAGE 7   

  55   2            
  56   2            temp=P3; 
  57   2      
  58   2            temp=temp & 0x0f; 
  59   2      
  60   2            if (temp!=0x0f) 
  61   2      
  62   2              { 
  63   3      
  64   3                for(i=50;i>0;i--) 
  65   3      
  66   3                for(j=200;j>0;j--); 
  67   3      
  68   3                temp=P3; 
  69   3      
  70   3                temp=temp & 0x0f; 
  71   3      
  72   3                if (temp!=0x0f) 
  73   3      
  74   3                  { 
  75   4      
  76   4                    temp=P3; 
  77   4      
  78   4                    temp=temp & 0x0f;              
  79   4                
  80   4                    switch(temp) 
  81   4      
  82   4                      { 
  83   5      
  84   5                        case 0x0e: 
  85   5                        
  86   5                         if (k==4)
  87   5                          key=7;
  88   5      
  89   5                         if (k==5)
  90   5                          key=4;
  91   5      
  92   5                         if (k==6)
  93   5                          key=1;
  94   5      
  95   5                         if (k==7)
  96   5                          key=15;
  97   5      
  98   5                          break; 
  99   5      
 100   5                        case 0x0d:
 101   5       
 102   5                         if (k==4)
 103   5                          key=8;
 104   5      
 105   5                         if (k==5)
 106   5                          key=5;
 107   5      
 108   5                         if (k==6)
 109   5                          key=2;
 110   5      
 111   5                         if (k==7)
 112   5                          key=0; 
 113   5      
 114   5                          break; 
 115   5      
 116   5                        case 0x0b: 
C51 COMPILER V7.07   JISHUAN                                                               04/05/2009 16:58:31 PAGE 8   

 117   5                      
 118   5                         if (k==4)
 119   5                          key=9;
 120   5                      
 121   5                         if (k==5)
 122   5                          key=6;
 123   5      
 124   5                         if (k==6)
 125   5                          key=3;
 126   5      
 127   5                         if (k==7)
 128   5                          key=14; 
 129   5      
 130   5                          break; 
 131   5      
 132   5                        case 0x07: 
 133   5      
 134   5                         if (k==4)
 135   5                          key=10; 
 136   5      
 137   5                         if (k==5)
 138   5                          key=11;
 139   5      
 140   5                         if (k==6)
 141   5                          key=12;
 142   5      
 143   5                         if (k==7)
 144   5                          key=13;
 145   5      
 146   5                          break;
 147   5                        
 148   5      
 149   5      
 150   5       
 151   5      
 152   5                      }
 153   4                                      
 154   4                                       while(temp!=0x0f) 
 155   4      
 156   4                      { 
 157   5      
 158   5                        temp=P3; 
 159   5      
 160   5                        temp=temp & 0x0f;              
 161   5      
 162   5                      } 
 163   4       
 164   4                     }
 165   3                    }
 166   2                                else
 167   2                                    key=16;
 168   2                   if (k==7)
 169   2                      k=3;
 170   2                if ((key>=0) && (key<10))
 171   2                   { 
 172   3                   sun=sun*10+key;
 173   3                   xian=sun;  
 174   3                   }
 175   2                if ((key>9) && (key<15))
 176   2                   {
 177   3                    switch(count)
 178   3                                {
C51 COMPILER V7.07   JISHUAN                                                               04/05/2009 16:58:31 PAGE 9   

 179   4                      case 0:
 180   4                       count=key;
 181   4                       chu=sun;
 182   4                       sun=0;
 183   4                  
 184   4                      break;
 185   4      
 186   4                     case 10:
 187   4                      
 188   4                       count=key;
 189   4                       xian=chu/sun;
 190   4                       chu=xian;
 191   4                       sun=0;
 192   4                      break;
 193   4      
 194   4                    case 11:
 195   4                      
 196   4                       count=key;
 197   4      
 198   4                       xian=chu*sun;
 199   4      
 200   4                       chu=xian;
 201   4      
 202   4                       sun=0;
 203   4      
 204   4                      break;
 205   4      
 206   4                    case 12:
 207   4                      
 208   4                       count=key;
 209   4      
 210   4                       xian=chu-sun;
 211   4      
 212   4                       chu=xian;
 213   4      
 214   4                       sun=0;
 215   4                      break;
 216   4      
 217   4                    case 13:
 218   4                      
 219   4                       count=key;
 220   4      
 221   4                       xian=chu+sun;
 222   4      
 223   4                       chu=xian;
 224   4      
 225   4                       sun=0;
 226   4                      break;
 227   4      
 228   4                    case 14:
 229   4                      
 230   4      
 231   4                       count=key;
 232   4      
 233   4                      break;
 234   4      
 235   4                    
 236   4                                      }
 237   3                   }
 238   2                        if (key==15)
 239   2                            {
 240   3                                 count=0;
C51 COMPILER V7.07   JISHUAN                                                               04/05/2009 16:58:31 PAGE 10  

 241   3      
 242   3                       sun=0;
 243   3      
 244   3                       chu=0;
 245   3      
 246   3                       xian=0;
 247   3                                }
 248   2      
 249   2                              
 250   2       
 251   2               }
 252   1              }
 253          void t0(void) interrupt 1 using 0 
 254          
 255          { 
 256   1        TR0=0;
 257   1      
 258   1        TH0=(65536-4000) / 256; 
 259   1      
 260   1        TL0=(65536-4000) % 256;
 261   1        a[7]=xian/10000000;
 262   1        a[6]=xian%10000000/1000000;
 263   1        a[5]=xian%1000000/100000;
 264   1        a[4]=xian%100000/10000;
 265   1        a[3]=xian%10000/1000;
 266   1        a[2]=xian%1000/100;
 267   1        a[1]=xian%100/10;
 268   1        a[0]=xian%10;
 269   1        if (wei==0)
 270   1            {
 271   2                wei=1;
 272   2            while(!(a[7-x]>0))
 273   2                      {
 274   3                               
 275   3                               if (x>6)
 276   3                                   break;
 277   3                                   else
 278   3                                        x++;
 279   3                              }
 280   2                 }
 281   1        P1=0xff;
 282   1        P2=dispcode[a[7-x]];
 283   1        P1=dispbitcode[x];
 284   1        x++;
 285   1        if(x>7)
 286   1              {
 287   2          x=0;
 288   2              wei=0;
 289   2              }
 290   1              TR0=1; 
 291   1               
 292   1      } 
 293          
 294          
C51 COMPILER V7.07   JISHUAN                                                               04/05/2009 16:58:31 PAGE 11  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
dispbitcode. . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    000BH  8
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
t0 . . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
count. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
xian . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_LONG   0001H  4
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
temp . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0005H  1
chu. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_LONG   0006H  4
wei. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
key. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000AH  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
dispcode . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  11
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
sun. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_LONG   000BH  4
a. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    000FH  8
i. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0017H  1
j. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0018H  1
k. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0019H  1
x. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   001AH  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    988    ----
   CONSTANT SIZE    =     19    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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