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

📄 main.lst

📁 射频卡读卡头的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 616   2            ErrNum = Status;
 617   2      	  break;
 618   2      
 619   2      
 620   2      	case 0x42:					// Anticoll
 621   2      
 622   2      	  Status = M500PiccAnticoll(SerBuffer[BCNT], &SerBuffer[SERNR]);
 623   2      
 624   2      	  if (Status == MI_OK)
 625   2      	  {
 626   3      	  	SerBuffer[LENGTH] = 4;
 627   3             // RingOn();
 628   3      	    AccOk = 1;
 629   3      	  }
 630   2            ErrNum = Status;
 631   2      	  break;
 632   2      
 633   2      
 634   2      	case 0x43:					// Select
 635   2      
 636   2      	  memcpy(card_snr,&SerBuffer[SERNR],4); // store serial number in globle var
 637   2      
 638   2      //输入: 卡片序列号 输出:卡片容量 SIZE = 0X88H
 639   2      	  Status = M500PiccSelect(&SerBuffer[SERNR], &SerBuffer[SIZE]);
 640   2      	  if (Status == MI_OK)
 641   2      	  {
 642   3      	  	SerBuffer[LENGTH] = 1;
 643   3      	  }
 644   2      
 645   2           //     RingOn();
 646   2      
 647   2            AccOk = 1;
 648   2            ErrNum = Status;
 649   2      
 650   2      	  break;
 651   2      
 652   2      
 653   2      	case 0x44:					// Authentication
C51 COMPILER V4.01,  MAIN                                                                  29/08/06  08:02:00  PAGE 11  

 654   2      
 655   2      	  if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
 656   2      	  else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA =0x60  MODE =3  key_sector = SerBuffer[4] block = 9 SerBuf
             -fer[SECNR]+1)*4-1 SECNR= 4
 657   2      
 658   2      	  Status = M500PiccAuth(SerBuffer[MODE], card_snr, SerBuffer[SECNR], (SerBuffer[SECNR]+1)*4-1);
 659   2      
 660   2      //      Status = M500PiccAuthE2(SerBuffer[MODE], card_snr, SerBuffer[SECNR], (SerBuffer[SECNR]+1)*4-1);
 661   2      
 662   2            AuthOk = Status;
 663   2            ErrNum = Status;
 664   2      
 665   2      	  break;
 666   2      
 667   2      
 668   2      	case 0x45:					// Halt
 669   2      
 670   2      	  Status = M500PiccHalt();
 671   2      	  break;
 672   2      
 673   2      
 674   2      	case 0x46:					// Read
 675   2      
 676   2            Status = M500PiccRead(SerBuffer[ADR], &SerBuffer[ADR]);//ADR = 3
 677   2      	  if (Status == MI_OK)
 678   2      	  {
 679   3      		SerBuffer[LENGTH] = 16;
 680   3      	  }
 681   2            ErrNum = Status;
 682   2      	  break;
 683   2      
 684   2      
 685   2      	case 0x47:					// Write
 686   2      
 687   2      	  Status = M500PiccWrite(SerBuffer[ADR], &SerBuffer[DATABYTES]);
 688   2            ErrNum = Status;
 689   2      	  break;
 690   2      
 691   2      
 692   2      	case 0x48:					// Increment
 693   2      
 694   2      	  mode = PICC_INCREMENT;
 695   2      	  addr = SerBuffer[ADR];
 696   2      	  memcpy(value,&SerBuffer[VALUE],4);
 697   2      	  Status = MI_OK;
 698   2      	  break;
 699   2      
 700   2      
 701   2      	case 0x49:					// Decrement
 702   2      
 703   2      	  mode = PICC_DECREMENT;
 704   2      	  addr = SerBuffer[ADR];
 705   2      	  memcpy(value,&SerBuffer[VALUE],4);
 706   2      	  Status = MI_OK;
 707   2      	  break;
 708   2      
 709   2      
 710   2      	case 0x4A:					// Restore
 711   2      
 712   2      	  mode = PICC_RESTORE;
 713   2      	  addr = SerBuffer[ADR];
 714   2      	  memset(value,0,4);
 715   2      	  Status = MI_OK;
 716   2      	  break;
 717   2      
 718   2      
