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

📄 duxiexitongrc500.lst

📁 #include <stc12c2052AD.H>// 标准库的头文件 #include <intrins.h> #include <absacc.h> #d
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   DUXIEXITONGRC500                                                      06/29/2008 08:54:14 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DUXIEXITONGRC500
OBJECT MODULE PLACED IN DUXIExitongRC500.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DUXIExitongRC500.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /****************************************************************/
   2          /* main程序头文件 */
   3          /* 主要功能:常量定义 */
   4          /* 修改:liguozhen*/
   5          /* 时间:2008年2月
   6          /****************************************************************/
   7          
   8          #include <reg51.h>
   9          #include <intrins.h>
  10          #include <string.h>
  11          #include <absacc.h>
  12          //数据类型定义
  13          #define  ulong unsigned long
  14          #define  uchar unsigned char
  15          #define  uint unsigned int
  16          ////////page00//////////////////////////////////////////////////////////////////////
  17          #define  Page_Sel   XBYTE[0x7000]//选择寄存器页
  18          #define  Command XBYTE[0x7001]   //启动和停止命令的执行
  19          #define  FIFO   XBYTE[0x7002]  //64 字节FIFO 缓冲区输入和输出
  20          #define  PrimaryStatus XBYTE[0x7003] //接收器和发送器以及FIFO 缓冲区状态标志
  21          #define  FIFO_Length  XBYTE[0x7004]//FIFO 中缓冲的字节数
  22          #define  SecondaryStatus  XBYTE[0x7005]//不同的状态标志
  23          #define  InterruptEn  XBYTE[0x7006]//使能和禁止中断请求通过的控制位
  24          #define  Int_Req  XBYTE[0x7007]   //中断请求标志
  25          ////////page08//////////////////////////////////////////////////////////////////////
  26          #define  Control  XBYTE[0x7009]   //不同的控制标志例如定时器节电
  27          #define  ErrorFlag  XBYTE[0x700a] //显示上次命令执行错误状态的错误标志
  28          #define  CollPos  XBYTE[0x700b]   //RF 接口检测到的第一个冲突位的位置
  29          #define  TimerValue XBYTE[0x700c] //定时器的实际值
  30          #define  CRCResultLSB XBYTE[0x700d]// CRC 协处理器寄存器的最低位    
  31          #define  CRCResultMSB XBYTE[0x700e]//CRC 协处理器寄存器的最高位
  32          #define  Bit_Frame XBYTE[0x700f]//位方式帧的调节
  33          ////////page10////////////////////////////////////////////////////////////////////////
  34          #define  TxControl XBYTE[0x7011]  //天线驱动脚TX1 和TX2 的逻辑状态控制
  35          #define  CWConductance  XBYTE[0x7012]//选择天线驱动脚TX1 和TX2 的电导率
  36          #define  PreSet13 XBYTE[0x7013]//ModeConductance 该值不会改变
  37          #define  PreSet14 XBYTE[0x7014]// CoderControl该值不会改变
  38          #define  ModWidth XBYTE[0x7015]// 选择调整脉冲的宽度
  39          #define  PreSet17  XBYTE[0x7017]//该值不会改变TypeBFraming
  40          /////////page18///////////////////////////////////////////////////////////////////////
  41          #define RxControl1 XBYTE[0x7019]//控制接收器状态
  42          #define DecodeControl XBYTE[0x701a]//控制解码器状态
  43          #define BitPhase  XBYTE[0x701b]//选择发送器和接收器时钟之间的位相位
  44          #define RxThreshold XBYTE[0x701c]//选择位解码器的阀值
  45          #define PreSet1D XBYTE[0x701d]//该值不会改变
  46          #define  Rxcontrol2  XBYTE[0x701e]//控制解码器状态和定义接收器的输入源
  47          #define  ClockQControl  XBYTE[0x701f]//控制时钟产生用于90o相移的Q 信道时钟
  48          ////////page20////////////////////////////////////////////////////////////////////////
  49          #define  RxWait  XBYTE[0x7021]  //选择发送后接收器启动前的时间间隔
  50          #define  ChannelRedundancy  XBYTE[0x7022]//选择RF 信道上数据完整性检测的类型和模式
  51          #define  CRCPresetLSB       XBYTE[0x7023]//CRC 寄存器预设值的低字节
  52          #define  CRCPresetMSB       XBYTE[0x7024]//CRC 寄存器预设值的gao字节
  53          #define  PreSet25           XBYTE[0x7025]//该值不会改变
  54          #define  MFOUTSelect XBYTE[0x7026]//选择输出到管脚MFOUT 的内部信号//PreSet27
  55          ///////prge28////////////////////////////////////////////////////////////////////
