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

📄 main.lst

📁 读写ID卡源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 521   1                      if(M_STA==0)
 522   1                      {
 523   2                              if(M_BIT==1)
 524   2                              {
 525   3                                      TR0=0;
 526   3                                      M_STA=0;
 527   3                                      SHORT_FLAG=0;
 528   3                                      M_FLAG=0;
 529   3                                      error_flag=1;
 530   3                                      return;
 531   3                              }
 532   2                              else
 533   2                              {
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 14  

 534   3                                      M_STA=1;
 535   3                                      SHORT_FLAG=1;
 536   3                                      HALF_FLAG=!HALF_FLAG;
 537   3                                      return;
 538   3                              }
 539   2                      }
 540   1                      else if(M_STA==1)
 541   1                      {
 542   2                              if(M_BIT==1)
 543   2                              {
 544   3                                      TR0=0;
 545   3                                      M_STA=0;
 546   3                                      SHORT_FLAG=0;
 547   3                                      M_FLAG=0;
 548   3                                      error_flag=1;
 549   3                                      return;
 550   3                              }
 551   2                              else
 552   2                              {
 553   3                                      HALF_FLAG=0;
 554   3                                      RCV_BIT=0;
 555   3                                      M_STA=2;
 556   3                                      M_DATA_FLAG=0;
 557   3                                      M_BITS=0;
 558   3                                      R_MRC=0;
 559   3                                      SHORT_FLAG=1;
 560   3                                      HALF_FLAG=!HALF_FLAG;
 561   3                                      return;
 562   3                              }
 563   2                      }
 564   1                      else if(M_STA==2)
 565   1                      {
 566   2                              if(HALF_FLAG==0)
 567   2                              {
 568   3      
 569   3                                      RCV_BIT=M_BIT;
 570   3                                      SHORT_FLAG=1;
 571   3                                      HALF_FLAG=!HALF_FLAG;
 572   3                                      return;
 573   3                              }
 574   2                              else 
 575   2                              {
 576   3                                      if((RCV_BIT==1)&&(M_BIT==1))     //出错返回
 577   3                                      {
 578   4                                              TR0=0;
 579   4                                              M_STA=0;
 580   4                                              SHORT_FLAG=0;
 581   4                                              M_FLAG=0;
 582   4                                              error_flag=1;
 583   4                                              return;
 584   4                                      }
 585   3                                      if((RCV_BIT==0)&&(M_BIT==0))   //出错返回
 586   3                                      {
 587   4                                              TR0=0;
 588   4                                              M_STA=0;
 589   4                                              SHORT_FLAG=0;
 590   4                                              M_FLAG=0;
 591   4                                              error_flag=1;
 592   4                                              return;
 593   4                                      }
 594   3                                      if(((RCV_BIT==0)&&(M_BIT==1))||((RCV_BIT==1)&&(M_BIT==0)))
 595   3                                      {
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 15  

 596   4      
 597   4                                              if(M_DATA_FLAG==0)        //接受9个bit的头
 598   4                                              {
 599   5                                                      if(RCV_BIT==0)  
 600   5                                                      {
 601   6                                                              M_BITS=0;
 602   6                                                              SHORT_FLAG=1;
 603   6                                                              HALF_FLAG=!HALF_FLAG;
 604   6                                                              return;
 605   6                                                      }
 606   5                                                      else
 607   5                                                      {
 608   6                                                              M_BITS++;
 609   6                                                              if(M_BITS==9)
 610   6                                                              {
 611   7                                                                      M_DATA_FLAG=1;
 612   7                                                                      M_BITS=0;
 613   7                                                                      R_MRC=0;
 614   7                                                                      RCV_BYTE=0;
 615   7                                                                      M_BYTES=0;
 616   7                                                                      M_LRC=0;
 617   7                                                                      R_MRC=0;
 618   7                                                                      SHORT_FLAG=1;
 619   7                                                                      HALF_FLAG=!HALF_FLAG;
 620   7                                                                      return;
 621   7                                                              }
 622   6                                                                      SHORT_FLAG=1;
 623   6                                                                      HALF_FLAG=!HALF_FLAG;
 624   6                                                                      return;
 625   6                                                      }
 626   5                                              }
 627   4                                              else            //处理真实接受的数据   M_DATA_FLAG=1
 628   4                                              {
 629   5                                                      if(M_BITS==4)    //处理第五位偶效验位
 630   5                                                      {
 631   6                                                              if(M_BYTES==10)   //处理最后列效验的四个bit
 632   6                                                              {
 633   7                                                                      if(RCV_BIT==1)   //为高电平出错
 634   7                                                                      {
 635   8                                                                              TR0=0;
 636   8                                                                              M_STA=0;
 637   8                                                                              SHORT_FLAG=0;
 638   8                                                                              M_FLAG=0;
 639   8                                                                              error_flag=1;
 640   8                                                                              return;
 641   8                                                                      }
 642   7                                                                      else
 643   7                                                                      {
 644   8                                                                              RCV_BYTE^=M_LRC;   //进行异或运算进行每列位校验
 645   8                                                                              if(RCV_BYTE==0)     //校验正确
 646   8                                                                              {
 647   9                                                                                      M_FLAG=1;
 648   9                                                                                      error_flag=0;
 649   9      //                                                                              IE=0;
 650   9                                                                                      TR0=0;
 651   9                                                                                      return;
 652   9                                                                              }
 653   8                                                                              else                 //校验不正确
 654   8                                                                              {
 655   9                                                                                      TR0=0;
 656   9                                                                                      M_STA=0;
 657   9                                                                                      SHORT_FLAG=0;
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 16  

 658   9                                                                                      M_FLAG=0;
 659   9                                                                                      error_flag=1;
 660   9                                                                                      return;
 661   9                                                                              }
 662   8                                                                      }
 663   7                                                              }
 664   6                                                              else
 665   6                                                              {
 666   7                                                                      if((RCV_BIT==0)&&(R_MRC==1))  //出错返回
 667   7                                                                      {
 668   8                                                                              TR0=0;
 669   8                                                                              M_STA=0;
 670   8                                                                              SHORT_FLAG=0;
 671   8                                                                              M_FLAG=0;
 672   8                                                                              error_flag=1;
 673   8                                                                              return;
 674   8                                                                      }
 675   7                                                                      if((RCV_BIT==1)&&((!R_MRC)==1))  //出错返回
 676   7                                                                      {
 677   8                                                                              TR0=0;
 678   8                                                                              M_STA=0;
 679   8                                                                              SHORT_FLAG=0;
 680   8                                                                              error_flag=1;
 681   8                                                                              M_FLAG=0;
 682   8                                                                              return;
 683   8                                                                      }
 684   7                                                                      if((M_BYTES%2)==0)
 685   7                                                                      {
 686   8                                                                              M_IDATA[M_BYTES/2]=RCV_BYTE&0x0f;
 687   8                                                                              M_LRC^=RCV_BYTE;
 688   8                                                                      }
 689   7                                                                      else if((M_BYTES%2)==1)
 690   7                                                                      {
 691   8                                                                              yyj=M_IDATA[M_BYTES/2];
 692   8                                                                              yyj=yyj<<4;
 693   8                                                                              RCV_BYTE=RCV_BYTE&0x0f;
 694   8                                                                              M_LRC^=RCV_BYTE;
 695   8                                                                              yyj=yyj+RCV_BYTE;
 696   8                                                                              M_IDATA[M_BYTES/2]=yyj;
 697   8                                                                      }
 698   7                                                                              M_BYTES++;
 699   7                                                                              RCV_BYTE=0;
 700   7                                                                              M_BITS=0;
 701   7                                                                              SHORT_FLAG=1;
 702   7                                                                              R_MRC=0;
 703   7                                                                              HALF_FLAG=!HALF_FLAG;
 704   7                                                                              return;
 705   7      
 706   7                                                              }
 707   6                                                      }
 708   5                                                      else              //处理接受的四个bit数据
 709   5                                                      {
 710   6                                                              RCV_BYTE=RCV_BYTE<<1;
 711   6                                                              if(RCV_BIT==1)
 712   6                                                              {
 713   7                                                                      RCV_BYTE=RCV_BYTE|0x01;
 714   7                                                                      R_MRC=!R_MRC;
 715   7                                                              }
 716   6                                                              M_BITS++;
 717   6                                                              SHORT_FLAG=1;
 718   6                                                              HALF_FLAG=!HALF_FLAG;
 719   6                                                              return;
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 17  

 720   6                                                      }
 721   5                                              }
 722   4                                      }
 723   3                              }
 724   2                      }
 725   1                      else
 726   1                      {
 727   2                              TR0=0;
 728   2                              M_STA=0;
 729   2                              SHORT_FLAG=0;
 730   2                              M_FLAG=0;
 731   2                              return;
 732   2                      }
 733   1      
 734   1      }
 735          ///////////////////////////////////////////
 736          
 737          void flash_led(void)
 738          {
 739   1              unsigned int i;
 740   1              led_3=0;
 741   1              for(i=0;i<2800;i++);
 742   1              led_3=1;
 743   1      
 744   1      }
 745          /////////////////////////////////////////////////
 746          void receive_send() interrupt 4
 747          {
 748   1                      unsigned char s;
 749   1                      ES=0;
 750   1                      if(RI)
 751   1                      {
 752   2                              RI=0;
 753   2                              s=SBUF;
 754   2                              if((rxhead==0)&&(s!=0x02))
 755   2                              {
 756   3                                      rxhead=0;
 757   3                                      ES=1;
 758   3                              }
 759   2                              receive_buf1[rxhead++]=s;
 760   2                              if(s==0x03)
 761   2                              {
 762   3                                              receive_flag=1;
 763   3                                              rxhead=0;
 764   3                                              ES=1;
 765   3                              }
 766   2                   }
 767   1                      else if(TI)
 768   1                      {
 769   2                              TI=0;
 770   2                              if(txhead>2)
 771   2                              {
 772   3                                      txhead=0;
 773   3                                      ES=1;
 774   3                                      return;
 775   3                              }
 776   2                              SBUF=send_buf[txhead++];
 777   2                              ES=1;
 778   2                              return;
 779   2                      }
 780   1                      ES=1;
 781   1      }       
C51 COMPILER V7.06   MAIN                                                                  11/07/2008 09:41:02 PAGE 18  

 782          
 783          void EM_REV (void) interrupt 0 using 1

⌨️ 快捷键说明

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