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

📄 main.lst

📁 毕业设计—红外遥控电子密码锁
💻 LST
📖 第 1 页 / 共 2 页
字号:
 252   2        if(js)
 253   2        {
 254   3         js=0;
 255   3         if(buffer[2]<13)
 256   3         {
 257   4          if(i<16) 
 258   4              {
 259   5               mima_temp[i]=buffer[2];
 260   5               i++; 
 261   5               show(i);
 262   5              }
 263   4         }
 264   3         else
 265   3         {
 266   4          if(buffer[2]==13&&i)  i--,show(i);       //退格
 267   4              if(buffer[2]==14) 
 268   4              {
 269   5               if(ks) ks=0;
 270   5               i=0,show(i);             //清屏
 271   5          }
 272   4              if(buffer[2]==15&&ks)    //修改密码
 273   4                {
 274   5                  mmxg=1;
 275   5                      i=0;
 276   5                      show(i);
 277   5                }
 278   4              if(buffer[2]==16) 
 279   4              {
 280   5               i=0;
 281   5               if(mmxg)                //密码修改
 282   5               {
 283   6                if(mmxg==2)
 284   6                {
 285   7                 s=0;
 286   7                 if(mima1[16]==mima_temp[16]) 
 287   7                 {
 288   8                  s++;
 289   8                  for(j=0;j<mima_temp[16];j++)
 290   8                      {
 291   9                   if(mima1[j]==mima_temp[j])
 292   9                       {
 293  10                        s++;
 294  10                       }
 295   9                  }
 296   8                 }
 297   7                 mmxg=0;
 298   7                 if(s>mima1[16]) 
 299   7                 {
 300   8                      for(j=0;j<17;j++)
 301   8                      {
 302   9                       mima[j]=mima1[j];
 303   9      //               send(mima[j]);
C51 COMPILER V8.02   MAIN                                                                  05/17/2012 10:39:23 PAGE 6   

 304   9                      }
 305   8                      show(110); 
 306   8                      eeprom_wr(); 
 307   8                 }
 308   7                 else show(119);
 309   7                }
 310   6                if(mmxg==1)
 311   6                {  
 312   7                  for(j=0;j<17;j++)
 313   7                  mima1[j]=mima_temp[j];
 314   7                      mmxg=2;
 315   7                  show(i);
 316   7                }
 317   6                
 318   6               }
 319   5               else  k=mmyz(),i=0;
 320   5              }
 321   4         }
 322   3         mima_temp[16]=i;                                      //密码长度
 323   3       //  send(buffer[2]);
 324   3      //  send(mima_temp[16]);
 325   3        }
 326   2        if(k==1) ks=1,show(110);
 327   2        if(k==2) ks=0,show(119),wrong++;
 328   2        k=0;
 329   2        if(ks) led=0;
 330   2        else led=1;
 331   2        if(wrong>2) wrong=0,bp=100; 
 332   2       }
 333   1      
 334   1      }
 335                                                          
 336          
 337          
 338          
 339          
 340          /************外部中断1**********************/
 341          void Int1(void) interrupt 2  using 1
 342          {
 343   1       uchar dh;
 344   1       uchar k;
 345   1       TR0=0;
 346   1       dh=TH0;
 347   1      // dl=TL0;
 348   1       TL0=0;
 349   1       TH0=0;
 350   1       TR0=1;
 351   1       if(dh>25&&dh<100) n=33;
 352   1       else if(dh>2&&dh<5) k=0;
 353   1       else if(dh>6&&dh<12) k=1;
 354   1       else n=0;
 355   1       if(n)  
 356   1        {
 357   2         dat=dat<<1;
 358   2         dat+=k;
 359   2         if(n==25) buffer[0]=dat,dat=0;
 360   2         if(n==17) buffer[1]=dat,dat=0;
 361   2         if(n==9) buffer[2]=dat,dat=0;
 362   2         if(n==1) buffer[3]=dat,dat=0;
 363   2         n--;
 364   2              if(!n)
 365   2          {
C51 COMPILER V8.02   MAIN                                                                  05/17/2012 10:39:23 PAGE 7   

 366   3                if(!(buffer[2]&buffer[3]))  //数据校验
 367   3                  { 
 368   4                js=1;  //接收完成 
 369   4                        beep=0;
 370   4                       }
 371   3                else
 372   3                  {
 373   4                        buffer[0]=0;
 374   4                        buffer[1]=0;
 375   4                       }
 376   3               }
 377   2        }
 378   1      //  send(dh);
 379   1      } 
 380          
 381           /************定时器0**********************/
 382          
 383          void Timer0Interrupt(void) interrupt 1 
 384          {
 385   1       TR0=1;
 386   1       n=0;
 387   1       if(bp) bp--,beep=0;
 388   1       else beep=1;
 389   1      }
 390          
 391          
 392          
 393           /************串口**********************/
 394          void send(uchar c)
 395          {
 396   1         EA=0;
 397   1          SBUF = c;
 398   1          while(!TI);
 399   1          TI = 0;   
 400   1         EA=1;
 401   1      }
 402          
 403          void delay1s(void)   //误差 -0.000000000285us
 404          {
 405   1          unsigned char a,b,c;
 406   1          for(c=13;c>0;c--)
 407   1              for(b=247;b>0;b--)
 408   1                  for(a=142;a>0;a--);
 409   1      
 410   1      }
 411          
 412          
 413          void UARTInterrupt(void) interrupt 4
 414          {
 415   1       uchar c;
 416   1          if(RI)
 417   1          {
 418   2              RI = 0;
 419   2              c=SBUF;
 420   2                      if(c==0xaa) 
 421   2                      {
 422   3                       delay1s();
 423   3                       ISP_CONTR=0x60;
 424   3                      }
 425   2          }
 426   1          else
 427   1              TI = 0;
C51 COMPILER V8.02   MAIN                                                                  05/17/2012 10:39:23 PAGE 8   

 428   1      }
 429          
 430          //******************************EEPROM***********************************//
 431          
 432          void IAP_Disable()
 433          {
 434   1          //关闭IAP 功能, 清相关的特殊功能寄存器,使CPU 处于安全状态,
 435   1          //一次连续的IAP 操作完成之后建议关闭IAP 功能,不需要每次都关
 436   1          ISP_CONTR = 0;      //关闭IAP 功能
 437   1          ISP_CMD   = 0;      //清命令寄存器,使命令寄存器无命令,此句可不用
 438   1          ISP_TRIG  = 0;      //清命令触发寄存器,使命令触发寄存器无触发,此句可不用
 439   1          ISP_ADDRH = 0;
 440   1          ISP_ADDRL = 0;
 441   1      }
 442          
 443          
 444          void eeprom_wr()
 445          {
 446   1       uchar  *p;
 447   1       uchar i;
 448   1       p=mima;
 449   1       ISP_CONTR=0x82;  //启动IAP
 450   1       ISP_CMD=0x03; //       擦除
 451   1       ISP_ADDRH=0x20;  //地址
 452   1       ISP_ADDRL=1;
 453   1       EA=0;
 454   1       ISP_TRIG=0x46;   //命令生效
 455   1       ISP_TRIG=0xb9;
 456   1       ;
 457   1       EA=1;
 458   1       ISP_CMD=0x02;     //命令写 
 459   1       for(i=0;i<17;i++)
 460   1       {
 461   2        ISP_DATA=*p;   //数据 
 462   2        p++;
 463   2        ISP_ADDRH=0x20;  //地址
 464   2        ISP_ADDRL=i;
 465   2        EA=0;
 466   2        ISP_TRIG=0x46;   //命令生效
 467   2        ISP_TRIG=0xb9;
 468   2        ;
 469   2        EA=1;   
 470   2       }
 471   1       IAP_Disable();
 472   1      }
 473          
 474          void eeprom_re()
 475          {
 476   1       uchar *p;
 477   1       uchar i;
 478   1       p=mima;
 479   1       ISP_CONTR=0x82;  //启动IAP
 480   1       ISP_CMD=0x01;     //命令读 
 481   1       for(i=0;i<17;i++)
 482   1       {
 483   2        ISP_ADDRH=0x20;  //地址
 484   2        ISP_ADDRL=i;
 485   2       
 486   2        ISP_TRIG=0x46;   //命令生效
 487   2        ISP_TRIG=0xb9;
 488   2        ;
 489   2        *p=ISP_DATA;
C51 COMPILER V8.02   MAIN                                                                  05/17/2012 10:39:23 PAGE 9   

 490   2        p++;
 491   2        }
 492   1        IAP_Disable();
 493   1      }
 494          
 495          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1239    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     78       4
   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 + -