C51 COMPILER V7.06   DUXIEXITONGRC500                                                      06/29/2008 08:54:14 PAGE 2   

  56          #define  FIFOLevel  XBYTE[0x7029]   //定义FIFO 上溢和下溢警告界限
  57          #define  TimerClock XBYTE[0x702a]  //选择定时器时钟的分频器
  58          #define  TimerControl XBYTE[0x702b]//选择定时器的起始和停止条件
  59          #define  TimerReload  XBYTE[0x702c]//定义定时器的预装值
  60          #define  IRQPinConfig XBYTE[0x702d]//配置IRQ 脚的输出状态//PreSet2E//PreSet2f不变
  61          #define  TestAnaSelect  XBYTE[0x703a] //选择模拟测试模式
  62          #define  TestDigiSelect  XBYTE[0x703d] //选择数字测试模式
  63          /////////////////////////////////////////////////////////////////////////////////
  64          #define RF_CMD_REQUEST_STD 0x26
  65          #define RF_CMD_REQUEST_ALL 0x52
  66          #define RF_CMD_ANTICOL 0x93
  67          #define RF_CMD_SELECT 0x93
  68          #define RF_CMD_AUTH_LA 0x60
  69          #define RF_CMD_AUTH_LB 0x61
  70          #define RF_CMD_READ 0x30
  71          #define RF_CMD_WRITE 0xa0
  72          #define RF_CMD_INC 0xC1
  73          #define RF_CMD_DEC 0xC0
  74          #define RF_CMD_RESTORE 0xC2
  75          #define RF_CMD_TRANSFER 0xB0
  76          #define RF_CMD_HALT 0x50
  77          #define  RF_CMD_REQUEST_ALL 0x52
  78          #define  RC500_AUTHERR        4 //验证不成功        
  79          #define  RC500_FRAMINGERR    20
  80          #define  RC500_SELERR         9
  81          #define KEYA    0x00
  82          #define KEYB    0x04
  83          #define ReadE2 0x03     //读FM1715 EEPROM命令
  84          #define WriteE2 0x01    //写FM1715 EEPROM命令
  85          #define Authent1  0x0c   //验证命令认证过程第1步
  86          #define Authent2  0x14   //验证命令认证过程第2步
  87          #define LoadKeyE2 0x0b  //将密钥从EEPROM复制到KEY缓存
  88          #define LoadKey 0x19    //将密钥从FIFO缓存复制到KEY缓存
  89          #define  RF_TimeOut 0xfff       //发送命令延时时间
  90          #define  RC500_PARITYERR   5    //卡片奇偶校验错误
  91          #define  RC500_CRCERR      2    //卡片CRC校验错误
  92          #define  RC500_BYTECOUNTERR  12 //从卡片接收到的字节数错误
  93          #define  MI_OK      1 
  94          #define  RF_TimeOUT 0xfff
  95          #define  RC500_NOTAUTHERR  10
  96          #define TYPEA_MODE 0 //TypeA模式
  97          #define  RC500_NOTAGERR  1
  98          #define  RC500_EMPTY 3 //数值溢出错误
  99          #define  RC500_WRITEERR 15 //调用write函数出错
 100          #define  RC500_OK     0
 101          #define  RC500_REQERR   21 //调用req函数出错
 102          #define  RC500_ANTICOLLERR  23 
 103          #define  RC500_SERNRERR  8 //卡片序列号错误(anti-collision 错误)
 104          #define RC500_INCRERR 16 //调用increment函数出错
 105          #define RC500_DECRERR 17 //调用decrement函数出错
 106          #define RC500_RESTERR 13 //调用restore函数出错
 107          #define RC500_TRANSERR 14 //调用transfer函数出错    
 108          #define  Transceive  0x1E  //发送接收命令
 109          #define  Transmit    0x1a  //发送命令
 110          #define  Req  0x01
 111          #define   Sel        0x02
 112          #define   TRUE  1
 113          #define   FALSE 0
 114          #define    STD  0x00
 115          #define    ALL  0x01
 116          
 117          ////////////////////////////////////////////////////////////////////////////////
