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

📄 main.lst

📁 读ISO14443 CPU卡源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.05a   MAIN                                                                 07/05/2010 23:34:44 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg52.h"
   2          #include <string.h>
   3          #include <intrins.h>
   4          #include "main.h"
   5          #include "slrc632.h"
   6          #include "iso14443a.h"
   7          
   8          
   9          #include <absacc.h>
  10          //硬件版本号         
  11          unsigned char code hardmodel[12]  = {"SL601F-0512"};  
  12          
  13          bit g_bReceOk;                                              //正确接收到上位机指令标志
  14          bit g_bReceAA;                                              //接收到上位机发送的AA字节标志
  15          bit g_bRc632Ok;                                             //RC632复位正常标志
  16          bit g_bIblock;
  17          
  18          unsigned int  g_cReceNum;                                   //接收到上位机的字节数
  19          unsigned int  data g_cCommand;                              //接收到的命令码
  20          unsigned char data g_cSNR[4];                               //M1卡序列号
  21          unsigned char g_cIcdevH;                                    //设备标记
  22          unsigned char g_cIcdevL;                                    //设备标记
  23          unsigned char g_cFWI;                                       //
  24          unsigned char g_cCidNad;                                    //
  25          unsigned char idata g_cReceBuf[64];                         //和上位机通讯时的缓冲区
  26          
  27          struct TranSciveBuffer{unsigned char MfCommand;
  28                                 unsigned int  MfLength;
  29                                 unsigned char MfData[64];
  30                                };
  31          void main( )
  32          {    
  33   1           
  34   1           InitializeSystem( );
  35   1           Rc632Ready( );
  36   1           PcdConfigISOType( 'A' );    
  37   1           while ( 1 )
  38   1           {   
  39   2               if (g_bReceOk)
  40   2               {
  41   3      
  42   3                       g_bReceOk = 0;     
  43   3                       switch(g_cCommand)
  44   3                       {
  45   4                           case 0x0101:
  46   4                              ComSetBound();               break;
  47   4                           case 0x0104:
  48   4                              ComGetHardModel();           break;
  49   4                           case 0x0108:
  50   4                              ComM632PcdConfigISOType();   break;  
  51   4                           case 0x010C:
  52   4                              ComPcdAntenna();             break; 
  53   4                                        
  54   4                           case 0x0201:
  55   4                              ComRequestA();               break;  
C51 COMPILER V8.05a   MAIN                                                                 07/05/2010 23:34:44 PAGE 2   

  56   4                           case 0x0202:
  57   4                              ComAnticoll();               break;        
  58   4                           case 0x0203:
  59   4                              ComSelect();                 break;
  60   4                           case 0x0204:
  61   4                              ComHlta();                   break;
  62   4                           case 0x0207:
  63   4                              ComAuthentication();         break; 
  64   4                           case 0x0208:
  65   4                              ComM1Read();                 break;
  66   4                           case 0x0209:
  67   4                              ComM1Write();                break;
  68   4                           case 0x020A:
  69   4                              ComM1Initval();              break; 
  70   4                           case 0x020B:
  71   4                              ComM1Readval();              break;
  72   4                           case 0x020C:
  73   4                              ComM1Decrement();            break;
  74   4                           case 0x020D:
  75   4                              ComM1Increment();            break;  
  76   4                           case 0x020E:
  77   4                              ComM1Restore();              break;
  78   4                           case 0x020F:
  79   4                              ComM1Transfer();             break; 
  80   4                           case 0x0210:
  81   4                              ComTypeARst();               break; 
  82   4                           case 0x0211:
  83   4                              ComTypeACOS();               break; 
  84   4      
  85   4                           case 0x0303:
  86   4                              ComCL_Deselect();            break;
  87   4      
  88   4                           default:
  89   4                              AnswerErr( FAULT11 );         break;
  90   4                       }
  91   3                   ES = 1;
  92   3                }
  93   2           }
  94   1      }
  95          
  96          
  97          
  98          /////////////////////////////////////////////////////////////////////
  99          //系统初始化
 100          /////////////////////////////////////////////////////////////////////
 101          void InitializeSystem()
 102          {
 103   1          TMOD &= 0x0F;
 104   1          TMOD |= 0x21;
 105   1          PCON |= 0x80;
 106   1          SCON  = 0x50;
 107   1          TH1 = TL1 = BOUND19200; 
 108   1          TR1=1;
 109   1          P0 = P1 = P2 = P3 = 0xFF;
 110   1          IE |= 0x90;
 111   1      }
 112          
 113          /////////////////////////////////////////////////////////////////////
 114          //初始化RC632
 115          /////////////////////////////////////////////////////////////////////
 116          void Rc632Ready()
 117          {
C51 COMPILER V8.05a   MAIN                                                                 07/05/2010 23:34:44 PAGE 3   

 118   1          char status;
 119   1          DelayMs(100);
 120   1          DelayMs(100);
 121   1              DelayMs(100);
 122   1      
 123   1      
 124   1      
 125   1          status = PcdReset();
 126   1          if(status != MI_OK)
 127   1          {
 128   2              DelayMs(10);
 129   2              status = PcdReset();
 130   2          } 
 131   1          if(status != MI_OK)
 132   1          {
 133   2              DelayMs(10);
 134   2              status = PcdReset();
 135   2          } 
 136   1          if(status == MI_OK)
 137   1          {
 138   2              g_bRc632Ok = 1;
 139   2              sond       = 1;                //蜂鸣器响一声,表示RC632复位成功
 140   2                      DelayMs(250);
 141   2                      sond       = 0;
 142   2          }       
 143   1      }
 144                  
 145          /////////////////////////////////////////////////////////////////////
 146          //响应上位机发送的设置波特率命令
 147          /////////////////////////////////////////////////////////////////////
 148          void ComSetBound()
 149          {
 150   1          unsigned char bound = g_cReceBuf[6];
 151   1          if (bound > 7)
 152   1          {   AnswerErr(FAULT12);    }
 153   1          else
 154   1          {
 155   2              AnswerCommandOk();
 156   2              TR1 = 0;
 157   2              switch(bound)
 158   2              {
 159   3                       case 0:
 160   3                            TH1=TL1=BOUND4800;
 161   3                            break;
 162   3                       case 1:
 163   3                            TH1=TL1=BOUND9600;
 164   3                            break;
 165   3                       case 2:
 166   3                            TH1=TL1=BOUND14400;
 167   3                            break;
 168   3                       case 3:
 169   3                            TH1=TL1=BOUND19200;
 170   3                            break;
 171   3                       case 4:
 172   3                            TH1=TL1=BOUND28800;
 173   3                            break;
 174   3                       case 5:
 175   3                            TH1=TL1=BOUND38400;
 176   3                            break;
 177   3                       case 6:
 178   3                            TH1=TL1=BOUND57600;
 179   3                            break;
C51 COMPILER V8.05a   MAIN                                                                 07/05/2010 23:34:44 PAGE 4   

 180   3                       case 7:
 181   3                            TH1=TL1=BOUND115200;
 182   3                            break;
 183   3                       default:
 184   3                            break;
 185   3              }
 186   2              TR1 = 1;
 187   2           }          
 188   1      }
 189          
 190          
 191          /////////////////////////////////////////////////////////////////////
 192          //响应上位机发送的读取硬件版本号命令
 193          /////////////////////////////////////////////////////////////////////
 194          void ComGetHardModel()
 195          {
 196   1          memcpy(&g_cReceBuf[0], &hardmodel[0], sizeof(hardmodel));
 197   1          AnswerOk(&g_cReceBuf[0], sizeof(hardmodel));
 198   1      }    
 199          
 200              
 201          /////////////////////////////////////////////////////////////////////
 202          //响应上位机发送的设置RC632协议命令,ISO14443A/B或ISO15693
 203          /////////////////////////////////////////////////////////////////////
 204          void ComM632PcdConfigISOType()
 205          {
 206   1           if (MI_OK == PcdConfigISOType(g_cReceBuf[6]))
 207   1           {    AnswerCommandOk();    }
 208   1           else
 209   1           {    AnswerErr(-1);   }  
 210   1      } 
 211             
 212          /////////////////////////////////////////////////////////////////////
 213          //响应上位机发送的天线命令
 214          /////////////////////////////////////////////////////////////////////
 215          void ComPcdAntenna()
 216          {
 217   1          char status;
 218   1          if (!g_cReceBuf[6])
 219   1          {   status = PcdAntennaOff();   }
 220   1          else
 221   1          {  
 222   2              DelayMs(10); 
 223   2              status = PcdAntennaOn();
 224   2              DelayMs(10);
 225   2          }
 226   1          if (status == MI_OK)
 227   1          {   AnswerCommandOk();    }
 228   1          else 
 229   1          {   AnswerErr(FAULT10);   }
 230   1      }    
 231          
 232          /////////////////////////////////////////////////////////////////////
 233          //响应上位机发送的寻A卡命令
 234          /////////////////////////////////////////////////////////////////////
 235          void ComRequestA()
 236          {
 237   1          unsigned char atq[2];
 238   1              char status;
 239   1              status = PcdRequest(g_cReceBuf[6], atq);
 240   1              if (status != MI_OK)
 241   1              {    status = PcdRequest(g_cReceBuf[6], atq);   }
C51 COMPILER V8.05a   MAIN                                                                 07/05/2010 23:34:44 PAGE 5   

 242   1          if (status == MI_OK)
 243   1          {    AnswerOk(atq,2);     }
 244   1          else
 245   1          {    AnswerErr(FAULT20);   }        
 246   1      }
 247          
 248          /////////////////////////////////////////////////////////////////////
 249          //响应上位机发送的A卡防冲撞命令
 250          /////////////////////////////////////////////////////////////////////
 251          void ComAnticoll()
 252          { 
 253   1          if (MI_OK == PcdAnticoll(&g_cSNR))
 254   1          {    AnswerOk(&g_cSNR,4);  }
 255   1          else
 256   1          {    AnswerErr(FAULT10);   }        
 257   1      }
 258          
 259          /////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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