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

📄 main.lst

📁 学校水POS读卡程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 569   2                mode = PICC_INCREMENT;
 570   2                addr = SerBuffer[ADR];
 571   2                memcpy(value,&SerBuffer[VALUE],4);
 572   2                Status = MI_OK;
 573   2                break;
 574   2      
 575   2      
 576   2              case 0x49:                                      // Decrement
 577   2      
 578   2                mode = PICC_DECREMENT;
 579   2                addr = SerBuffer[ADR];
 580   2                memcpy(value,&SerBuffer[VALUE],4);
 581   2                Status = MI_OK;
 582   2                break;
 583   2      
 584   2      
 585   2              case 0x4A:                                      // Restore
 586   2      
 587   2                mode = PICC_RESTORE;
 588   2                addr = SerBuffer[ADR];
 589   2                memset(value,0,4);
 590   2                Status = MI_OK;
 591   2                break;
 592   2      
 593   2      
 594   2              case 0x4B:                                      // Transfer
 595   2      
 596   2                if (EnableTransferCmd)
 597   2                {
 598   3                      Status = M500PiccValue(mode, addr, value, SerBuffer[ADR]);
 599   3                }
 600   2                else
 601   2                {
 602   3                      Status = MI_CODEERR;
 603   3                }
 604   2                break;
 605   2      
 606   2      
 607   2              case 0x4C:                                      // Load Key
 608   2      
 609   2                if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
 610   2                else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA
 611   2      // _____________________________________________________________________________
 612   2      //
