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

📄 new66.lst

📁 此题目是通过键盘来实现密码输入是否正确
💻 LST
字号:
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE NEW66
OBJECT MODULE PLACED IN new66.OBJ
COMPILER INVOKED BY: D:\学习软件\单片机\keil\C51\BIN\C51.EXE new66.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<absacc.h>
   3          //以下8个字节存放8位数码管的段码
   4          int LED_BIT_1;
   5          int LED_BIT_2;
   6          int LED_BIT_3;
   7          int LED_BIT_4;
   8          int LED_BIT_5;
   9          int LED_BIT_6;
  10          int LED_BIT_7;
  11          int LED_BIT_8;
  12          //以下6个字节存放初始密码
  13          int WORD[6] = {1,2,3,4,5,6};
  14          //以下6个字节存放用户输入的6位密码
  15          int KEY[6] = {0};
  16          
  17          int CNT_A;
  18          int CNT_B;
  19          int KEY_CNT;    //已输出的密码位数
  20          int LINE;               //按键行号
  21          int ROW;                //按键列号
  22          int VAL;                //键值
  23          
  24          int FLAG = 1;
  25          sbit P1_0 = P1^0;
  26          sbit P1_7 = P1^7;
  27          
  28          sbit P2_0 = P2^0;
  29          sbit P2_1 = P2^1;
  30          sbit P2_2 = P2^2;
  31          sbit P2_3 = P2^3;
  32          sbit P2_4 = P2^4;
  33          sbit P2_5 = P2^5;
  34          sbit P2_6 = P2^6;
  35          sbit P2_7 = P2^7;
  36          
  37          sbit P3_0 = P3^0;
  38          sbit P3_1 = P3^1;
  39          sbit P3_2 = P3^2;
  40          sbit P3_3 = P3^3;
  41          sbit P3_4 = P3^4;
  42          sbit P3_5 = P3^5;
  43          sbit P3_6 = P3^6;
  44          
  45          void FINI()
  46          {       
  47   1              ;//Nothing
  48   1      }
  49          
  50          void DLY_S()
  51          {
  52   1              int i = 0;
  53   1              for (i=0; i<950; i++)
  54   1              {
  55   2                      ;
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 2   

  56   2              }
  57   1      }
  58          
  59          void DLY_L()
  60          {
  61   1              int i = 0;
  62   1              int k = 0;
  63   1              for (i=0; i<1000; i++)
  64   1              {
  65   2                      for (k=0; k<940; k++)
  66   2                      {
  67   3                              ;
  68   3                      }
  69   2              }
  70   1      }
  71          
  72          //段码,输入密码左移子程序
  73          void SHIFTL()
  74          {
  75   1              LED_BIT_6 = LED_BIT_5;
  76   1              LED_BIT_5 = LED_BIT_4;
  77   1              LED_BIT_4 = LED_BIT_3;
  78   1              LED_BIT_3 = LED_BIT_2;
  79   1              LED_BIT_2 = LED_BIT_1;
  80   1              LED_BIT_1 = 0x40;
  81   1              KEY[5] = KEY[4];
  82   1              KEY[4] = KEY[3];
  83   1              KEY[3] = KEY[2];
  84   1              KEY[2] = KEY[1];
  85   1              KEY[1] = KEY[0];
  86   1              KEY[0] = VAL;   
  87   1      }
  88          
  89          //段码,输入密码右移子程序
  90          void SHIFTR()
  91          {
  92   1              LED_BIT_1 = LED_BIT_2;
  93   1              LED_BIT_2 = LED_BIT_3;
  94   1              LED_BIT_3 = LED_BIT_4;
  95   1              LED_BIT_4 = LED_BIT_5;
  96   1              LED_BIT_5 = LED_BIT_6;
  97   1              LED_BIT_6 = 0;
  98   1              KEY[0] = KEY[1];
  99   1              KEY[1] = KEY[2];
 100   1              KEY[2] = KEY[3];
 101   1              KEY[3] = KEY[4];
 102   1              KEY[4] = KEY[5];
 103   1              KEY[5] = 0;
 104   1      }
 105          
 106          void ALARM_1()
 107          {       
 108   1              TR0 = 1;
 109   1              while (1 == TR0)
 110   1              {       
 111   2                      ;
 112   2              }
 113   1      }
 114          
 115          void ALARM_2()
 116          {       
 117   1              TR0 = 1;
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 3   

 118   1              while (1 == TR0)
 119   1              {       
 120   2                      ;
 121   2              }
 122   1              DLY_L();
 123   1      }
 124          //以下为数码显示子程序
 125          void DISP()
 126          {
 127   1              P2_7 = 0;
 128   1              P0 =  LED_BIT_8;
 129   1              DLY_S();
 130   1              P2_7 = 1;
 131   1              P2_6 = 0;
 132   1              P0 = LED_BIT_7;
 133   1              DLY_S();
 134   1              P2_6 = 1;
 135   1              P2_5 = 0;
 136   1              P0 = LED_BIT_6;
 137   1              DLY_S();
 138   1              P2_5 = 1;
 139   1              P2_4 = 0;
 140   1              P0 = LED_BIT_5;
 141   1              DLY_S();
 142   1              P2_4 = 1;
 143   1              P2_3 = 0;
 144   1              P0 = LED_BIT_4;
 145   1              DLY_S();
 146   1              P2_3 = 1;
 147   1              P2_2 = 0;
 148   1              P0 = LED_BIT_3;
 149   1              DLY_S();
 150   1              P2_2 = 1;
 151   1              P2_1 = 0;
 152   1              P0 = LED_BIT_2;
 153   1              DLY_S();
 154   1              P2_1 = 1;
 155   1              P2_0 = 0;
 156   1              P0 = LED_BIT_1;
 157   1              DLY_S();
 158   1              P2_0 = 1;
 159   1      }
 160          
 161          //定时器中断服务程序,用于声音报警
 162          void clk()interrupt 1  
 163          {
 164   1              P1_7 = 0;
 165   1              TH0 = (65536-700) / 256;
 166   1              TL0 = (65536-700) % 256;
 167   1              CNT_A++;
 168   1              if (30 == CNT_A)
 169   1              {
 170   2                      CNT_A = 0;
 171   2                      CNT_B++;
 172   2                      if (20 == CNT_B)
 173   2                      {
 174   3                              CNT_A = 0;
 175   3                              CNT_B = 0;
 176   3                              TR0 = 0;
 177   3                      }
 178   2              }
 179   1      }
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 4   

 180          
 181          void CALCU()
 182          {
 183   1              int i;
 184   1              VAL = LINE * 3 + ROW;
 185   1              if (0X0A == VAL)
 186   1              {
 187   2                      if (0 == KEY_CNT)
 188   2                      {
 189   3                              ALARM_1();
 190   3                              FLAG = 0;
 191   3                              return;
 192   3                      }
 193   2                      SHIFTR();
 194   2                      KEY_CNT--;
 195   2                      
 196   2                      while (1)
 197   2                      {
 198   3                              DISP();
 199   3                              
 200   3                              if ((0X0F==P3) || (0XF0==P3))
 201   3                              {
 202   4                                      return;
 203   4                              }
 204   3      
 205   3                      }
 206   2              }
 207   1              if (0X0B == VAL)
 208   1              {
 209   2                      if (6 == KEY_CNT)
 210   2                      {
 211   3                              for (i=0; i<6; i++)
 212   3                              {
 213   4                                 if (KEY[i]!=WORD[i])
 214   4                                 {
 215   5                                              ALARM_2();
 216   5                                              FLAG = 0;
 217   5                                              return;
 218   5                                 }
 219   4                              }
 220   3                              P1_0 = 0;
 221   3                              DLY_L();
 222   3                              FINI();
 223   3                              FLAG = 0;
 224   3                              return;
 225   3                      }
 226   2                      ALARM_1();
 227   2                      FLAG = 0;
 228   2                      return;
 229   2              }
 230   1              KEY_CNT++;
 231   1      
 232   1              if (7 == KEY_CNT)
 233   1              {       
 234   2                      ALARM_1();
 235   2                      while(1)
 236   2                      {
 237   3                              DISP();
 238   3                              if ((0X0F==P3) || (0XF0==P3))
 239   3                              {
 240   4                                      FLAG = 0;
 241   4                                      return; 
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 5   

 242   4                              }
 243   3                      }
 244   2                      FLAG = 0;
 245   2                      return; 
 246   2              }
 247   1              SHIFTL();
 248   1              while(1)
 249   1              {
 250   2                      DISP();
 251   2                      if ((0X0F==P3) || (0XF0==P3))
 252   2                      {
 253   3                              return; 
 254   3                      }
 255   2              }
 256   1              return;
 257   1      }
 258          
 259          void RSCAN()
 260          {
 261   1              P3 = 0X0F;
 262   1              if (1 == P3_4)
 263   1              {
 264   2                      ROW = 0;
 265   2                      CALCU();
 266   2              }
 267   1      
 268   1              if (1 == P3_5)
 269   1              {
 270   2                      ROW = 1;
 271   2                      CALCU();
 272   2              }
 273   1      
 274   1              if (1 == P3_6)
 275   1              {
 276   2                      ROW = 2;
 277   2                      CALCU();
 278   2              }
 279   1      }
 280          
 281          void LSCAN()
 282          {
 283   1              P3 = 0XF0;
 284   1              if (1 == P3_0)
 285   1              {
 286   2                      DLY_S();
 287   2                      if (1 == P3_0)
 288   2                      {
 289   3                              LINE = 0;
 290   3                              RSCAN();
 291   3                      }
 292   2              }
 293   1      
 294   1              if (1 == P3_1)
 295   1              {
 296   2                      DLY_S();
 297   2                      if (1 == P3_1)
 298   2                      {
 299   3                              LINE = 1;
 300   3                              RSCAN();
 301   3                      }
 302   2              }
 303   1      
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 6   

 304   1              if (1 == P3_2)
 305   1              {
 306   2                      DLY_S();
 307   2                      if (1 == P3_2)
 308   2                      {
 309   3                              LINE = 2;
 310   3                              RSCAN();
 311   3                      }
 312   2              }
 313   1      
 314   1              if (1 == P3_3)
 315   1              {
 316   2                      DLY_S();
 317   2                      if (1 == P3_3)
 318   2                      {
 319   3                              LINE = 3;
 320   3                              RSCAN();
 321   3                      }
 322   2              }
 323   1      }
 324          
 325          void main()
 326          {
 327   1              while (1)
 328   1              {
 329   2                      FLAG = 1;
 330   2                      CNT_A = 0;
 331   2                      CNT_B = 0;
 332   2                      KEY_CNT = 0;
 333   2                      LINE = 0;
 334   2                      ROW = 0;
 335   2                      VAL = 0;
 336   2                      P1_0 = 1;
 337   2                      LED_BIT_1 = 0;
 338   2                      LED_BIT_2 = 0;
 339   2                      LED_BIT_3 = 0;
 340   2                      LED_BIT_4 = 0;
 341   2                      LED_BIT_5 = 0;
 342   2                      LED_BIT_6 = 0;
 343   2                      LED_BIT_7 = 0X79;
 344   2                      LED_BIT_8 = 0X73;
 345   2              
 346   2                      KEY[0] = 0;
 347   2                      KEY[1] = 0;
 348   2                      KEY[2] = 0;
 349   2                      KEY[3] = 0;
 350   2                      KEY[4] = 0;
 351   2                      KEY[5] = 0;
 352   2              
 353   2                      WORD[0] = 6;
 354   2                      WORD[1] = 5;
 355   2                      WORD[2] = 4;
 356   2                      WORD[3] = 3;
 357   2                      WORD[4] = 2;
 358   2                      WORD[5] = 1;
 359   2              
 360   2                      TMOD = 1;
 361   2                      TH0 = (65536-700) / 256;
 362   2                      TL0 = (65536-700) % 256;        
 363   2                      IE = 0X82;
 364   2              
 365   2                      do
C51 COMPILER V8.05a   NEW66                                                                11/26/2008 00:43:25 PAGE 7   

 366   2                      {
 367   3                              DISP();
 368   3              
 369   3                              LSCAN();
 370   3                      }while(1 == FLAG);
 371   2              }
 372   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    807    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     54    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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