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

📄 mima.lst

📁 密码锁
💻 LST
字号:
C51 COMPILER V7.07   MIMA                                                                  04/10/2009 11:07:52 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE MIMA
OBJECT MODULE PLACED IN mima.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mima.c DEBUG OBJECTEXTEND

stmt level    source

   1            #include<reg51.h>
   2          
   3          
   4          
   5                  unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 
   6          
   7                                        0xef,0xdf,0xbf,0x7f}; 
   8          
   9          unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 
  10          
  11                                         0x6d,0x7d,0x07,0x7f,0x6f, 
  12          
  13                                         0x77,0x7c,0x39,0x5e,0x79,0x71, 
  14          
  15                                         0x00,0x40,0x73,0xff};
  16          unsigned char k,keycount=0,flashcount=0,errorcount=0,num_bit=6; 
  17          unsigned char get_num[6]={0};
  18          unsigned char init_num[6]={1,2,3,4,5,6};
  19          bit rightflag=0,alarmflag=0,errorflag=0,keyoverflag=0;
  20          unsigned char keys;
  21          sbit P1_6=P1^6;
  22          sbit P1_7=P1^7;
  23          sbit P0_7=P0^7;
  24          
  25          
  26          
  27          
  28          
  29          
  30          
  31          
  32          
  33          
  34          
  35          void main(void) 
  36          
  37          { 
  38   1      
  39   1      
  40   1        unsigned char read_keys(unsigned char m);
  41   1        void in_keys(unsigned char x);
  42   1        void check_keys();
  43   1        void del_keys();
  44   1        void change_keys();  
  45   1      
  46   1      
  47   1      
  48   1        TMOD=0x01; 
  49   1      
  50   1        TH0=(65536-4000) / 256; 
  51   1      
  52   1        TL0=(65536-4000) % 256; 
  53   1      
  54   1        TR0=1; 
  55   1      
C51 COMPILER V7.07   MIMA                                                                  04/10/2009 11:07:52 PAGE 2   

  56   1        ET0=1; 
  57   1      
  58   1        EA=1;
  59   1        
  60   1        
  61   1      
  62   1      
  63   1      
  64   1      for ( k=4;;k++)
  65   1      {
  66   2        keys=read_keys(k);
  67   2        if ((keys>=0) && (keys<10))
  68   2           {
  69   3            if(keycount<6)
  70   3                in_keys(keys);
  71   3            else
  72   3               keyoverflag=1; 
  73   3           }
  74   2          else if (keys==14)
  75   2                check_keys();
  76   2          else if (keys==12)
  77   2               {
  78   3                if (keycount>0)
  79   3                     del_keys();
  80   3                   else
  81   3                       keyoverflag=1;       
  82   3               }
  83   2          else if (keys==13)
  84   2               {
  85   3                if (rightflag==1)
  86   3                    change_keys();
  87   3               }
  88   2          else if (keys==10)
  89   2               {
  90   3                rightflag=0;
  91   3                errorflag=0;
  92   3                keycount=0;
  93   3                
  94   3               }
  95   2          else if (keys==11)
  96   2               {
  97   3                alarmflag=0;
  98   3                errorflag=0;
  99   3                rightflag=0;
 100   3               }
 101   2          if (k==7)
 102   2             k=3;
 103   2      }
 104   1      }
 105          
 106          
 107          
 108          void t0(void) interrupt 1 using 0 
 109          
 110          { 
 111   1        TR0=0;
 112   1      
 113   1        TH0=(65536-4000) / 256; 
 114   1      
 115   1        TL0=(65536-4000) % 256;
 116   1      
 117   1        if (rightflag==1)
C51 COMPILER V7.07   MIMA                                                                  04/10/2009 11:07:52 PAGE 3   

 118   1           P1_7=1;
 119   1           else
 120   1               P1_7=0;
 121   1        if (errorflag==1)
 122   1           P0_7=~P0_7;
 123   1               else 
 124   1                   P0_7=0;
 125   1        if (alarmflag==1)
 126   1           {
 127   2            P1_6=~P1_6;
 128   2           }
 129   1               else
 130   1                   P1_6=0;
 131   1        if (keycount==0)
 132   1           {
 133   2            P1=P1 | 0x3f;
 134   2            P2=dispcode[0];
 135   2            P1=P1 & dispbitcode[0]; 
 136   2           }
 137   1           else 
 138   1               
 139   1                {
 140   2                 P1=P1 |0X3f;
 141   2                 P2=dispcode[8];
 142   2                 P1=P1 & dispbitcode[flashcount];
 143   2                 flashcount++;
 144   2                         if (flashcount>=keycount)
 145   2                     flashcount=0;
 146   2                }
 147   1        
 148   1        
 149   1        TR0=1;
 150   1      
 151   1       
 152   1           
 153   1      }
 154          
 155              
 156               
 157            
 158          
 159            
 160          unsigned char read_keys(unsigned char m)  
 161            { 
 162   1            unsigned char temp,i,j,key;
 163   1             
 164   1            P3=dispbitcode[m]; 
 165   1            
 166   1            temp=P3; 
 167   1      
 168   1            temp=temp & 0x0f; 
 169   1      
 170   1            if (temp!=0x0f) 
 171   1      
 172   1              { 
 173   2      
 174   2                for(i=50;i>0;i--) 
 175   2      
 176   2                for(j=200;j>0;j--); 
 177   2      
 178   2                temp=P3; 
 179   2      
C51 COMPILER V7.07   MIMA                                                                  04/10/2009 11:07:52 PAGE 4   

 180   2                temp=temp & 0x0f; 
 181   2      
 182   2                if (temp!=0x0f) 
 183   2      
 184   2                  { 
 185   3      
 186   3                    temp=P3;
 187   3      
 188   3                    P1_6=~P1_6; 
 189   3      
 190   3                    temp=temp & 0x0f;              
 191   3                
 192   3                    switch(temp) 
 193   3      
 194   3                      { 
 195   4      
 196   4                        case 0x0e: 
 197   4                        
 198   4                         if (m==4)
 199   4                          key=7;
 200   4      
 201   4                         if (m==5)
 202   4                          key=4;
 203   4      
 204   4                         if (m==6)
 205   4                          key=1;
 206   4      
 207   4                         if (m==7)
 208   4                          key=15;
 209   4      
 210   4                          break; 
 211   4      
 212   4                        case 0x0d:
 213   4       
 214   4                         if (m==4)
 215   4                          key=8;
 216   4      
 217   4                         if (m==5)
 218   4                          key=5;
 219   4      
 220   4                         if (m==6)
 221   4                          key=2;
 222   4      
 223   4                         if (m==7)
 224   4                          key=0; 
 225   4      
 226   4                          break; 
 227   4      
 228   4                        case 0x0b: 
 229   4                      
 230   4                         if (m==4)
 231   4                          key=9;
 232   4                      
 233   4                         if (m==5)
 234   4                          key=6;
 235   4      
 236   4                         if (m==6)
 237   4                          key=3;
 238   4      
 239   4                         if (m==7)
 240   4                          key=14; 
 241   4      
C51 COMPILER V7.07   MIMA                                                                  04/10/2009 11:07:52 PAGE 5   

 242   4                          break; 
 243   4      
 244   4                        case 0x07: 
 245   4      
 246   4                         if (m==4)
 247   4                          key=10; 
 248   4      
 249   4                         if (m==5)
 250   4                          key=11;
 251   4      
 252   4                         if (m==6)
 253   4                          key=12;
 254   4      
 255   4                         if (m==7)
 256   4                          key=13;
 257   4      
 258   4                          break;
 259   4                        
 260   4      
 261   4      
 262   4       
 263   4      
 264   4                      }
 265   3                                      
 266   3                                       while(temp!=0x0f) 
 267   3      
 268   3                      { 
 269   4      
 270   4                        temp=P3; 
 271   4      
 272   4                        temp=temp & 0x0f;              
 273   4      
 274   4                      } 
 275   3      
 276   3      
 277   3                     }
 278   2                    }
 279   1                                else
 280   1                                    key=16;
 281   1            return key;
 282   1        }
 283          
 284          
 285          
 286          
 287          void in_keys(unsigned char x)
 288               {
 289   1             get_num[keycount]=x;
 290   1              keycount++;
 291   1           }
 292          
 293          
 294          
 295          void check_keys()
 296            {
 297   1         unsigned char i=0;
 298   1         while (i<keycount)
 299   1         {
 300   2          if (get_num[i]==init_num[i])
 301   2             i++;
 302   2            else
 303   2                break;
C51 COMPILER V7.07   MIMA                                                                  04/10/2009 11:07:52 PAGE 6   

 304   2         }
 305   1          if (i==num_bit)
 306   1            {
 307   2             rightflag=1;
 308   2             errorflag=0;
 309   2            }
 310   1             else
 311   1                 {
 312   2                  errorflag=1;
 313   2                  rightflag=0;
 314   2                  errorcount++;
 315   2                 }  
 316   1          if (errorcount==3)
 317   1             {
 318   2              alarmflag=1;
 319   2              errorcount=0;
 320   2             }
 321   1          keycount=0;
 322   1        }
 323          
 324          
 325          void del_keys()
 326            {
 327   1         keycount--;
 328   1        }
 329          
 330          
 331          void change_keys()
 332           {
 333   1         unsigned char num;
 334   1        for ( num=0;num<keycount;num++)
 335   1              init_num[num]=get_num[num];
 336   1        num_bit=keycount;
 337   1        keycount=0;
 338   1      
 339   1      
 340   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    511    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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