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

📄 main.lst

📁 读写ID卡源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 256   1                       TL1=0x00;
 257   1                       TR1=1;
 258   1                       ES=1;
 259   1                       EA=1;
 260   1      }
 261          void time2init(void)
 262          {
 263   1              T2MOD &= 0xFC; /* T2OE=0;定时器2输出不允许 */
 264   1              T2MOD |= 0x01; /* DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出*/ 
 265   1              EXF2=0; /* reset flag 定时器2外部标志位清除*/
 266   1              TCLK=0;
 267   1              RCLK=0; /* disable baud rate generator 不用于波特率发生器*/ 
 268   1              EXEN2=0; /* ignore events on T2EX 视T2EX(P1.1)端信号无效*/ 
 269   1              TH2=0xFC;//MSB_reload_value; /* Init msb_value 填入初始化值*/ 
 270   1              TL2=0x66;//LSB_reload_value; /* Init lsb_value */ 
 271   1              RCAP2H=0xFb;//MSB_reload_value; /* reload msb_value重载值 */ 
 272   1              RCAP2L=0x66;//LSB_reload_value; /* reload lsb_value */ 
 273   1              C_T2=0; /* timer mode 定时模式*/ 
 274   1              CP_RL2=0; /* reload mode 重载模式*/ 
 275   1      //      EA=1; /* interupt enable 中断允许*/ 
 276   1              ET2=1; /* enable timer2 interrupt 允许T2中断*/ 
 277   1              TR2=1; /* timer2 run 开始计时*/
 278   1      }
 279          
 280          void select_500(unsigned char ss1)
 281          {
 282   1              unsigned char s1;
 283   1              s1=ss1;
 284   1              switch(s1)
 285   1              {
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 10  

 286   2                      case 0:       //第一个500
 287   2                      A_500=0;
 288   2                      B_500=0;
 289   2                      C_500=0;
 290   2                      break;
 291   2                      case 1:        //第二个500
 292   2                      A_500=1;
 293   2                      B_500=0;
 294   2                      C_500=0;
 295   2                      break;
 296   2                      case 2:        //第三个500
 297   2                      A_500=0;
 298   2                      B_500=1;
 299   2                      C_500=0;
 300   2                      break;
 301   2                      case 3:        //第四个500
 302   2                      A_500=1;
 303   2                      B_500=1;
 304   2                      C_500=0;
 305   2                      break;
 306   2                      case 4:        //第五个500
 307   2                      A_500=0;
 308   2                      B_500=0;
 309   2                      C_500=1;
 310   2                      break;
 311   2                      case 5:        //第六个500
 312   2                      A_500=1;
 313   2                      B_500=0;
 314   2                      C_500=1;
 315   2                      break;
 316   2                      case 6:        //第七个500
 317   2                      A_500=0;
 318   2                      B_500=1;
 319   2                      C_500=1;
 320   2                      break;
 321   2                      case 7:        //第八个500
 322   2                      A_500=1;
 323   2                      B_500=1;
 324   2                      C_500=1;
 325   2                      break;
 326   2                      default:
 327   2                      break;
 328   2              }
 329   1      }
 330          unsigned char readcard(void)
 331          {
 332   1                      uchar i,ss;
 333   1                      m_readcard();
 334   1                      TH1=0x20;
 335   1                      TL1=0xff;
 336   1                      TF1=0;
 337   1                      TR1=1;
 338   1                      ET1=0;
 339   1                      ES=0;
 340   1                      while(1)
 341   1                      {
 342   2                              if(M_FLAG==1)
 343   2                              {
 344   3      //                              TMOD=0x12;
 345   3      //                              TR1=0;
 346   3      //                              TH1=TL1=0xfa;
 347   3      //                              TH1=0x00;
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 11  

 348   3      //                              TL1=0xff;
 349   3      //                              TR1=1;
 350   3      //                              ET1=1;           //开T1中断
 351   3                                      M_FLAG=0;
 352   3                                      for(i=0;i<4;i++)
 353   3                                      snr[i]=M_IDATA[i+1];
 354   3                                      ss=CMP_STRING(snr,snr4,4);
 355   3                                      if(ss==0)return 0;
 356   3                                      else return 1;
 357   3                              }
 358   2                              if(TF1==1)
 359   2                              {
 360   3                                      return 1;
 361   3                              }
 362   2      //                      if(error_flag==1)
 363   2      //                      {
 364   2      //                              return 1;
 365   2      //                      }
 366   2                      }
 367   1      }
 368          unsigned char readcard1(void)
 369          {
 370   1                      uchar i,ss;
 371   1      //              TMOD=0x12;
 372   1                      m_readcard();
 373   1      
 374   1                      while(1)
 375   1                      {
 376   2                              if(M_FLAG==1)
 377   2                              {
 378   3      
 379   3                                      M_FLAG=0;
 380   3                                      for(i=0;i<4;i++)
 381   3                                      snr[i]=M_IDATA[i+1];
 382   3                                      return 0;
 383   3                              }
 384   2                              if(error_flag==1)
 385   2                              {
 386   3                                      return 1;
 387   3                              }
 388   2                      }
 389   1      }
 390          
 391          void m_readcard(void)
 392          {
 393   1              uchar i;
 394   1              for(i=0;i<5;i++)
 395   1              M_IDATA[i]=0;
 396   1              error_flag=0;
 397   1              TR0=0;
 398   1              ET0=0;
 399   1      //      TCON=1; 
 400   1              IT0=1;   
 401   1              PX0=1;
 402   1              M_STA=0;
 403   1              TH0=0x16;   //256uS定时参数,在11.0592MHz的情况下
 404   1      //      TH0=0xfe;
 405   1      //      TL0=0x2b;
 406   1      //      TH0=0x01;
 407   1              M_FLAG=0;
 408   1              SHORT_FLAG=0;
 409   1              R_MRC=0;
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 12  

 410   1              EX0=1;
 411   1              EA=1;
 412   1      }
 413          void led_light(unsigned char select)
 414          {
 415   1              unsigned int i;
 416   1              switch(select)
 417   1              {
 418   2                      case 0:
 419   2                              led_1=0;
 420   2                              for(i=0;i<30000;i++);
 421   2                              led_1=1;
 422   2                              break;
 423   2                      case 1:
 424   2                              led_2=0;
 425   2                              for(i=0;i<30000;i++);
 426   2                              led_2=1;
 427   2                              break;
 428   2                      case 2:
 429   2                              led_3=0;
 430   2                              for(i=0;i<30000;i++);
 431   2                              led_3=1;
 432   2                              break;
 433   2                      case 3:
 434   2                              led_4=0;
 435   2                              for(i=0;i<30000;i++);
 436   2                              led_4=1;
 437   2                              break;
 438   2                      case 4:
 439   2                              SECOND_3=0;
 440   2                              for(i=0;i<30000;i++);
 441   2                              SECOND_3=1;
 442   2                              break;
 443   2                      case 5:
 444   2                              SECOND_8=0;
 445   2                              for(i=0;i<30000;i++);
 446   2                              SECOND_8=1;
 447   2                              break;
 448   2                      case 6:
 449   2                              vvvv=0;
 450   2                              for(i=0;i<500;i++);
 451   2                              vvvv=1;
 452   2                      default:
 453   2                              break;
 454   2              }
 455   1      }
 456          void timer2(void) interrupt 5 using 1
 457          {
 458   1              mscounter++;
 459   1              mscounter1++;
 460   1              if(st_1==1)
 461   1              {
 462   2                      if(mscounter>2200)
 463   2                      {
 464   3                              off_led(outnum);
 465   3                              st_1=0;
 466   3                      }
 467   2              }
 468   1              if(st_cance==1)
 469   1              {
 470   2                      if(mscounter1>2200)
 471   2                      {
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 13  

 472   3                              SECOND_3=1;
 473   3                              SECOND_8=1;
 474   3                              st_cance=0;
 475   3                      }
 476   2              }
 477   1              TF2=0;
 478   1      }
 479          unsigned char CMP_STRING(unsigned char *pt1,
 480                                   unsigned char *pt2,unsigned char len)
 481          {
 482   1           unsigned char ct;         // fixed lenth 4.
 483   1           for (ct=0;ct<len;ct++)
 484   1           {
 485   2               if (*pt1++ != *pt2++)
 486   2               return 1;
 487   2           }
 488   1           return 0;                 // equal return 0.       
 489   1      }
 490          /////////////////////////////////////////////////////////////////
 491          void    delay_10ms (uint _10ms)
 492          {
 493   1       
 494   1         ET2 = 0;     // Disable timer2 interrupt
 495   1        T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
 496   1        while (_10ms--)
 497   1        {
 498   2              while (!TF2)
 499   2              {
 500   3      //        if (CmdValid || CmdReceived)
 501   3                {
 502   4                      TR2 = FALSE;
 503   4                      TF2 = FALSE;
 504   4                      return;
 505   4                }
 506   3              }
 507   2              TF2 = FALSE;
 508   2      }
 509   1        TR2 = FALSE;
 510   1      }
 511          
 512          /****************************************************************************
 513          ****************************************************************************/
 514          void isr_timer0(void) interrupt 1 using 1
 515          {
 516   1      //                      TH0=0xfe;
 517   1      //                      TL0=0x2b;
 518   1      
 519   1                      
 520   1                      if(M_FLAG==1)return;

⌨️ 快捷键说明

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