C51 COMPILER V7.06   DUXIEXITONGRC500                                                      06/29/2008 08:54:14 PAGE 3   

 118          sbit      MFRST= P1^5;//33
 119          sbit      NCS=P3^5;//27
 120          sbit      IRQ=P3^4;
 121          //sbit    deng=P3^1;
 122          //sbit      LED= P3^5;
 123          //sbit      MI=P3^4;
 124          sbit      P12=P1^2;
 125          sbit      P13=P1^3;
 126          sbit      P14=P1^4;//mi
 127          sbit    UART_RX_BIT=P3^3;
 128          sbit    UART_TX_BIT=P3^2;
 129          sbit  ss=P1^0;
 130          sbit  sclk=P1^1;
 131          sbit  mosi=P1^2;
 132          sbit  miso=P1^3;
 133          
 134          //时钟硬件设置
 135          #define ad  P2   //地址数据总线
 136          sbit cs = P1^6;   //片选
 137          sbit as = P1^7;   //地址选通输入
 138          sbit rw = P3^3;   //读允许输入脚
 139          sbit ds = P3^2;   //写允许输入
 140          
 141          uchar idata readdata[16]   _at_ 0x0040;//读写数据缓冲区
 142          uchar idata tagtype[2]   _at_ 0x0050;//卡片标识字符
 143          uchar idata sendata[24]  _at_ 0x0096; //增减的数值//gai08 4 24
 144          uchar idata buffer[24] _at_ 0x0060; //FM1715命令发送接收缓冲区
 145          uchar idata UID[5] _at_ 0x007a; //序列号
 146          uchar idata Secnr _at_ 0x0090; //扇区号
 147          uchar  CardStatus;
 148          //uchar idata Block_Adr[63] _at_ 0x00a0;
 149          uchar code tongxunceshixinxi[]={0x3c,0x01,0x01,0x3c,0x0d};    //5
 150          uchar code gonggongxinxi[]    ={0x3c,0x02,0x00,0x00,0x3e,0x0d}; //6
 151          uchar code xunkaxinxi[]       ={0x3c,0x05,0x7c,0x7a,0x5d,0x16,0x00,0x74,0x0d}; //9
 152          uchar code dukaxinxi[]        ={0x3c,0x12,0x00,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
             -,0x00,0x00,0x00,0x00,0x84,0x0d}; //9
 153          uchar code dukaxinxi2[]      ={0x3c,0x12,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
             -0x00,0x00,0x00,0x00,0x2e,0x0d}; //9
 154          uchar code cuowufanhui[]=     {0x3c,0x01,0xff,0x3e,0x0d};
 155          /////////////////////////////////////////
 156          void sen(unsigned char dd)    
 157              {
 158   1              TI=0;
 159   1          SBUF=dd;
 160   1              while(!TI)   
 161   1                 {};
 162   1              TI=0;
 163   1              }
 164          ////////////////////////////////////////////
 165          /*void send(unsigned char i)
 166                  {
 167                unsigned char j,k;
 168                ss=0;
 169                sclk=0;
 170                j=i;
 171                for(k=0;k<8;k++)
 172                  { if(j&0x01)
 173                       mosi=1;
 174                    else  
 175                      mosi=0;
 176                      sclk=1;
 177                      j=j>>1;
C51 COMPILER V7.06   DUXIEXITONGRC500                                                      06/29/2008 08:54:14 PAGE 4   

 178                      sclk=0;
 179                   }
 180                 }
 181          void pu()
 182              {
 183                 send(0x01);
 184                 send(0x00);
 185                 ss=1;
 186               }
 187          
 188          void pd()
 189               {
 190                send(0x07);
 191                send(0x00);
 192                ss=1;    
 193               }  
 194          void playone()
 195                  {
 196                   unsigned int  delay;
 197               pu();
 198                   for(delay=0;delay<100;delay++);
 199                   send(0x45);
 200                   send(0x80);
 201                   send(0x04);
 202                   ss=1;
 203                   delay=100;
 204                   while(delay--);
 205                   send(0x80);
 206               send(0x00); 
 207                   send(0x10);
 208                   send(0x00);
 209                   send(0x25);
 210                   send(0x00);
 211                   ss=1;
 212               delay=100;
 213                   while(delay--);
 214                   pd();
 215              }
 216          void playtwo()
 217                  {
 218               unsigned int delay;
 219                   pu();
 220                   for(delay=0;delay<100;delay++);
 221                    send(0x45);
 222                   send(0x80);
 223                   send(0x04);
 224                   ss=1;
 225                   delay=100;
 226                   while(delay--);
 227                   send(0x80);
 228               send(0x00); 
 229                   send(0x26);
 230                   send(0x00);
 231                   send(0x45);
 232                   send(0x00);
 233                   ss=1;
 234               delay=100;
 235                   while(delay--);
 236                   pd();
 237                   }
 238          */
 239          
C51 COMPILER V7.06   DUXIEXITONGRC500                                                      06/29/2008 08:54:14 PAGE 5   

 240          uchar Clear_FIFO(void)  //清除FIFO数据 
 241           {  
 242   1        uchar temp;
 243   1        uint i;
 244   1        temp=Control;
 245   1        temp=(temp|0x01);
 246   1        Control=temp; 
 247   1      for(i=0;i<RF_TimeOUT;i++)
 248   1         {   temp=FIFO_Length;
 249   2            if(temp==0)
 250   2            {  
 251   3                return  TRUE;
 252   3            }
 253   2      
 254   2         }return FALSE;
 255   1      
 256   1      }
 257          /////////////////////////////////////////////////////////
 258          void  Write_FIFO(uchar count,uchar idata*buff)  //写数据FIFO 
 259                 {
 260   1        uchar i;
 261   1        for(i=0;i<count;i++)
 262   1             {
 263   2             FIFO=*(buff+i);
 264   2                 }
 265   1      
 266   1      }
 267          //////////////////////////////////////////////////////////////
 268          uchar judge_Req(uchar idata*buff) //卡片复位应答信号的判断
 269                  {  
 270   1              uchar temp1,temp2;
 271   1                temp1=*buff;
 272   1                temp2=*(buff+1);
 273   1                if(((temp1==0x03)||(temp1==0x04)||(temp1==0x05))&&(temp2==0x00))
 274   1                {
 275   2              //sen(temp1);//04MIFARE标准8K卡
 276   2                return TRUE;
 277   2                } 
 278   1                return FALSE;
 279   1          }

⌨️ 快捷键说明

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