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

📄 zlg500.lst

📁 RFID读卡终端C程序设计基于51单片机实现
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   ZLG500                                                                03/12/2008 18:52:54 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE ZLG500
OBJECT MODULE PLACED IN zlg500.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE zlg500.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg52.h"
   2          #include "string.h"
   3          #define uchar   unsigned char
   4          #define uint    unsigned int
   5          #define ulong   unsigned long
   6          
   7          //define spi
   8          #define SPI_REN()       IE0=0;EX0=1
   9          #define SPI_RDIS()      EX0=0
  10          
  11          //spi Error
  12          #define SPI_OK          0
  13          #define SPI_ERR         255
  14          
  15          extern uchar    spi_send(uchar idata *dp,uchar lenght);
  16          extern uchar    spi_rcv(uchar idata *dp);
  17          extern uchar    spi_init(void);
  18          
  19          uchar idata spi_buffer[26];
  20          //define spi_buffer
  21          #define SEQNR                   0
  22          #define COMMAND                 1
  23          #define STATUS                  1
  24          
  25          #define LENGTH                  2
  26          
  27          #define MODE                    3
  28          #define BCNT                    3
  29          #define ADR                     3
  30          #define SERNR                   3
  31          #define SIZE                    3
  32          #define TIME                    3
  33          #define TAGTYPE                 3
  34          #define INFO                    3
  35          #define DATA                                    3
  36          
  37          #define SECNR                   4
  38          #define DATABYTES               4
  39          #define VALUE                   4
  40          
  41          #define NKEY                    5
  42          
  43          #define AUTHMODE                7
  44          #define ADRCHKWR                8
  45          #define DATACHKWR               9
  46          
  47          bit bdata newdata=0;
  48          //mifare error
  49          #define MI_OK   0
  50          #define MI_CRCERR               2
  51          
  52          //Timer 0
  53          #define OSC_FREQ        11059200L               //MCU晶振频率
  54          #define EVLT_50MS       65536L-OSC_FREQ/240L    //50ms的初值
  55          #define H_50MS          EVLT_50MS>>8
