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

📄 wrrc500.lst

📁 门禁系统原代码,KEIL开发环境,完整门禁协议,基于MFRC500和51单片机
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.01   WRRC500                                                               03/29/2008 15:10:44 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE WRRC500
OBJECT MODULE PLACED IN wrrc500.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wrrc500.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <absacc.h>
   2          #include <reg51.h>
   3          #include <intrins.h>
   4          
   5          
   6          #include "MfErrNo.h"
   7          #include "Rc500.h"
   8          #include "Rc500reg.h"
   9          #include "time.h"
  10          
  11          
  12          sfr      AUXR                    = 0x8E;
  13          sfr     WDTC = 0xC0;
  14          sfr         WDTD = 0x85;
  15          
  16          #define uchar unsigned char
  17          #define  inf_NACK    0x08    //Tag card error 
  18          
  19          sbit     S_INT = P3^3;
  20          sbit     S_RST = P1^0;
  21          sbit     RS485_DE = P1^4;
  22          
  23          unsigned int  MRC500_CNT;  //Delay  Counter
  24          unsigned char code keya[6] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
  25          unsigned char code writeblock6[16]={0x06,0x72,0x10,0x68,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  26                                              0x00,0x00,0x00,0x00,0x00,} ;
  27          unsigned char code writeblock8[16]={0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  28                                              0x00,0x00,0x00,0x00,0x00,} ;
  29          unsigned char  data snr[4];
  30          unsigned char  data databuf[16]; 
  31          unsigned char  receive_len,send_num,send_len;//串口接收字节长度
  32          unsigned char  receive_buf[20];
  33          unsigned char  send_buf[20];
  34          unsigned char  data cardnum[4];
  35          int data j,k,m,n,l;
  36          bit first_receive;
  37          bit send_status;
  38          bit receive_status;
  39          bit read_status;
  40          main()
  41          {
  42   1          unsigned char tt[2]; 
  43   1          int data i;
  44   1      
  45   1          AUXR        = 0x0;  /*EXTRAM=1*/
  46   1              TMOD = 0x21;
  47   1              TCON = 0x40;
  48   1              TH1 = 0xF4;//2400
  49   1              //TH1 = 0xFD;//9600
  50   1              TH0 = 0xD0;
  51   1              PCON = 0x00;//SMOD=0;
  52   1              SCON = 0x50;
  53   1              RS485_DE=0;
  54   1              IE = 0x92;//turn on EA,ES,ET0
  55   1              //EA=0;
C51 COMPILER V8.01   WRRC500                                                               03/29/2008 15:10:44 PAGE 2   

  56   1              TR1 = 1;
  57   1              TR0 = 0;
  58   1              WDTC = 0x09;//
  59   1              WDTD = 0xDD;//
  60   1              WDTC = WDTC|0x02;//
  61   1      
  62   1              send_len=0;
  63   1              receive_status = 0;//一串数据接收成功标志 1-成功
  64   1              read_status = 0;
  65   1      
  66   1              for(i=0;i<16;i++)
  67   1              {
  68   2                      databuf[i]=i;
  69   2              }
  70   1      
  71   1              WDTD = 0xDD;
  72   1              WDTC = WDTC|0x02;
  73   1          S_RST=0;
  74   1          for(i=0;i<3000;i++);
  75   1          S_RST=1;
  76   1              WDTD = 0xDD;
  77   1              WDTC = WDTC|0x02;
  78   1          for(i=0;i<3000;i++);
  79   1          S_RST=0;
  80   1              WDTD = 0xDD;
  81   1              WDTC = WDTC|0x02;
  82   1          for(i=0;i<3000;i++);
  83   1      
  84   1      
  85   1                              MCRReset_1();
  86   1                      
  87   1                                      WDTD = 0xDD;
  88   1                                      WDTC = WDTC|0x02;
  89   1                                      Mf500PcdConfig(); 
  90   1                                      WDTD = 0xDD;
  91   1                                      WDTC = WDTC|0x02;
  92   1                                      MRC500LoadKey1(keya) ;
  93   1                              
  94   1                                              WDTD = 0xDD;
  95   1                                              WDTC = WDTC|0x02;
  96   1              while(1)
  97   1                                      {
  98   2                              
  99   2                                              if(Mf500PiccCommonRequest(0x52, tt)!=MI_OK) continue;
 100   2                                              WDTD = 0xDD;
 101   2                                              WDTC = WDTC|0x02;
 102   2                                              j=15;
 103   2                                      if(Mf500PiccCascAnticoll(snr)!=MI_OK) continue;
 104   2                                                      WDTD = 0xDD;
 105   2                                                      WDTC = WDTC|0x02;
 106   2                                                      k=25;
 107   2                                              if(Mf500PiccCascSelect(snr)!=MI_OK) continue;
 108   2                                              
 109   2                                                      WDTD = 0xDD;
 110   2                                                      WDTC = WDTC|0x02;
 111   2                                                      m=35;
 112   2                                                      cardnum[0]=snr[0];
 113   2                                                      cardnum[1]=snr[1];
 114   2                                                      cardnum[2]=snr[2];
 115   2                                                      cardnum[3]=snr[3];
 116   2                                                
 117   2                                              if(MRC500PiccAuthentication( PICC_AUTHENT1A, snr,8)!=MI_OK) continue;
C51 COMPILER V8.01   WRRC500                                                               03/29/2008 15:10:44 PAGE 3   

 118   2                                                                      n=45;
 119   2                                                                      WDTD = 0xDD;
 120   2                                                                      WDTC = WDTC|0x02;
 121   2                                               //if(Mf500PiccWrite(8,writeblock6)!=MI_OK)  continue;
 122   2                                                          //WDTD = 0xDD;
 123   2                                                                      //WDTC = WDTC|0x02;                                                             
 124   2                                               if(Mf500PiccRead(8,databuf)!=MI_OK)  continue;
 125   2                                                                      l=55;
 126   2                                                      read_status=1;  
 127   2                                                      
 128   2                              WDTD = 0xDD;
 129   2                              WDTC = WDTC|0x02;
 130   2                              
 131   2                                      delay_1ms(1);
 132   2                                      send_buf[0] = 0x70;
 133   2                                      send_buf[1] = 0x0A;
 134   2                                      send_buf[2] = 0x0A;
 135   2                                      if(read_status==1) //有卡
 136   2                                      {
 137   3                                              send_buf[3]  = databuf[0];//取电卡性质
 138   3                                              send_buf[4]  = databuf[1];//楼栋号
 139   3                                              send_buf[5]  = databuf[2];//楼层号
 140   3                                              send_buf[6]  = databuf[3];//房间号
 141   3                                              send_buf[7]  = databuf[4];//卡号1
 142   3                                              send_buf[8]  = databuf[5];//卡号2
 143   3                                              send_buf[9]  = databuf[6];//卡号3
 144   3                                              send_buf[10] = databuf[7];//卡号4
 145   3                                              //set_checksum(11,send_buf);//加校验码
 146   3                                              send_len = 11;
 147   3                                      }
 148   2                                      else    //无卡
 149   2                                      { 
 150   3                                              send_buf[3] = 0x00;
 151   3                                              send_buf[4] = 0x00;
 152   3                                              send_buf[5] = 0x00;
 153   3                                              send_buf[6] = 0x00;
 154   3                                              //set_checksum(7,send_buf);//加校验码
 155   3                                              send_len =9;
 156   3                                      }
 157   2                                      send_num = 1;
 158   2                                      send_status = 1;
 159   2              
 160   2                      receive_status = 0;
 161   2      //      }
 162   2      
 163   2      //      rc500_status = MCRReset_1();
 164   2              read_status =0;
 165   2                   // Mf500PiccHalt() ;
 166   2      }
 167   1      
 168   1      
 169   1      } 
 170          
 171          
 172          
 173          ///////////////////////////////////////////////////////////////////////
 174          //      M I F A R E   M O D U L E   C O N F I G U R A T I O N
 175          ///////////////////////////////////////////////////////////////////////
 176          
 177          void Mf500PcdConfig(void)
 178          {
 179   1           RegClockQControl=0x0;
C51 COMPILER V8.01   WRRC500                                                               03/29/2008 15:10:44 PAGE 4   

 180   1           RegClockQControl=0x40;
 181   1      
 182   1           MRC500_CNT=0;

⌨️ 快捷键说明

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