C51 COMPILER V6.23a  MAIN                                                                  09/14/2004 14:19:20 PAGE 11  

 613   2      //  FUNCTION: M500PcdLoadKeyE2
 614   2      //        IN: key_type      PICC_AUTHENT1A or PICC_AUTHENT1B
 615   2      //            sector        key sector number, on which the key should be stored
 616   2      //                          values from 0 to 15 are valid
 617   2      //            uncoded_keys  6 bytes key
 618   2      //       OUT: -
 619   2      //    RETURN:
 620   2      //   COMMENT: This function stores the keys in the reader internal E2PROM.
 621   2      //            These keys are available for the function M500PiccAuthE2.
 622   2      // ______________________________________________________________________________
 623   2      //
 624   2                Status = M500PcdLoadKeyE2(SerBuffer[MODE], SerBuffer[SECNR], &SerBuffer[13]);
 625   2            ErrNum = Status;
 626   2                break;
 627   2      
 628   2      
 629   2              case 0x4D:                                      // comm check char
 630   2      
 631   2                if (SerBuffer[MODE] == SER_BCC)
 632   2                {
 633   3                      CheckByteCnt = BCC_CHECKBYTECNT;
 634   3                }
 635   2                else
 636   2                {
 637   3                      CheckByteCnt = CRC_CHECKBYTECNT;
 638   3                }
 639   2                Status = MI_OK;
 640   2                break;
 641   2      
 642   2      
 643   2              case 0x4E:                                      // Reset
 644   2      
 645   2                M500PcdRfReset(SerBuffer[TIME]);
 646   2                Status = MI_OK;
 647   2                break;
 648   2      
 649   2      
 650   2              case 0x4F:                                      // Get Info
 651   2      
 652   2                if ((len == 0) || (len == 1 && SerBuffer[MODE] == 1))
 653   2                {
 654   3                      for (adr = INFO; adr < INFO_CNT + INFO; adr++)
 655   3                      {
 656   4                        SerBuffer[adr] = SW_Rel[adr-INFO];
 657   4                      }
 658   3                      SerBuffer[adr++] = ' ';
 659   3                      SerBuffer[adr++] = '0';
 660   3                      SerBuffer[adr++] = 'x';
 661   3                      SerBuffer[adr++] = xtoa_h(Snr_RC500[0]);
 662   3                      SerBuffer[adr++] = xtoa_l(Snr_RC500[0]);
 663   3                      SerBuffer[adr++] = xtoa_h(Snr_RC500[1]);
 664   3                      SerBuffer[adr++] = xtoa_l(Snr_RC500[1]);
 665   3                      SerBuffer[adr++] = xtoa_h(Snr_RC500[2]);
 666   3                      SerBuffer[adr++] = xtoa_l(Snr_RC500[2]);
 667   3                      SerBuffer[adr++] = xtoa_h(Snr_RC500[3]);
 668   3                      SerBuffer[adr++] = xtoa_l(Snr_RC500[3]);
 669   3                      SerBuffer[adr++] = '\0';
 670   3      
 671   3                      SerBuffer[LENGTH] = adr - INFO;
 672   3                }
 673   2                else
 674   2                {
C51 COMPILER V6.23a  MAIN                                                                  09/14/2004 14:19:20 PAGE 12  

 675   3                      if (SerBuffer[MODE] == 2)
 676   3                      {
 677   4                        SerBuffer[INFO]     = (uchar) Capt;
 678   4                        SerBuffer[INFO + 1] = (uchar)(Capt >> 8);
 679   4                        SerBuffer[INFO + 2] = BaudRate;
 680   4                        SerBuffer[INFO + 3] = DelayRate;
 681   4                      }
 682   3                      else
 683   3                      {
 684   4                        SerBuffer[INFO]     = Snr_RC500[0];
 685   4                        SerBuffer[INFO + 1] = Snr_RC500[1];
 686   4                        SerBuffer[INFO + 2] = Snr_RC500[2];
 687   4                        SerBuffer[INFO + 3] = Snr_RC500[3];
 688   4                      }
 689   3                      SerBuffer[LENGTH] = 4;
 690   3                }
 691   2      
 692   2                Status = MI_OK;
 693   2                break;
 694   2      
 695   2      
 696   2              case 0x50:                                      // Set Control Bit
 697   2                if (SerBuffer[INFO]&0x01)
 698   2                   Status = MI_OK;
 699   2                if (SerBuffer[INFO]&0x02)
 700   2                   Status = MI_OK;
 701   2                if (SerBuffer[INFO]&0x04)
 702   2                   Status = MI_OK;
 703   2      
 704   2                Status = MI_OK;
 705   2                break;
 706   2      
 707   2      
 708   2              case 0x51:                                      // Clr Control Bit
 709   2      
 710   2                Status = MI_OK;
 711   2                break;
 712   2      
 713   2      
 714   2              case 0x52:                                      // Config
 715   2      
 716   2                Status = M500PcdConfig();
 717   2      
 718   2      #ifdef AUTODELAY
 719   2                DelayRate = 0;
 720   2      #endif
 721   2                break;
 722   2      
 723   2      
 724   2              case 0x53:                                      // Check Write
 725   2      
 726   2                Status = MIS_CHK_FAILED;
 727   2      
 728   2                if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
 729   2                {
 730   3                      if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
 731   3                      {
 732   4                        break;
 733   4                      }
 734   3                }
 735   2                if (M500PiccSelect(&SerBuffer[SERNR], &size) != MI_OK)
 736   2                {
C51 COMPILER V6.23a  MAIN                                                                  09/14/2004 14:19:20 PAGE 13  

 737   3                      if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
 738   3                      {
 739   4                        break;
 740   4                      }
 741   3                      if (M500PiccSelect(&SerBuffer[SERNR], &size) != MI_OK)
 742   3                      {
 743   4                        break;
 744   4                      }
 745   3                }
 746   2                memcpy(card_snr,&SerBuffer[SERNR],4);
 747   2                if(SerBuffer[AUTHMODE]&0X04) SerBuffer[AUTHMODE]=PICC_AUTHENT1B; // keyB
 748   2                else SerBuffer[AUTHMODE]=PICC_AUTHENT1A; // keyA
 749   2      
 750   2                //if (Status = M500PiccAuth(SerBuffer[AUTHMODE], card_snr,
 751   2                //                        SerBuffer[ADRCHKWR]>>2, SerBuffer[ADRCHKWR]) != MI_OK)
 752   2                if (Status = M500PiccAuthE2(SerBuffer[AUTHMODE], card_snr,
 753   2                                          SerBuffer[ADRCHKWR]>>2, SerBuffer[ADRCHKWR]) != MI_OK)
 754   2                {
 755   3                      break;
 756   3                }
 757   2      
 758   2                if (M500PiccRead(SerBuffer[ADRCHKWR], tmp) != MI_OK)
 759   2                {
 760   3                      break;
 761   3                }
 762   2      
 763   2                if (memcmp(&SerBuffer[DATACHKWR], tmp, 16) != MI_OK)
 764   2                {
 765   3                      Status = MIS_CHK_COMPERR;
 766   3                }
 767   2                else
 768   2                {
 769   3                      Status = MIS_CHK_OK;
 770   3                }
 771   2                break;
 772   2      
 773   2      
 774   2              case 0x54:                                      // Set Port
 775   2      
 776   2                P1 |= (SerBuffer[PORTBYTE]&0x0f);  // set the desired port pin
 777   2                P1 &=  (SerBuffer[PORTBYTE]|0xf0); // clear the desired port pin
 778   2                if (SerBuffer[PORTBYTE]&0x10)
 779   2                      LED = ON;
 780   2                else
 781   2                      LED = OFF;
 782   2                Status = MI_OK;
 783   2                break;
 784   2      
 785   2      
 786   2              case 0x55:                                      // Get Port
 787   2      
 788   2                SerBuffer[PORTBYTE] = P1&0xf;
 789   2                SerBuffer[LENGTH] = 1;
 790   2                Status = MI_OK;
 791   2                break;
 792   2      
 793   2          case 0x56:                                  // Authentication2
 794   2      
 795   2                if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
 796   2                else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA
 797   2      
 798   2                //Status = M500PiccAuth(SerBuffer[MODE], card_snr,
