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

📄 x5045.lst

📁 此程序为13.56MHz的RFID底层读写卡程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V4.01,  X5045                                                                 19/08/04  14:33:25  PAGE 1   


DOS C51 COMPILER V4.01, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN D:\13505B\105B\X5045.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE D:\13505B\105B\X5045.C DB SB OE

stmt level    source

   1          /******************************************************************/
   2          // 模块原型:   FUNC.C
   3          // 功    能:   X5045(EEPROM+WATCHDOG)操作底层函数。
   4          /******************************************************************/
   5          
   6          #include "hardware.h"
   7          #include "intrins.h"
   8          
   9          void Data_load(uchar RAM_data);
  10          void instruction_load(uchar inst_name);
  11          void Write_Status_Register(uchar RAM_data4);
  12          void clock(void);
  13          
  14          
  15          
  16          /******************************************************************/
  17          // 函数原型:   void init_X5045(void)
  18          // 功    能:   X5045初始寄存器设置
  19          // 参    数:   Status_Register (初始寄存器值)
  20          /******************************************************************/
  21          void init_X5045(uchar Status_Register)
  22          {
  23   1      
  24   1          CSI=0;_nop_();
  25   1          SCK=0;
  26   1          SI=0;
  27   1          SO=1;
  28   1          Write_Status_Register(Status_Register);
  29   1      }
  30          /******************************************************************/
  31          // 函数原型:   void instruction_load(uchar inst_name)
  32          // 功    能:   写入X5045命令字
  33          // 参    数:   inst_name(命令字)
  34          /******************************************************************/
  35          void instruction_load(uchar inst_name)
  36          {
  37   1         register uchar i;
  38   1      
  39   1         CSI=0;_nop_();
  40   1         for(i=0;i<8;i++)
  41   1         {
  42   2            SI=(bit)(inst_name&0x80);
  43   2            inst_name=inst_name<<1;
  44   2            clock();
  45   2         }
  46   1      
  47   1      }
  48          /******************************************************************/
  49          // 函数原型:   void Data_load(uchar RAM_data)
  50          // 功    能:   X5045写入数据
  51          // 参    数:   RAM_data(1字节数据)
  52          /******************************************************************/
  53          void Data_load(uchar RAM_data)
  54          {
  55   1          register uchar i;
  56   1      
  57   1          for(i=0;i<8;i++)
  58   1          {
  59   2             SI=(bit)(RAM_data&0x80);
C51 COMPILER V4.01,  X5045                                                                 19/08/04  14:33:25  PAGE 2   

  60   2             RAM_data=RAM_data<<1;
  61   2             clock();
  62   2          }
  63   1      }
  64          /******************************************************************/
  65          // 函数原型:   void Write_Status_Register(uchar RAM_data4)
  66          // 功    能:   X5045写状态寄存器
  67          // 参    数:   RAM_data4(1字节数据)
  68          /******************************************************************/
  69          void Write_Status_Register(uchar RAM_data4)
  70          {
  71   1      
  72   1         instruction_load(WREN);
  73   1         CSI=1;_nop_();
  74   1         _nop_();_nop_();
  75   1         instruction_load(WRSR);
  76   1         Data_load(RAM_data4);
  77   1         CSI=1;_nop_();
  78   1      }
  79          
  80          /******************************************************************/
  81          // 函数原型:   uchar Read_Status_Register(void)
  82          // 功    能:   读X5045状态寄存器
  83          // 参    数:   无
  84          /******************************************************************/
  85          uchar Read_Status_Register()
  86          {
  87   1         register uchar i;
  88   1         bit bit_temp=0;
  89   1         uchar  I_data=0;
  90   1      
  91   1         instruction_load(RSDR);
  92   1         SCK=1;_nop_();
  93   1         bit_temp=SO;
  94   1         for(i=0;i<8;i++)
  95   1         {
  96   2            SCK=0;_nop_();
  97   2            I_data*=2;
  98   2            if(bit_temp)
  99   2            { I_data++; }
 100   2            SCK=1;_nop_();
 101   2            bit_temp=SO;
 102   2         }
 103   1         CSI=1;_nop_();
 104   1         return(I_data);
 105   1      }
 106          /******************************************************************/
 107          // 函数原型:   uchar Write_Ram_byte(uint RAM_address,uchar *RAM_data2,uchar length)
 108          // 功    能:   X5045写入数据
 109          // 参    数:
 110          /******************************************************************/
 111          uchar Write_Ram_byte(uint RAM_address,uchar *RAM_data2,uchar length)
 112          {
 113   1         uchar low_addr,WRITE;
 114   1         uint i;
 115   1         bit SS;
 116   1      
 117   1         CSI=0;_nop_();
 118   1         SCK=0;
 119   1         SI=0;
 120   1         SO=1;
 121   1         SS=(bit)(RAM_address&0x100);
 122   1         if(SS==1)
 123   1         {  WRITE=0x0a;}
 124   1         else{ WRITE=0x02;}
 125   1      
C51 COMPILER V4.01,  X5045                                                                 19/08/04  14:33:25  PAGE 3   

 126   1         low_addr=(uchar)RAM_address;
 127   1         CSI=1;_nop_();
 128   1         instruction_load(WREN);
 129   1         CSI=1;_nop_();
 130   1         instruction_load(WRITE);
 131   1         Data_load(low_addr);
 132   1         for(i=0;i<length;i++)   { Data_load(RAM_data2[i]); }
 133   1         CSI=1; _nop_();
 134   1      
 135   1         for(i=0;i<1900;i++)
 136   1         {
 137   2           _nop_();
 138   2           _nop_();
 139   2         }
 140   1         _nop_();
 141   1         do
 142   1         {
 143   2            i=Read_Status_Register();
 144   2            SS=(bit)(i&0x01);
 145   2         }
 146   1         while(SS);
 147   1         return 0;
 148   1      }
 149          /******************************************************************/
 150          // 函数原型:   void Read_Ram(uint RAM_address,uchar *RAM_data6,uchar length)
 151          // 功    能:   读X5045偏移地址内容
 152          // 参    数:
 153          /******************************************************************/
 154          void Read_Ram(uint RAM_address,uchar *RAM_data6,uchar length)
 155          {
 156   1         uchar  j,I_data=0;
 157   1         register uchar i;
 158   1         bit bit_temp=0;
 159   1      
 160   1         CSI=0;_nop_();
 161   1         SCK=0;
 162   1         SI=0;
 163   1         SO=1;
 164   1      
 165   1         CSI=1;_nop_();
 166   1         SO=1;_nop_();
 167   1      
 168   1         if((bit)(RAM_address&0x100)==1)
 169   1         {  instruction_load(0x0b);  }
 170   1         else{  instruction_load(0x03); }
 171   1         Data_load((uchar)RAM_address);
 172   1      
 173   1         for(j=0;j<length;j++)
 174   1         {
 175   2              SCK=1;_nop_();
 176   2              bit_temp=SO;
 177   2              for(i=0;i<8;i++)
 178   2              {
 179   3      
 180   3                 SCK=0;_nop_();
 181   3                 I_data*=2;
 182   3                 if(bit_temp)

⌨️ 快捷键说明

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