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

📄 m500auc.lst

📁 奥尔斯公司pxa270试验箱射频卡读写器相关资料
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE M500AUC
OBJECT MODULE PLACED IN G:\RFCARD~1\下位机~1\扩展板\M500AUC.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE G:\RFCARD~1\下位机~1\扩展板\M500AUC.C DB SB OE

stmt level    source

   1          #define M500_GLOBALS
   2          
   3          #include <string.h>
   4          #include <stdio.h>
   5          #include <absacc.h>
   6          #include <intrins.h>
   7          
   8          #include "Mfreg500.h"
   9          #include "MfErrNo.h"
  10          #include "reg52.h"
  11          #include "M500AuC.h"
  12          
  13          #define GetRegPage(addr)    (0x80 | (addr>>3))
  14          #define nocard			    0
  15          #define mifare1			    1
  16          #define mifarepro		    2
  17          #define mifarelight		    3
  18          #define unknowncard		    4
  19          #define NO_TIMER2                   1
  20          
  21          ///////////////////////////////////////////////////////////////////////
  22          // 往一个地址写一个数据
  23          // Address: 地址
  24          // value: 数据
  25          ///////////////////////////////////////////////////////////////////////
  26          void WriteRawIO(unsigned char Address,unsigned char value)
  27          {
  28   1      	XBYTE[Address]=value;
  29   1      }
  30          
  31          ///////////////////////////////////////////////////////////////////////
  32          // 从一个地址读出一个数据
  33          // Address: 地址
  34          // value: 数据
  35          ///////////////////////////////////////////////////////////////////////
  36          unsigned char ReadRawIO(unsigned char Address)
  37          {
  38   1      	return XBYTE[Address];
  39   1      }
  40          
  41          ///////////////////////////////////////////////////////////////////////
  42          // 往一个地址写一个数据(EEPROM)
  43          // Address: 地址
  44          // value: 数据
  45          ///////////////////////////////////////////////////////////////////////
  46          void WriteIO(unsigned char Address, unsigned char value)
  47          {
  48   1          WriteRawIO(0x00,GetRegPage(Address));
  49   1          WriteRawIO(Address,value);
  50   1      }
  51          
  52          ///////////////////////////////////////////////////////////////////////
  53          // 从一个地址读出一个数据(EEPROM)
  54          // Address: 地址
  55          // value: 数据
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 2   

  56          ///////////////////////////////////////////////////////////////////////
  57          unsigned char ReadIO(unsigned char Address)
  58          {
  59   1         WriteRawIO(0x00,GetRegPage(Address));
  60   1         return ReadRawIO(Address);
  61   1      }
  62          
  63          ///////////////////////////////////////////////////////////////////////
  64          // 设置定时时间
  65          // tmoLength: 定时时间长度
  66          ///////////////////////////////////////////////////////////////////////
  67          void M500PcdSetTmo(unsigned char tmoLength)
  68          {
  69   1          switch(tmoLength)
  70   1          {
  71   2              case 1:
  72   2                  WriteIO(RegTimerClock,0x07);
  73   2                  WriteIO(RegTimerReload,0x6a);
  74   2                  break;
  75   2              case 2:
  76   2                  WriteIO(RegTimerClock,0x07);
  77   2                  WriteIO(RegTimerReload,0xa0);
  78   2                  break;
  79   2              case 3:
  80   2                  WriteIO(RegTimerClock,0x09);
  81   2                  WriteIO(RegTimerReload,0xa0);
  82   2                  break;
  83   2              case 4:
  84   2                  WriteIO(RegTimerClock,0x09);
  85   2                  WriteIO(RegTimerReload,0xff);
  86   2                  break;
  87   2              case 5:
  88   2                  WriteIO(RegTimerClock,0x0b);
  89   2                  WriteIO(RegTimerReload,0xff);
  90   2                  break;
  91   2              case 6:
  92   2                  WriteIO(RegTimerClock,0x0d);
  93   2                  WriteIO(RegTimerReload,0xff);
  94   2                  break;
  95   2              case 7:
  96   2                  WriteIO(RegTimerClock,0x0f);
  97   2                  WriteIO(RegTimerReload,0xff);
  98   2                  break;
  99   2              default:
 100   2                  WriteIO(RegTimerClock,0x07);
 101   2                  WriteIO(RegTimerReload,tmoLength);
 102   2                  break;
 103   2          }
 104   1      }
 105          
 106          ///////////////////////////////////////////////////////////////////////
 107          // Request Command defined in ISO14443(Mifare)
 108          // cmd: RC500 指令
 109          // rcv: 接收指令返回值的地址
 110          // info: 接收命令返回信息的地址???????????????????
 111          ///////////////////////////////////////////////////////////////////////
 112          char  M500PcdCmd(unsigned char cmd,
 113                         volatile unsigned char data *rcv,
 114                          MfCmdInfo idata *info)
 115          {
 116   1          char          idata status    = MI_OK;
 117   1          char          idata tmpStatus ;
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 3   

 118   1          unsigned char idata lastBits;
 119   1          unsigned int  idata timecnt = 0;
 120   1          unsigned char idata irqEn = 0x00;
 121   1          unsigned char idata waitFor = 0x00;
 122   1          unsigned char idata timerCtl  = 0x00;
 123   1      
 124   1          WriteIO(RegInterruptEn,0x7F);
 125   1          WriteIO(RegInterruptRq,0x7F);
 126   1          WriteIO(RegCommand,PCD_IDLE);
 127   1      
 128   1          FlushFIFO();
 129   1          MpIsrInfo = info;
 130   1          MpIsrOut = rcv;
 131   1          info->irqSource = 0x00;
 132   1          switch(cmd)
 133   1          {
 134   2              case PCD_IDLE:
 135   2                  irqEn = 0x00;
 136   2                  waitFor = 0x00;
 137   2                  break;
 138   2              case PCD_WRITEE2:
 139   2                  irqEn = 0x11;
 140   2                  waitFor = 0x10;
 141   2                  break;
 142   2              case PCD_READE2:
 143   2                  irqEn = 0x07;
 144   2                  waitFor = 0x04;
 145   2                  break;
 146   2              case PCD_LOADCONFIG:
 147   2              case PCD_LOADKEYE2:
 148   2              case PCD_AUTHENT1:
 149   2                  irqEn = 0x05;
 150   2                  waitFor = 0x04;
 151   2                  break;
 152   2              case PCD_CALCCRC:
 153   2                  irqEn = 0x11;
 154   2                  waitFor = 0x10;
 155   2                  break;
 156   2              case PCD_AUTHENT2:
 157   2                  irqEn = 0x04;
 158   2                  waitFor = 0x04;
 159   2                  break;
 160   2              case PCD_RECEIVE:
 161   2                  info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4);
 162   2                  irqEn = 0x06;
 163   2                  waitFor = 0x04;
 164   2                  break;
 165   2              case PCD_LOADKEY:
 166   2                  irqEn = 0x05;
 167   2                  waitFor = 0x04;
 168   2                  break;
 169   2              case PCD_TRANSMIT:
 170   2                  irqEn = 0x05;
 171   2                  waitFor = 0x04;
 172   2                  break;
 173   2              case PCD_TRANSCEIVE:
 174   2      	     info->nBitsReceived = -(ReadIO(RegBitFraming) >> 4);
 175   2                  irqEn = 0x3D;
 176   2                  waitFor = 0x04;
 177   2                  break;
 178   2              default:
 179   2                  status = MI_UNKNOWN_COMMAND;
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 4   

 180   2          }
 181   1          if (status == MI_OK)
 182   1          {
 183   2              irqEn |= 0x20;
 184   2              waitFor |= 0x20;
 185   2              timecnt=1000;
 186   2              WriteIO(RegInterruptEn,irqEn | 0x80);
 187   2              WriteIO(RegCommand,cmd);
 188   2              while (!(MpIsrInfo->irqSource & waitFor||!(timecnt--)));
 189   2              WriteIO(RegInterruptEn,0x7F);
 190   2              WriteIO(RegInterruptRq,0x7F);
 191   2              SetBitMask(RegControl,0x04);
 192   2              WriteIO(RegCommand,PCD_IDLE);
 193   2              if (!(MpIsrInfo->irqSource & waitFor))
 194   2              {
 195   3                  status = MI_ACCESSTIMEOUT;
 196   3              }
 197   2              else
 198   2              {
 199   3                  status = MpIsrInfo->status;
 200   3              }
 201   2              if (status == MI_OK)
 202   2              {
 203   3                  if (tmpStatus = (ReadIO(RegErrorFlag) & 0x17))
 204   3                  {
 205   4                      if (tmpStatus & 0x01)
 206   4                      {
 207   5                          info->collPos = ReadIO(RegCollPos);
 208   5                          status = MI_COLLERR;
 209   5                      }
 210   4                      else
 211   4                      {
 212   5                          info->collPos = 0;
 213   5                          if (tmpStatus & 0x02)
 214   5                          {
 215   6                              status = MI_PARITYERR;
 216   6                          }
 217   5                      }
 218   4                      if (tmpStatus & 0x04)
 219   4                      {
 220   5                          status = MI_FRAMINGERR;
 221   5                      }
 222   4                      if (tmpStatus & 0x10)
 223   4                      {
 224   5                          FlushFIFO();
 225   5                          status = MI_OVFLERR;
 226   5                      }
 227   4       	            if (tmpStatus & 0x08)
 228   4      	            {
 229   5                          status = MI_CRCERR;
 230   5      	            }
 231   4                      if (status == MI_OK)
 232   4                          status = MI_NY_IMPLEMENTED;
 233   4                  }
 234   3                  if (cmd == PCD_TRANSCEIVE)
 235   3                  {
 236   4                      lastBits = ReadIO(RegSecondaryStatus) & 0x07;
 237   4                      if (lastBits)
 238   4                          info->nBitsReceived += (info->nBytesReceived-1) * 8 + lastBits;
 239   4                      else
 240   4                          info->nBitsReceived += info->nBytesReceived * 8;
 241   4                  }
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 5   

 242   3              }
 243   2              else
 244   2              {
 245   3                  info->collPos = 0x00;
 246   3              }
 247   2          }
 248   1          MpIsrInfo = 0;
 249   1          MpIsrOut  = 0;
 250   1          return status;
 251   1      }
 252          
 253          ///////////////////////////////////////////////////////////////////////
 254          // 置一个bit
 255          // reg: 寄存器名
 256          // mask: 掩码值
 257          ///////////////////////////////////////////////////////////////////////
 258          char SetBitMask(unsigned char reg,unsigned char mask)
 259          {
 260   1          char idata tmp = 0x00;
 261   1      
 262   1          tmp = ReadIO(reg);
 263   1          WriteIO(reg,tmp | mask);  // set bit mask
 264   1          return 0x00;
 265   1      }
 266          
 267          ///////////////////////////////////////////////////////////////////////
 268          // 清一个bit
 269          // reg: 寄存器名
 270          // mask: 掩码值
 271          ///////////////////////////////////////////////////////////////////////
 272          char ClearBitMask(unsigned char reg,unsigned char mask)
 273          {
 274   1          char idata tmp = 0x00;
 275   1      
 276   1          tmp = ReadIO(reg);
 277   1          WriteIO(reg,tmp & ~mask);  // clear bit mask

⌨️ 快捷键说明

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