C51 COMPILER V7.20   ZLG500                                                                03/12/2008 18:52:54 PAGE 2   

  56          #define L_50MS          EVLT_50MS       
  57          #define T0_evaluate()   TH0=H_50MS;TL0=L_50MS;  //TH1=0x2c;TL1=0xb0;    
  58                  
  59          void spi_int(void) interrupt 0 using 1
  60          {
  61   1              spi_rcv(spi_buffer);
  62   1              newdata=1;
  63   1      }
  64          
  65          uchar zlg500cmd(uchar length)
  66          {       uchar spi_wdg=10;
  67   1              uchar i,BCC_sum;
  68   1              
  69   1              spi_buffer[length]=spi_buffer[0];
  70   1              for(i=1;i<length;i++)
  71   1              {
  72   2                      spi_buffer[length]^=spi_buffer[i];
  73   2              }
  74   1              spi_buffer[length]=~spi_buffer[length];
  75   1              
  76   1              T0_evaluate();
  77   1              if(spi_send(spi_buffer,length+1)!=SPI_OK)
  78   1                      return SPI_ERR;
  79   1              
  80   1              ET0=0;
  81   1              TF0=0;
  82   1              TR0=1;
  83   1              SPI_REN();
  84   1              while(newdata==0&&spi_wdg!=0)
  85   1              {
  86   2                      if(TF0==1)
  87   2                      {
  88   3                              T0_evaluate();TF0=0;
  89   3                              spi_wdg--;
  90   3                      }
  91   2              }
  92   1              TR0=0;
  93   1              SPI_RDIS();
  94   1              
  95   1              if(newdata==0)  return SPI_ERR;
  96   1              newdata=0;
  97   1              
  98   1              
  99   1              BCC_sum=spi_buffer[0];
 100   1              for(i=1;i<(spi_buffer[LENGTH]+3);i++)
 101   1              {
 102   2                      BCC_sum^=spi_buffer[i];
 103   2              }
 104   1              if(BCC_sum==~spi_buffer[spi_buffer[LENGTH]+3])
 105   1                      return SPI_OK;
 106   1              else    return MI_CRCERR;
 107   1      }
 108          
 109          uchar mifs_request(uchar _Mode,uchar idata *_TagType)
 110          {       
 111   1              spi_buffer[SEQNR]=0;
 112   1              spi_buffer[COMMAND]=0x41;
 113   1              spi_buffer[LENGTH]=0x01;
 114   1              spi_buffer[MODE]=_Mode;
 115   1              
 116   1              if(zlg500cmd(4)!=SPI_OK)
 117   1                      return SPI_ERR;
C51 COMPILER V7.20   ZLG500                                                                03/12/2008 18:52:54 PAGE 3   

 118   1                      
 119   1              if(spi_buffer[STATUS]==MI_OK)
 120   1              {
 121   2                      _TagType[0]=spi_buffer[TAGTYPE];
 122   2                      _TagType[1]=spi_buffer[TAGTYPE+1];
 123   2              }
 124   1              return spi_buffer[STATUS];
 125   1      }
 126          
 127          uchar mifs_anticoll(uchar _Bcnt,uchar idata *_SNR)
 128          {
 129   1              spi_buffer[SEQNR]=0;
 130   1              spi_buffer[COMMAND]=0x42;
 131   1              spi_buffer[LENGTH]=0x01;
 132   1              spi_buffer[MODE]=_Bcnt;
 133   1              
 134   1              if(zlg500cmd(4)!=SPI_OK)
 135   1                      return SPI_ERR;
 136   1                      
 137   1              if(spi_buffer[STATUS]==MI_OK)
 138   1              {
 139   2                      memcpy(_SNR,&spi_buffer[SERNR],4);
 140   2              }
 141   1              return spi_buffer[STATUS];
 142   1      }
 143          
 144          uchar mifs_select(uchar idata *_SNR,uchar idata *_Size)
 145          {
 146   1              spi_buffer[SEQNR]=0;
 147   1              spi_buffer[COMMAND]=0x43;
 148   1              spi_buffer[LENGTH]=0x04;
 149   1              memcpy(&spi_buffer[SERNR],_SNR,4);
 150   1                      
 151   1              if(zlg500cmd(7)!=SPI_OK)
 152   1                      return SPI_ERR;
 153   1                      
 154   1              if(spi_buffer[STATUS]==MI_OK)
 155   1              {
 156   2                      *_Size=spi_buffer[SIZE];
 157   2              }
 158   1              return spi_buffer[STATUS];      
 159   1      }
 160          
 161          uchar mifs_authentication(uchar _Mode,uchar _SecNr)
 162          {
 163   1              spi_buffer[SEQNR]=0;
 164   1              spi_buffer[COMMAND]=0x44;
 165   1              spi_buffer[LENGTH]=0x02;
 166   1              spi_buffer[MODE]=_Mode;
 167   1              spi_buffer[SECNR]=_SecNr;
 168   1              
 169   1              if(zlg500cmd(5)!=SPI_OK)
 170   1                      return SPI_ERR;
 171   1              
 172   1              return spi_buffer[STATUS];      
 173   1      }
 174          
 175          uchar mifs_authentication2(uchar _Mode,uchar _SecNr,uchar _KeyNr)
 176          {
 177   1              spi_buffer[SEQNR]=0;
 178   1              spi_buffer[COMMAND]=0x72;
 179   1              spi_buffer[LENGTH]=0x03;
C51 COMPILER V7.20   ZLG500                                                                03/12/2008 18:52:54 PAGE 4   

 180   1              spi_buffer[MODE]=_Mode;
 181   1              spi_buffer[SECNR]=_SecNr;
 182   1              spi_buffer[DATA+2]=_KeyNr;
 183   1              
 184   1              if(zlg500cmd(6)!=SPI_OK)
 185   1                      return SPI_ERR;
 186   1              
 187   1              return spi_buffer[STATUS];      
 188   1      }
 189          
 190          uchar mifs_authKey(uchar _Mode,uchar _SecNr,uchar *_Key)
 191          {
 192   1              spi_buffer[SEQNR]=0;
 193   1              spi_buffer[COMMAND]=0x73;
 194   1              spi_buffer[LENGTH]=0x08;
 195   1              spi_buffer[DATA]=_Mode;
 196   1              spi_buffer[DATA+1]=_SecNr;
 197   1              memcpy(&spi_buffer[DATA+2],_Key,6);
 198   1                      
 199   1              if(zlg500cmd(11)!=SPI_OK)
 200   1                      return SPI_ERR;
 201   1              
 202   1              return spi_buffer[STATUS];      
 203   1      }
 204          
 205          uchar mifs_halt(void)
 206          {
 207   1              spi_buffer[SEQNR]=0;
 208   1              spi_buffer[COMMAND]=0x45;
 209   1              spi_buffer[LENGTH]=0x00;
 210   1              
 211   1              if(zlg500cmd(3)!=SPI_OK)
 212   1                      return SPI_ERR;
 213   1              
 214   1              return spi_buffer[STATUS];      
 215   1      }
 216          
 217          uchar mifs_read(uchar _Adr,uchar idata *_Data)
 218          {
 219   1              spi_buffer[SEQNR]=0;
 220   1              spi_buffer[COMMAND]=0x46;
 221   1              spi_buffer[LENGTH]=0x01;
 222   1              spi_buffer[ADR]=_Adr;
 223   1                      
 224   1              if(zlg500cmd(4)!=SPI_OK)
 225   1                      return SPI_ERR;
 226   1                      
 227   1              if(spi_buffer[STATUS]==MI_OK)
 228   1              {
 229   2                      memcpy(_Data,&spi_buffer[DATABYTES-1],16);
 230   2              }
 231   1              return spi_buffer[STATUS];              
 232   1      }
 233          
 234          uchar mifs_write(uchar _Adr,uchar idata *_Data)
 235          {
 236   1              spi_buffer[SEQNR]=0;
 237   1              spi_buffer[COMMAND]=0x47;
 238   1              spi_buffer[LENGTH]=17;
 239   1              spi_buffer[ADR]=_Adr;
 240   1              memcpy(&spi_buffer[DATABYTES],_Data,16);
 241   1                      
C51 COMPILER V7.20   ZLG500                                                                03/12/2008 18:52:54 PAGE 5   

 242   1              if(zlg500cmd(20)!=SPI_OK)
 243   1                      return SPI_ERR;
 244   1              
 245   1              return spi_buffer[STATUS];              

⌨️ 快捷键说明

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