C51 COMPILER V4.01,  MAIN                                                                  29/08/06  08:02:00  PAGE 12  

 719   2      	case 0x4B:					// Transfer
 720   2      
 721   2      	  if (EnableTransferCmd)
 722   2      	  {
 723   3      		Status = M500PiccValue(mode, addr, value, SerBuffer[ADR]);
 724   3      	  }
 725   2      	  else
 726   2      	  {
 727   3      		Status = MI_CODEERR;
 728   3      	  }
 729   2      	  break;
 730   2      
 731   2      
 732   2      	case 0x4C:					// Load Key
 733   2      
 734   2      	  if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
 735   2      	  else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA
 736   2      // _____________________________________________________________________________
 737   2      //
 738   2      //  FUNCTION: M500PcdLoadKeyE2
 739   2      //        IN: key_type      PICC_AUTHENT1A or PICC_AUTHENT1B
 740   2      //            sector        key sector number, on which the key should be stored
 741   2      //                          values from 0 to 15 are valid
 742   2      //            uncoded_keys  6 bytes key
 743   2      //       OUT: -
 744   2      //    RETURN:
 745   2      //   COMMENT: This function stores the keys in the reader internal E2PROM.
 746   2      //            These keys are available for the function M500PiccAuthE2.
 747   2      // ______________________________________________________________________________
 748   2      //
 749   2      	  Status = M500PcdLoadKeyE2(SerBuffer[MODE], SerBuffer[SECNR], &SerBuffer[13]);
 750   2            ErrNum = Status;
 751   2      	  break;
 752   2      
 753   2      
 754   2      	case 0x4D:					// comm check char
 755   2      
 756   2      	  if (SerBuffer[MODE] == SER_BCC)
 757   2      	  {
 758   3      		CheckByteCnt = BCC_CHECKBYTECNT;
 759   3      	  }
 760   2      	  else
 761   2      	  {
 762   3      		CheckByteCnt = CRC_CHECKBYTECNT;
 763   3      	  }
 764   2      	  Status = MI_OK;
 765   2      	  break;
 766   2      
 767   2      
 768   2      	case 0x4E:					// Reset
 769   2      
 770   2      	  M500PcdRfReset(SerBuffer[TIME]);
 771   2      	  Status = MI_OK;
 772   2      	  break;
 773   2      
 774   2      
 775   2      	case 0x4F:                  			// Get Info
 776   2      
 777   2      	  if ((len == 0) || (len == 1 && SerBuffer[MODE] == 1))
 778   2      	  {
 779   3      		for (adr = INFO; adr < INFO_CNT + INFO; adr++)
 780   3      		{
 781   4      		  SerBuffer[adr] = SW_Rel[adr-INFO];
 782   4      		}
 783   3      		SerBuffer[adr++] = ' ';
 784   3      		SerBuffer[adr++] = '0';
C51 COMPILER V4.01,  MAIN                                                                  29/08/06  08:02:00  PAGE 13  

 785   3      		SerBuffer[adr++] = 'x';
 786   3      		SerBuffer[adr++] = xtoa_h(Snr_RC500[0]);
 787   3      		SerBuffer[adr++] = xtoa_l(Snr_RC500[0]);
 788   3      		SerBuffer[adr++] = xtoa_h(Snr_RC500[1]);
 789   3      		SerBuffer[adr++] = xtoa_l(Snr_RC500[1]);
 790   3      		SerBuffer[adr++] = xtoa_h(Snr_RC500[2]);
 791   3      		SerBuffer[adr++] = xtoa_l(Snr_RC500[2]);
 792   3      		SerBuffer[adr++] = xtoa_h(Snr_RC500[3]);
 793   3      		SerBuffer[adr++] = xtoa_l(Snr_RC500[3]);
 794   3      		SerBuffer[adr++] = '\0';
 795   3      
 796   3      		SerBuffer[LENGTH] = adr - INFO;
 797   3      	  }
 798   2      	  else
 799   2      	  {
 800   3      		if (SerBuffer[MODE] == 2)
 801   3      		{
 802   4      		  SerBuffer[INFO]     = (uchar) Capt;
 803   4      		  SerBuffer[INFO + 1] = (uchar)(Capt >> 8);
 804   4      		  SerBuffer[INFO + 2] = BaudRate;
 805   4      		  SerBuffer[INFO + 3] = DelayRate;
 806   4      		}
 807   3      		else
 808   3      		{
 809   4      		  SerBuffer[INFO]     = Snr_RC500[0];
 810   4      		  SerBuffer[INFO + 1] = Snr_RC500[1];
 811   4      		  SerBuffer[INFO + 2] = Snr_RC500[2];
 812   4      		  SerBuffer[INFO + 3] = Snr_RC500[3];
 813   4      		}
 814   3      		SerBuffer[LENGTH] = 4;
 815   3      	  }
 816   2      
 817   2      	  Status = MI_OK;
 818   2      	  break;
 819   2      
 820   2      
 821   2      	case 0x50:					// Set Control Bit
 822   2                if (SerBuffer[INFO]&0x01)
 823   2      	     Status = MI_OK;
 824   2      	  if (SerBuffer[INFO]&0x02)
 825   2      	     Status = MI_OK;
 826   2      	  if (SerBuffer[INFO]&0x04)
 827   2                   Status = MI_OK;
 828   2      
 829   2      	  Status = MI_OK;
 830   2      	  break;
 831   2      
 832   2      
 833   2      	case 0x51:					// Clr Control Bit
 834   2      
 835   2      	  Status = MI_OK;
 836   2      	  break;
 837   2      
 838   2      
 839   2      	case 0x52:                  			// Config
 840   2      
 841   2      	  Status = M500PcdConfig();
 842   2      
 843   2      #ifdef AUTODELAY
 844   2      	  DelayRate = 0;
 845   2      #endif
 846   2      	  break;
 847   2      
 848   2      
 849   2      	case 0x53:					// Check Write
 850   2      
