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

📄 mima.lst

📁 电子密码锁24C02
💻 LST
📖 第 1 页 / 共 3 页
字号:
 222   2                      _nop_();
 223   2                      byte<<=1;
 224   2              }
 225   1              _nop_();
 226   1              _nop_();
 227   1              SDA=1;
 228   1              _nop_();
 229   1              _nop_();
 230   1              _nop_();
 231   1              SCL=1;
 232   1              _nop_();
 233   1              _nop_();
 234   1              _nop_();
 235   1              if(SDA==0)      ack=1;
 236   1              else    ack=0;
 237   1              SCL=0;
 238   1              _nop_();
 239   1              _nop_();
 240   1      }
 241                  
C51 COMPILER V8.08   MIMA                                                                  11/12/2007 17:13:27 PAGE 5   

 242          uchar I2C_receiveB(void)
 243          {
 244   1              uchar temp;
 245   1              uchar counter;
 246   1              temp=0;
 247   1              SDA=1;
 248   1              _nop_();
 249   1              _nop_();
 250   1              for(counter=0;counter<8;counter++)
 251   1              {
 252   2                       _nop_();
 253   2                       _nop_();
 254   2                       _nop_();
 255   2                       _nop_();
 256   2                       _nop_();
 257   2                       SCL=1;
 258   2                       _nop_();
 259   2                       _nop_();
 260   2                       if(SDA==1)     temp=(temp<<1)|0x01;
 261   2                       else   temp=temp<<1;
 262   2                       _nop_();
 263   2                       _nop_();
 264   2                       SCL=0;
 265   2                       _nop_();
 266   2                       _nop_();
 267   2                       _nop_();
 268   2              }
 269   1              _nop_();
 270   1              _nop_();
 271   1              return(temp);
 272   1      }
 273          
 274          /*bit I2C_write_byte(uchar byte,uchar address)
 275          {
 276                  I2C_sendB(address);
 277                  if(ack=0)       
 278                  {
 279                          I2C_stop();
 280                          return(0);
 281                  }
 282                  else    I2C_sendB(byte);  */
 283                  
 284          
 285          bit I2C_send_string(uchar *string,uchar no,uchar address)
 286          {
 287   1              uchar counter;
 288   1              for(counter=0;counter<no;counter++)
 289   1              {
 290   2                      I2C_start();
 291   2                      I2C_sendB(C02_write);
 292   2                      if(ack==0) return(0);
 293   2                      I2C_sendB(address+counter);
 294   2                      if(ack==0) return(0);
 295   2                      I2C_sendB(string[counter]);
 296   2                      I2C_stop();
 297   2                      delayms(20);            
 298   2              }
 299   1              return(1);
 300   1      }
 301          
 302          bit I2C_receive_string(uchar *string,uchar no,uchar address)
 303          {
C51 COMPILER V8.08   MIMA                                                                  11/12/2007 17:13:27 PAGE 6   

 304   1              uchar counter;
 305   1              for(counter=0;counter<no;counter++)
 306   1              {
 307   2                      I2C_start();
 308   2                      I2C_sendB(C02_write);
 309   2                      if(ack==0) return(0);
 310   2                      I2C_sendB(address+counter);
 311   2                      if(ack==0) return(0);
 312   2                      I2C_start();
 313   2                      I2C_sendB(C02_read);
 314   2                      if(ack==0) return(0);
 315   2                      *(string+counter)=I2C_receiveB();
 316   2                      I2C_no_ackownledge();
 317   2                      I2C_stop();
 318   2              }
 319   1      }
 320          
 321          uchar get_key()
 322          {
 323   1              uchar row_code;
 324   1              uchar col_code;
 325   1              P1=0xf0;
 326   1              if(P1!=0xf0)
 327   1              {
 328   2                      delayms(10);
 329   2                      if(P1!=0xf0)
 330   2                      {
 331   3                              row_code=0xfe;
 332   3                              while(row_code!=0x7f)
 333   3                              {       
 334   4                                      P1=row_code;
 335   4                                      if(P1!=row_code)
 336   4                                      {
 337   5                                              col_code=(P1&0xf0)|0x0f;
 338   5                                              return( (~col_code)|(~row_code));
 339   5                                      }
 340   4                                      row_code=((row_code<<1)|0x01);
 341   4                              }
 342   3                      }
 343   2              }
 344   1              return(0x00);
 345   1      }
 346          
 347          void convert_code(uchar *string)
 348          {
 349   1              uchar counter=0;
 350   1              for(counter=0;counter<6;counter++)
 351   1              {
 352   2                      switch(*string)
 353   2                      {
 354   3                              case no0:
 355   3                                                      *string=0x00;
 356   3                                                      break;
 357   3                              case no1:
 358   3                                                      *string=0x01;
 359   3                                                      break;
 360   3                              case no2:
 361   3                                                      *string=0x02;
 362   3                                                      break;
 363   3                              case no3:
 364   3                                                      *string=0x03;
 365   3                                                      break;
C51 COMPILER V8.08   MIMA                                                                  11/12/2007 17:13:27 PAGE 7   

 366   3                              case no4:
 367   3                                                      *string=0x04;
 368   3                                                      break;
 369   3                              case no5:
 370   3                                                      *string=0x05;
 371   3                                                      break;
 372   3                              case no6:
 373   3                                                      *string=0x06;
 374   3                                                      break;
 375   3                              case no7:
 376   3                                                      *string=0x07;
 377   3                                                      break;
 378   3                              case no8:
 379   3                                                      *string=0x08;
 380   3                                                      break;
 381   3                              case no9:
 382   3                                                      *string=0x09;
 383   3                                                      break;
 384   3                              default:
 385   3                                                      break;
 386   3                      }
 387   2                      string++;                               
 388   2              }
 389   1      }
 390          
 391          bit compare_string(uchar *string1,uchar *string2)
 392          {
 393   1              uchar counter;
 394   1              for(counter=0;counter<6;counter++)
 395   1              {
 396   2                      if(string1[counter]!=string2[counter]) return(0);
 397   2              }
 398   1              return(1);
 399   1      }
 400          
 401          uchar step_choose(void)
 402          {
 403   1              unsigned int i;
 404   1              uchar key;
 405   1              do{
 406   2                      lcm_write_cmd(0x01);
 407   2                      lcm_write_cmd(0x06);
 408   2                      lcm_setxy(0,1);
 409   2                      lcm_write_string("input password");
 410   2                      lcm_setxy(0,2);
 411   2                      lcm_write_string("please press 1");
 412   2                      for(i=0;i<30000;i++)
 413   2                      {
 414   3                              key=get_key();
 415   3                              if((key==no1)||(key==no2))      break;
 416   3                      }
 417   2                      if((key!=no1)&&(key!=no2))
 418   2                      {
 419   3                              lcm_write_cmd(0x01);
 420   3                              lcm_write_cmd(0x06);
 421   3                              lcm_setxy(0,1);
 422   3                              lcm_write_string("change password");
 423   3                              lcm_setxy(0,2);
 424   3                              lcm_write_string("please press 2");
 425   3                              for(i=0;i<30000;i++)
 426   3                              {
 427   4                                      key=get_key();
C51 COMPILER V8.08   MIMA                                                                  11/12/2007 17:13:27 PAGE 8   

 428   4                                      if((key==no1)||(key==no2))      break;
 429   4                              }
 430   3                      }
 431   2                      }
 432   1              while((key!=no1)&&(key!=no2));
 433   1              return(key);
 434   1      }
 435          
 436          bit input_password(uchar *password)
 437          {
 438   1              uchar counter;
 439   1              uchar key;
 440   1              lcm_setxy(0,2);
 441   1              for(counter=0;counter<7;counter++)
 442   1              {
 443   2                      longdelay(3);
 444   2                      if(counter<6)
 445   2                      {
 446   3                              do{
 447   4                                      key=get_key();
 448   4                                 }
 449   3                          while(key==0x00);

⌨️ 快捷键说明

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