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

📄 m101(2)x_test.lst

📁 kf902 104 uart- 19200
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/18/2007 15:10:20 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                  UART接口一帧的数据格式为 1个起始位,8个数据位,1个地址/数据标志位,1个停止位。
   4                  波特率:19200,方式3,11位格式。
   5          发送数据封包格式:(注:模块地址为地址帧第9位数据为1,其他的为数据帧第9位数据为0)
   6                  数据包内容:模块地址(2B)       长度字(1B)    命令字(1B)    数据域(nB)    校验字(1B)
   7                  模块地址:对于单独使用的模块来说固定为0x00;
   8                  对网络版模块来说为0x01~0XFE;
   9                  0xFF为广播(不回答)。
  10                  注:模块地址为完全相同的2字节.
  11                  长度字:指明从长度字到数据域最后一字节的字节数(包括长度字)
  12                  命令字:本条命令的含义
  13                  数据域:该条命令的内容,此项可以为空
  14                  校验字:从长度字到数据域最后一字节的逐字节异或值(最后一字节)。
  15          返回数据封包格式:(注:所有字节的第9位数据为0)
  16                  数据包内容:命令头       长度字  命令字  执行结果        数据域  校验字
  17                  命令头: 0xAA 0x55,若后续数据中包含0xAA则随后补充一字节0x00以区分命令头但长度字不增加
  18                  长度字:  指明从长度字到数据域最后一字节的字节数
  19                  命令字:  执行正确为接收到的命令字;
  20                  执行错误为接收到的命令字逐位取反;
  21                  数据域:  该条命令返回的内容
  22                  校验字:从长度字到数据域最后一字节的逐字节异或值(最后一字节)。
  23           *******************************************************************************/  
  24          
  25          
  26          #include "main.h"
  27          
  28          
  29          unsigned char g_cReceBuf[43];   //接收缓冲区
  30          unsigned char g_cReceNum;               //接收字节计数
  31          bit           g_bReceCommandOk; //接收命令正确标志
  32          bit           g_bReceAA;                //接收的数为 "0xaa", 记下标志
  33          bit           g_bCard;                  //卡片进入射频场标志
  34          unsigned char code ComHaltMCU[]    
  35                  = {0x02, 
  36                            COMM_SET_MCU_IDLE,
  37                          };
  38          unsigned char ComSet[]            
  39                  = {0x03, 
  40                     COMM_CONTROL_ANTENNA, 
  41                     0x01};
  42          //设置打开天线和关闭自动循卡
  43          unsigned char code ComSearchCard[]  
  44                  = {0x03, 
  45                     COMM_MIFARE_SEARCH_CARD, 
  46                     0x00};
  47          //循卡后读出卡号
  48          unsigned char cReadBlock[13] 
  49                  = {0x0A, 
  50                     COMM_READ_BLOCK, 
  51                     0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  52          //读块No.4
  53          unsigned char code ComReadBlock4[]  
  54                  = {0x0A,        
  55                     COMM_READ_BLOCK, 
C51 COMPILER V7.07   M101_2_X_TEST                                                         06/18/2007 15:10:20 PAGE 2   

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

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

 180   1              SendUart(cPa);
 181   1              for (cCnt=200; (cCnt > 0) && !g_bReceCommandOk; cCnt--)
 182   1              {
 183   2                      Delay100uS(1);
 184   2              }
 185   1              if ((g_cReceBuf[1] != cPa[1]) || (0 == cCnt))
 186   1              {
 187   2                      return 1;
 188   2              }  
 189   1              cPa = ComSearchCard;
 190   1              SendUart(cPa);
 191   1              for (cCnt=200; (cCnt > 0) && !g_bReceCommandOk; cCnt--)
 192   1              {
 193   2                      Delay100uS(1);
 194   2              }
 195   1              if ((g_cReceBuf[1] != cPa[1]) || (0 == cCnt))
 196   1              {
 197   2                      return 2;       
 198   2              }
 199   1           
 200   1      //依次读出s50卡片中的16个扇区,64块的数据
 201   1              for(i=0; i<64 ;i++)
 202   1              {
 203   2                      cReadBlock[3] = i;
 204   2                      cPa = cReadBlock;
 205   2                      SendUart(cPa);
 206   2                      for (cCnt=200; (cCnt > 0) && !g_bReceCommandOk; cCnt--)
 207   2                      {
 208   3                              Delay100uS(3);
 209   3                      }  
 210   2                      if ((g_cReceBuf[1] != cPa[1]) || (0 == cCnt))
 211   2                      {
 212   3                              return 3;
 213   3                      }
 214   2                      Delay100uS(50);
 215   2              }          
 216   1      //写块
 217   1              cPa = ComWriteBlock4;
 218   1              SendUart(cPa);
 219   1              for (cCnt=200; (cCnt > 0) && !g_bReceCommandOk; cCnt--)
 220   1              {
 221   2                      Delay100uS(1);
 222   2              }
 223   1              if ((g_cReceBuf[1] != cPa[1]) || (0 == cCnt))
 224   1              {
 225   2                      return 4;
 226   2              } 
 227   1      //读块
 228   1              cPa = ComReadBlock4;
 229   1              SendUart(cPa);
 230   1              for (cCnt=200; (cCnt > 0) && !g_bReceCommandOk; cCnt--)

⌨️ 快捷键说明

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