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

📄 m101(2)x_test.lst

📁 kf902 104 IIC- 19200
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/16/2007 18:14:26 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE M101_2_X_TEST
OBJECT MODULE PLACED IN M101(2)X_Test.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE M101(2)X_Test.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*******************************************************************************
   2          
   3          I2C协议
   4                  模块I2C地址为0xA0
   5                  通讯速率为:400K。
   6          发送数据格式:
   7                  模块地址+W/R   长度字  命令字  数据域  校验字
   8                  模块地址+W/R:
   9                                             模块地址为:0xA0,写bit0为0,则写指令为:0xA0 + 0x0 = 0xA0
  10                                     模块地址为:0xA0,读bit0为1,则读指令为:0xA0 + 0x1 = 0xA1
  11                  长度字:指明从长度字到数据域最后一字节的字节数。
  12                  命令字:本条命令的含义。
  13                  数据域:此项可以为空。
  14                  校验字:从长度字到数据域最后一字节的逐字节异或值(最后一字节)。
  15          返回数据格式: 
  16                  成功:  长度字  接收到的命令字+数据域   校验字
  17                  失败:  长度字  接收到的命令字取反              校验字
  18          *******************************************************************************/  
  19          
  20          #include "main.h"
  21          
  22          #define READ_M101XX             0xb1
  23          #define WRITE_M101XX    0xb0
  24          
  25          
  26          unsigned char g_cReceBuf[43];   //接收缓冲区
  27          unsigned char g_cReceNum;               //接收字节计数
  28          bit           g_bReceCommandOk; //接收命令正确标志
  29          bit           g_bCard;                  //卡片进入射频场标志
  30          
  31          
  32          unsigned char ComSet[]            
  33                  = {0x03, 
  34                     COMM_CONTROL_ANTENNA, 
  35                     0x11};
  36          //设置打开天线和关闭自动循卡
  37          unsigned char code ComSearchCard[]  
  38                  = {0x03, 
  39                     COMM_MIFARE_SEARCH_CARD, 
  40                     0x00};
  41          //循卡后读出卡号
  42          unsigned char cReadBlock[13] 
  43                  = {0x0A, 
  44                     COMM_READ_BLOCK, 
  45                     0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  46          //读块No.4
  47          unsigned char code ComReadBlock4[]  
  48                  = {0x0A,        
  49                     COMM_READ_BLOCK, 
  50                     0x00, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  51          //读块No.6
  52          unsigned char code ComReadBlock6[]  
  53                  = {0x0A, 
  54                     COMM_READ_BLOCK, 
  55                     0x00, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/16/2007 18:14:26 PAGE 2   

  56          //写块No.4
  57          unsigned char code ComWriteBlock4[] 
  58                  = {0X1A, 
  59                     COMM_WRITE_BLOCK, 
  60                     0x00, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  61                 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
  62                 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
  63          //初始化钱包No.5 的值为0x12345678
  64          unsigned char code ComIntiPurse5[]  
  65                  = {0x0E, 
  66                     COMM_INIT_PURSE, 
  67                     0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff , 0x78, 0x56, 0x34, 0x12};
  68          //读钱包的值No.6
  69          unsigned char code ComReadPurse6[]  
  70                  = {0x0A, 
  71                     COMM_READ_PURSE, 
  72                     0x00, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  73          //钱包值加2
  74          unsigned char code ComIncrPurse5[]  
  75                  = {0x0E, 
  76                     COMM_INC_VALUE, 
  77                     0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00};
  78          //钱包值减1
  79          unsigned char code ComDecrPurse5[]  
  80                  = {0x0E, 
  81                     COMM_DEC_VALUE, 
  82                     0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00};
  83          //      restore purse in block No.5 to block No.6
  84          unsigned char code ComBakPurse56[]  
  85                  = {0x0B, 
  86                     COMM_BAK_PURSE, 
  87                     0x00, 0x05, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  88          // 卡片休眠
  89          unsigned char code ComHaltCard[]    
  90                  = {0x02, 
  91                     COMM_CARD_HALT,
  92                    };  
  93          unsigned char code ComHaltMCU[]    
  94                  = {0x02, 
  95                            COMM_SET_MCU_IDLE,
  96                          };
  97          // 钱包在 INC & DEC     后的结果
  98          unsigned char code pursevalue[]     
  99                  = {0x79,0x56,0x34, 0x12};        
 100          unsigned char code ComClrPA[]           
 101                  =  {0X03 , 
 102                      COMM_PA_OUT_CLR , 
 103                      0XFF};
 104          unsigned char code ComSetPA[]           
 105                  =  {0X03 , 
 106                      COMM_PA_OUT_SET , 
 107                          0XFF};
 108          unsigned char code ComClrPB[]           
 109                  =  {0X03 , 
 110                          COMM_PB_OUT_CLR , 
 111                          0X1F};
 112          unsigned char code ComSetPB[]           
 113                  =  {0X03 , 
 114                          COMM_PB_OUT_SET , 
 115                          0X1F};
 116            
 117          
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/16/2007 18:14:26 PAGE 3   

 118          
 119          void Delay100uS(unsigned int i)
 120          {
 121   1              unsigned char m;
 122   1              while(i--)
 123   1              {
 124   2                      for(m = 0; m < 13; m++)
 125   2                      {
 126   3                              LED_zhishi = CARDPIN;
 127   3                      }
 128   2              }
 129   1      }
 130          void main()
 131          {
 132   1              unsigned char i;
 133   1              unsigned char cStatus;
 134   1              InitializeSystem();
 135   1              i=16; 
 136   1              BEEP = 0;
 137   1              P0 = 0XFF;
 138   1              P1 = 0XFF;
 139   1              P2 = 0XFF;
 140   1              P3 = 0XFF;
 141   1              while(i--)
 142   1              {
 143   2                      LED_ok = ~LED_ok;
 144   2                      LED_UART = ~LED_UART;
 145   2                      LED_error = ~LED_error;
 146   2                      LED_zhishi  = ~LED_zhishi;
 147   2                      Delay100uS(500);
 148   2              } 
 149   1              while (1)
 150   1              {
 151   2                              g_bCard = !CARDPIN;
 152   2                              LED_zhishi = CARDPIN;
 153   2                              ES = 0;
 154   2                              cStatus = IicTesting(); // do IIC testing by AutoSearchCard
 155   2                              if (SUCCESS != cStatus) // if did not success, alarm error and show error code
 156   2                              {
 157   3                                      Err();                      //测试失败
 158   3                                      g_bCard = !CARDPIN;
 159   3                                      LED_zhishi = CARDPIN;
 160   3                                      ShowError(cStatus);
 161   3                                      continue;
 162   3                              }
 163   2                              LED_ok = 0;                             //测试成功
 164   2                              Delay100uS(500);            
 165   2                              LED_ok = 1;
 166   2                              g_bCard = !CARDPIN;
 167   2                              LED_zhishi = CARDPIN;
 168   2                              i++;
 169   2              }             
 170   1      }
 171          unsigned char IicTesting(void)
 172          {
 173   1      
 174   1              unsigned char cReadBlock[10]={0x0a, 0x21, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
 175   1              unsigned char *cPa, *cPb;
 176   1              unsigned char i;
 177   1              unsigned char cStatus;
 178   1      
 179   1              Send_IIC_Command(ComSet);
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/16/2007 18:14:26 PAGE 4   

 180   1              cStatus = Read_Iic_Data(g_cReceBuf);
 181   1              if ((g_cReceBuf[1] != ComSet[1]) || cStatus != SUCCESS)
 182   1              {
 183   2                      return 1;
 184   2              }
 185   1      //寻卡
 186   1              cPa = ComSearchCard;
 187   1              Send_IIC_Command(cPa);
 188   1              cStatus = Read_Iic_Data(g_cReceBuf);
 189   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 190   1              {
 191   2                      return 2;
 192   2              }
 193   1              cPa = ComSearchCard;
 194   1              Send_IIC_Command(cPa);
 195   1              cStatus = Read_Iic_Data(g_cReceBuf);
 196   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 197   1              {
 198   2                      return 2;
 199   2              }
 200   1                 
 201   1      //依次读出s50卡片中的16个扇区,64块的数据
 202   1              for(i=0; i<64 ;i++)
 203   1              {
 204   2                      cReadBlock[3] = i;
 205   2                      cPa = cReadBlock;
 206   2                      Send_IIC_Command(cPa);
 207   2                      cStatus = Read_Iic_Data(g_cReceBuf);
 208   2                      if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 209   2                      {
 210   3                              return 3;
 211   3                      }
 212   2                      Delay100uS(50);
 213   2              }
 214   1      
 215   1      //写块No.4
 216   1              cPa = ComWriteBlock4;
 217   1              Send_IIC_Command(cPa);
 218   1              cStatus = Read_Iic_Data(g_cReceBuf);
 219   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 220   1              {
 221   2                      return 4;
 222   2              }
 223   1      
 224   1      //读块No.4 
 225   1              cPa = ComReadBlock4;
 226   1              Send_IIC_Command(cPa);
 227   1              cStatus = Read_Iic_Data(g_cReceBuf);
 228   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 229   1              {
 230   2                      return 5;
 231   2              }
 232   1      //比较数据
 233   1              cPa = &ComWriteBlock4[10];
 234   1              cPb = &g_cReceBuf[2];
 235   1              if (memcmp(cPa, cPb, 16) != 0)
 236   1              {
 237   2                      return 6;
 238   2              }
 239   1      //初始化No.5 作为钱包初值为0x12345678
 240   1              cPa = ComIntiPurse5;
 241   1              Send_IIC_Command(cPa);
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/16/2007 18:14:26 PAGE 5   

 242   1              cStatus = Read_Iic_Data(g_cReceBuf);
 243   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 244   1              {
 245   2                      return 7;
 246   2              }
 247   1      
 248   1      //增值No.5 = "2"
 249   1              cPa = ComIncrPurse5;
 250   1              Send_IIC_Command(cPa);
 251   1              cStatus = Read_Iic_Data(g_cReceBuf);
 252   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 253   1              {
 254   2                      return 8;
 255   2              }
 256   1      
 257   1      //减值 "1"
 258   1              cPa = ComDecrPurse5;
 259   1              Send_IIC_Command(cPa);
 260   1              cStatus = Read_Iic_Data(g_cReceBuf);
 261   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 262   1              {
 263   2                      return 9;
 264   2              }
 265   1      
 266   1      //restore the purse in block No.5 to block No.6
 267   1              cPa = ComBakPurse56;
 268   1              Send_IIC_Command(cPa);
 269   1              cStatus = Read_Iic_Data(g_cReceBuf);
 270   1              if ((g_cReceBuf[1] != cPa[1]) || cStatus != SUCCESS)
 271   1              {
 272   2                      return 10;
 273   2              }
 274   1      
 275   1      //读最后的值No.6

⌨️ 快捷键说明

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