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

📄 pwlock.lst

📁 Very a useful monolithic machine source program , range are broad , the pragmatism is strong
💻 LST
📖 第 1 页 / 共 2 页
字号:
 174          {
 175   1              uchar j,key;
 176   1      
 177   1              P2 = 0x0;                                                       // 关闭数码管显示
 178   1              
C51 COMPILER V8.09   PWLOCK                                                                05/23/2008 11:40:30 PAGE 4   

 179   1              TMOD = 0x11;                                            // T0,T1工作方式1
 180   1      
 181   1              /* 2ms 定时设置 */
 182   1              TH0 = -2000/256;
 183   1              TL0 = 2000%256;
 184   1      
 185   1              /* 50ms 定时设置 */
 186   1              TH1 = -50000/256;
 187   1              TL1 = -50000%256;
 188   1              
 189   1              /* 启动计数器0,关闭计数器1 */
 190   1              TR0 = 1;
 191   1              ET0 = 1;
 192   1              TR1 = 0;
 193   1              ET1 = 1;
 194   1              EA = 1;
 195   1      
 196   1              count = 0;                                              // 初始没有输入密码,计数器设为0
 197   1              enterflag = 0;                                  // 没有按下确认键
 198   1              pwflag = 0;                                             // 密码标志先置为0
 199   1          green = 1;                                          // 绿灯不亮
 200   1              red = 1;                                                // 红灯不亮
 201   1              
 202   1              /* 假设内定密码为937602 */
 203   1              pw[0] = 9;
 204   1              pw[1] = 3;
 205   1              pw[2] = 7;
 206   1              pw[3] = 6;
 207   1              pw[4] = 0;
 208   1              pw[5] = 2;
 209   1              
 210   1              digbit = 0x01;                                  // 从第一位数码管开始动态扫描
 211   1      
 212   1              /* 刚加电时,显示888888 */
 213   1              for (j=0;j<6;j++)
 214   1                      wordbuf[j] = 8;
 215   1      
 216   1              showflag = 1;                                   // 打开数码管显示
 217   1      
 218   1              while(1)
 219   1          {
 220   2                      key = keyscan();                                        // 调用键盘扫描函数
 221   2                      switch(key)
 222   2                      {
 223   3                      case 0x11:                                              // 1行1列,数字0
 224   3                                      if (count<6)
 225   3                                      {
 226   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F”
 227   4                                              pwbuf[count] = 0;
 228   4                                              count++;
 229   4                                      }
 230   3                                      break;
 231   3                              case 0x21:                                              // 1行2列,数字1
 232   3                                      if (count<6)
 233   3                                      {
 234   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 235   4                                              pwbuf[count] = 1;
 236   4                                              count++;
 237   4                                      }
 238   3                                      break;                  
 239   3                              case 0x41:                                              // 1行3列,数字2
 240   3                                      if (count<6)
C51 COMPILER V8.09   PWLOCK                                                                05/23/2008 11:40:30 PAGE 5   

 241   3                                      {
 242   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 243   4                                              pwbuf[count] = 2;
 244   4                                              count++;
 245   4                                      }
 246   3                                      break;
 247   3                      case 0x81:                                              // 1行4列,数字3
 248   3                                      if (count<6)
 249   3                                      {
 250   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 251   4                                              pwbuf[count] = 3;
 252   4                                              count++;
 253   4                                      }
 254   3                                      break;
 255   3                              case 0x12:                                              // 2行1列,数字4
 256   3                                      if (count<6)
 257   3                                      {
 258   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 259   4                                              pwbuf[count] = 4;
 260   4                                              count++;
 261   4                                      }
 262   3                                      break;
 263   3                              case 0x22:                                              // 2行2列,数字5
 264   3                                      if (count<6)
 265   3                                      {
 266   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 267   4                                              pwbuf[count] = 5;
 268   4                                              count++;
 269   4                                      }
 270   3                                      break;
 271   3                              case 0x42:                                              // 2行3列,数字6
 272   3                                      if (count<6)
 273   3                                      {
 274   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 275   4                                              pwbuf[count] = 6;
 276   4                                              count++;
 277   4                                      }
 278   3                                      break;
 279   3                              case 0x82:                                              // 2行4列,数字7
 280   3                                      if (count<6)
 281   3                                      {
 282   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 283   4                                              pwbuf[count] = 7;
 284   4                                              count++;
 285   4                                      }
 286   3                                      break;
 287   3                              case 0x14:                                              // 3行1列,数字8
 288   3                                      if (count<6)
 289   3                                      {
 290   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 291   4                                              pwbuf[count] = 8;
 292   4                                              count++;
 293   4                                      }
 294   3                                      break;
 295   3                              case 0x24:                                              // 3行2列,数字9
 296   3                                      if (count<6)
 297   3                                      {
 298   4                                              wordbuf[count] = 0x0f;  // 对应密码位上显示“F"
 299   4                                              pwbuf[count] = 9;
 300   4                                              count++;
 301   4                                      }
 302   3                                      break;
C51 COMPILER V8.09   PWLOCK                                                                05/23/2008 11:40:30 PAGE 6   

 303   3                              case 0x44:                                              // 3行3列,确认键
 304   3                                      enterflag = 1;                          // 确认键按下
 305   3                                      if (count==6)                           // 只有输入6个密码后按确认键才作密码比较
 306   3                                              pwflag = pwcmp();
 307   3                                      else                                            
 308   3                                              pwflag = 0;                             // 否则直接pmflag赋0
 309   3                                      break;
 310   3                              case 0x84:                                              // 3行4列,取消键
 311   3                                      count = 0;                                      // 密码计数清零
 312   3                                      for (j=0;j<6;j++)
 313   3                                      {
 314   4                                              wordbuf[j] = 8;                 // 数码管显示888888
 315   4                                              pwbuf[j] = 0x0f;                // 用FFFFFF清除已经输入的密码
 316   4                                      }
 317   3                                      break;
 318   3                              default:break;
 319   3                      }
 320   2      
 321   2                      if (enterflag==1)                                       // 如果按下确认键
 322   2                      {
 323   3                              enterflag = 0;                                  // 标志位置回0
 324   3                              count = 0;                                              // 密码位计数器清零
 325   3                              for (j=0;j<6;j++)
 326   3                                      pwbuf[j] = 0x0f;                        // 用FFFFFF清除已经输入的密码                   
 327   3                              showflag = 0;                                   // 关闭数码管显示
 328   3                              TR1 = 1;                                                // 计数器1开始计数
 329   3                              t1count = 0;                                    // 定时器1由50ms累积到1s所用的计数器
 330   3                              if (pwflag==1)                  
 331   3                                      green = 0;                                      // 绿灯亮
 332   3                              else                                                    
 333   3                                      red = 0;                                        // 红灯亮               
 334   3                      }
 335   2              }    
 336   1      }
 337          
 338          
*** WARNING C316 IN LINE 338 OF PWLock.c: unterminated conditionals


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    916    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     21    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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