C51 COMPILER V6.23a  MAIN                                                                  09/14/2004 14:19:20 PAGE 14  

 799   2                //                    SerBuffer[SECNR], SerBuffer[AUTHADD]);
 800   2                Status = M500PiccAuthE2(SerBuffer[MODE], card_snr,
 801   2                                      SerBuffer[SECNR], SerBuffer[AUTHADD]);
 802   2                break;
 803   2      
 804   2      
 805   2              case 0x57:                              // Decrement+Transfer
 806   2      
 807   2                Status = M500PiccValue(PICC_DECREMENT, SerBuffer[ADR], &SerBuffer[VALUE], SerBuffer[ADR]);
 808   2                break;
 809   2      
 810   2              default:
 811   2      
 812   2                Status = MI_NY_IMPLEMENTED;
 813   2                break;
 814   2      
 815   2      
 816   2        } // end switch (Command)
 817   1      
 818   1        SerBuffer[STATUS] = ~Status+1;
 819   1      
 820   1        if (cmd < 0x48 || cmd > 0x4A)
 821   1        {
 822   2              EnableTransferCmd = FALSE;
 823   2        }
 824   1        else
 825   1        {
 826   2              EnableTransferCmd = TRUE;
 827   2        }
 828   1      }
 829          
 830          
 831          /****************************************************************************
 832          *                                                                           *
 833          * Function:     auto_baud                                                   *
 834          *                                                                           *
 835          * Input:        -                                                           *
 836          * Output:       -                                                           *
 837          *                                                                           *
 838          * Description:                                                              *
 839          *                                                                           *
 840          * Mi醫 die Zeitspanne zwischen Start- und Stopbit des ersten empfangenen    *
 841          * Zeichens (STX) und ermittelt daraus die Baudrate.                         *
 842          *                                                                           *
 843          ****************************************************************************/
 844          
 845          void    auto_baud (void)
 846          {
 847   1        //int temp;
 848   1      
 849   1        if (AutoBaud && !RXD) // If autobaud is enable and RXD pin is low
 850   1        {
 851   2              TR0 = TRUE;     // Start timer0
 852   2      
 853   2              do
 854   2              {
 855   3                if (RXD)      // When RXD pin is high
 856   3                {
 857   4                      Capt_L = TL0;
 858   4                      Capt_H = TH0;

⌨️ 快捷键说明

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