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

📄 comm.lst

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 LST
字号:
C51 COMPILER V8.00   COMM                                                                  04/23/2009 15:56:14 PAGE 1   


C51 COMPILER V8.00, COMPILATION OF MODULE COMM
OBJECT MODULE PLACED IN .\out_sst89e564\comm.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\comm.c LARGE BROWSE ORDER NOAREGS DEBUG OBJECTEXTEND PRINT(.\comm.ls
                    -t) OBJECT(.\out_sst89e564\comm.obj)

line level    source

   1          /*pinpad.c*/
   2          #include "includes.h"
   3          
   4          /************************************
   5           * 通讯解包                         *
   6           * cmdbuf: 输入,命令数据           *
   7           * cmdtype: 输出,命令类别          *
   8           * cardtype: 输出,卡类别           *
   9           * cmddata: 输出,命令体            *
  10           ************************************
  11          int CommExpack( unsigned char *cmdbuf,      // 输入的命令数据
  12                          unsigned char *cmdtype,     // 命令类别(输出)
  13                          unsigned char *cardtype,    // 卡类别(输出)
  14                          unsigned char *cmddata)     // 命令体(输出)
  15          {
  16          
  17          }
  18          */
  19          
  20          static bit UseDebug = 0;
  21          
  22          /*********************************************/
  23          bit CommSend(unsigned char *buf, int len)
  24          {
  25   1              unsigned char data lrc;
  26   1              unsigned char data exbuf[3];
  27   1              unsigned char data tmp;
  28   1              int i;
  29   1              
  30   1              exbuf[0] = 0x02;
  31   1              hex2bcd(len, exbuf+1);
  32   1              lrc = exbuf[1] ^ exbuf[2] ^ 0x03;
  33   1              
  34   1              for(i=0; i<len; i++)
  35   1              {
  36   2                  if(InvPack)
  37   2                      buf[i] ^= 0xff;
  38   2                      
  39   2                  lrc ^= buf[i];
  40   2              }
  41   1              
  42   1          for(i=0; i<3; i++)
  43   1          {
  44   2              if(!UseDebug)
  45   2                  ComClear(IBufOnly); //ComClear(AllBuf); // 050511
  46   2                  
  47   2              ComWrite(exbuf, 3);
  48   2              ComWrite(buf, len);
  49   2              ComWrite("\x03", 1);
  50   2              ComWrite(&lrc, 1);
  51   2      
  52   2                      if( ComRead(&tmp, 1) < 1 )
  53   2                              continue;
  54   2                      else if(tmp == ACK)
C51 COMPILER V8.00   COMM                                                                  04/23/2009 15:56:14 PAGE 2   

  55   2                              return 1;
  56   2          }
  57   1          
  58   1          return 0;
  59   1      }
  60          
  61          void CommSendNotWaitAck(unsigned char *buf, int len)
  62          {
  63   1              unsigned char data lrc;
  64   1              unsigned char data exbuf[3];
  65   1              int i;
  66   1              
  67   1              exbuf[0] = 0x02;
  68   1              hex2bcd(len, exbuf+1);
  69   1              lrc = exbuf[1] ^ exbuf[2] ^ 0x03;
  70   1              
  71   1              for(i=0; i<len; i++)
  72   1              {
  73   2                  if(InvPack)
  74   2                      buf[i] ^= 0xff;
  75   2                      
  76   2                  lrc ^= buf[i];
  77   2              }
  78   1              
  79   1          ComWrite(exbuf, 3);
  80   1          ComWrite(buf, len);
  81   1          ComWrite("\x03", 1);
  82   1          ComWrite(&lrc, 1);
  83   1      }
  84          
  85          unsigned int CommRead(unsigned char *buf, int maxlen)
  86          {
  87   1          unsigned char ctrl;
  88   1          unsigned int len, i;
  89   1          unsigned char packlen[2];
  90   1          
  91   1          if(ComIBufBytesTell() == 0)
  92   1              return 0;
  93   1          //////////////////////////////////////////////////////
  94   1          // 通讯层的解包,不需要更改                         //
  95   1          if(ComRead(&ctrl, 1) < 1)                           //
  96   1              return 0;               //stx                   //
  97   1          if(ctrl != STX)                                     //
  98   1              return 0;                                       //
  99   1          if(ComRead(packlen, 2) < 2)                         //
 100   1              return 0;               //len1, len2            //
 101   1          len = bcd2hex(packlen);                             //
 102   1          if(len > maxlen)                                    //
 103   1              return 0;               // too max len          //
 104   1          if(ComRead(buf, len) < len)                         //
 105   1              return 0;               //package + etx + lrc   //
 106   1          if(ComRead(&ctrl, 1) < 1)
 107   1              return 0;
 108   1          if(ctrl != ETX)
 109   1              return 0;
 110   1          if(ComRead(&ctrl, 1) < 1)   // read lrc
 111   1              return 0;
 112   1          ctrl ^= packlen[0] ^ packlen[1] ^ ETX;
 113   1          for(i=0; i<len; i++)
 114   1              ctrl ^= buf[i];
 115   1          if(ctrl != 0)
 116   1          {                                                   //
C51 COMPILER V8.00   COMM                                                                  04/23/2009 15:56:14 PAGE 3   

 117   2              ComWrite("\x15", 1);    // nak                  //
 118   2              return 0;                                       //
 119   2          }                                                   //
 120   1          ComWrite("\x06", 1);        // ack                  //
 121   1          // 通讯解包完成                                     //
 122   1          //////////////////////////////////////////////////////
 123   1      
 124   1          if(InvPack)
 125   1          {
 126   2              for(i=0; i<len; i++)
 127   2                  buf[i] ^= 0xff;
 128   2          }
 129   1          
 130   1          return len;
 131   1      }
 132          
 133          void CommUseDbg(bit fusedbg)
 134          {
 135   1          UseDebug = fusedbg;
 136   1      }
 137          
 138          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    882    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   ----      24
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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