C51 COMPILER V4.01,  MAIN                                                                  29/08/06  08:02:00  PAGE 14  

 851   2      	  Status = MIS_CHK_FAILED;
 852   2      
 853   2      	  if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
 854   2      	  {
 855   3      		if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
 856   3      		{
 857   4      		  break;
 858   4      		}
 859   3      	  }
 860   2      	  if (M500PiccSelect(&SerBuffer[SERNR], &size) != MI_OK)
 861   2      	  {
 862   3      		if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
 863   3      		{
 864   4      		  break;
 865   4      		}
 866   3      		if (M500PiccSelect(&SerBuffer[SERNR], &size) != MI_OK)
 867   3      		{
 868   4      		  break;
 869   4      		}
 870   3      	  }
 871   2      	  memcpy(card_snr,&SerBuffer[SERNR],4);
 872   2      	  if(SerBuffer[AUTHMODE]&0X04) SerBuffer[AUTHMODE]=PICC_AUTHENT1B; // keyB
 873   2      	  else SerBuffer[AUTHMODE]=PICC_AUTHENT1A; // keyA
 874   2      
 875   2      	  //if (Status = M500PiccAuth(SerBuffer[AUTHMODE], card_snr,
 876   2      	  //			    SerBuffer[ADRCHKWR]>>2, SerBuffer[ADRCHKWR]) != MI_OK)
 877   2      	  if (Status = M500PiccAuthE2(SerBuffer[AUTHMODE], card_snr,
 878   2      				    SerBuffer[ADRCHKWR]>>2, SerBuffer[ADRCHKWR]) != MI_OK)
 879   2      	  {
 880   3      		break;
 881   3      	  }
 882   2      
 883   2      	  if (M500PiccRead(SerBuffer[ADRCHKWR], tmp) != MI_OK)
 884   2      	  {
 885   3      		break;
 886   3      	  }
 887   2      
 888   2      	  if (memcmp(&SerBuffer[DATACHKWR], tmp, 16) != MI_OK)
 889   2      	  {
 890   3      		Status = MIS_CHK_COMPERR;
 891   3      	  }
 892   2      	  else
 893   2      	  {
 894   3      		Status = MIS_CHK_OK;
 895   3      	  }
 896   2      	  break;
 897   2      
 898   2      
 899   2      	case 0x54:					// Set Port
 900   2      
 901   2      	  P1 |= (SerBuffer[PORTBYTE]&0x0f);  // set the desired port pin
 902   2      	  P1 &=  (SerBuffer[PORTBYTE]|0xf0); // clear the desired port pin
 903   2      	  if (SerBuffer[PORTBYTE]&0x10)
 904   2      		LED = ON;
 905   2      	  else
 906   2      		LED = OFF;
 907   2         	  Status = MI_OK;
 908   2         	  break;
 909   2      
 910   2      
 911   2      	case 0x55:					// Get Port
 912   2      
 913   2      	  SerBuffer[PORTBYTE] = P1&0xf;
 914   2      	  SerBuffer[LENGTH] = 1;
 915   2      	  Status = MI_OK;
 916   2      	  break;
C51 COMPILER V4.01,  MAIN                                                                  29/08/06  08:02:00  PAGE 15  

 917   2      
 918   2          case 0x56:                  		// Authentication2
 919   2      
 920   2      	  if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
 921   2      	  else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA
 922   2      
 923   2      	  //Status = M500PiccAuth(SerBuffer[MODE], card_snr,
 924   2      	  //			SerBuffer[SECNR], SerBuffer[AUTHADD]);
 925   2         	  Status = M500PiccAuthE2(SerBuffer[MODE], card_snr,

⌨️ 快捷键说明

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