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

📄 cmdr6c.lst

📁 AVR下的WG26中断接收函数及相关资料说明
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   CMDR6C                                                                09/11/2007 09:30:23 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE CMDR6C
OBJECT MODULE PLACED IN cmdr6c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cmdr6c.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "crc16.h"
   2          #include "comr6c.h"
   3          #include "typedef.h"
   4          #include "time.h"
   5          #include "main.h"
   6          #include "intrins.h"
   7          #include "baseclk.h"
   8          #include "ll.h"
   9          void send_ISO_cmd(uchar flags,uchar cmd,uchar dataPstion,uchar paraLength)
  10          {
  11   1      /*
  12   1              uchar i;
  13   1              uint crc_val;
  14   1              if( dataPstion > 6 )                // 6 是R6C命令发送的核心数据起始位置
  15   1              {     
  16   1                      for(i=0;i<paraLength;i++)
  17   1                      {
  18   1                              pcdata[6+i] = pcdata[dataPstion+i];
  19   1                      }
  20   1              }
  21   1              else if(dataPstion<6)
  22   1              { 
  23   1                      dataPstion --;
  24   1                      for(i=paraLength;i>0;i--)
  25   1                      {
  26   1                              pcdata[5+i] = pcdata[dataPstion+i];
  27   1                      }
  28   1              }
  29   1      
  30   1              pcdata[4] = flags;
  31   1              pcdata[5] = cmd;        
  32   1              crc_val = crc16Calculate(pcdata+4,2+paraLength);
  33   1              pcdata[6+paraLength] = LOBYTE(crc_val);
  34   1              pcdata[7+paraLength] = HIBYTE(crc_val);
  35   1              pcdata[0] = 8+paraLength;
  36   1              ES = 0;
  37   1              _commandrd();
  38   1              ES = 1;
  39   1      */
  40   1              uchar i;
  41   1              uint crc_val;
  42   1         if( dataPstion > 6 )                /* 6 是R6C命令发送的核心数据起始位置*/
  43   1         {     
  44   2            for(i=0;i<paraLength;i++)
  45   2            {
  46   3               pcdata[6+i] = pcdata[dataPstion+i];
  47   3            }
  48   2         }
  49   1         else if(dataPstion<6)
  50   1         { 
  51   2            dataPstion --;
  52   2            for(i=paraLength;i>0;i--)
  53   2            {
  54   3               pcdata[5+i] = pcdata[dataPstion+i];
  55   3            }
C51 COMPILER V7.09   CMDR6C                                                                09/11/2007 09:30:23 PAGE 2   

  56   2         }
  57   1            
  58   1         pcdata[4] = flags;
  59   1         pcdata[5] = cmd;
  60   1         
  61   1         crc_val = crc16Calculate(pcdata+4,2+paraLength);
  62   1         pcdata[6+paraLength] = LOBYTE(crc_val);
  63   1         pcdata[7+paraLength] = HIBYTE(crc_val);
  64   1         pcdata[0] = 8+paraLength;   
  65   1         _commandrd();
  66   1      }
  67          /*
  68          uchar idata nb_l= 0,nb_col=0,mask_len=0;
  69          uchar idata num_card=0;
  70          uchar idata lev_col[4] = {0,0,0,0};     //最多三级,每级3张,最多10张
  71          uchar idata mask[6]={0,0,0,0,0,0};           //最多3级
  72          uchar idata pushData[8]={0,0,0,0,0,0,0,0};    //缓冲数据
  73          
  74          void init_inventory(void)
  75          {
  76                  
  77                  nb_l= 0 ; nb_col=0; mask_len=0;
  78                  num_card=0;
  79                  lev_col[0] = 0;  lev_col[1] = 0;   //最多二级,每级2张,最多4张
  80                  lev_col[2] = 0;  lev_col[3] = 0;   //最多二级,每级2张,最多4张
  81                  //   lev_col[4] = 0;   //最多二级,每级2张,最多4张
  82                  mask[0]=0;
  83                  mask[1]=0;
  84                  mask[2]=0;
  85                  mask[3]=0;           //最多2级
  86                  mask[4]=0;
  87                  mask[5]=0;
  88                  pushData[0]=0;pushData[1]=0;pushData[2]=0;pushData[3]=0;    //缓冲数据
  89                  pushData[4]=0;pushData[5]=0;pushData[6]=0;pushData[7]=0;    //缓冲数据
  90                  //   pushData[8]=0;pushData[9]=0;
  91          }
  92          
  93          
  94          void push(uchar inData)
  95          {
  96                  if(nb_col%2) { pushData[nb_col/2] |= (inData<<4);}
  97                  else         { pushData[nb_col/2]  = inData;}
  98                  nb_col ++;
  99          }
 100          
 101          uchar pop(void)
 102          {
 103                  uchar i;
 104                  nb_col --;
 105                  if(nb_col%2) { i = pushData[nb_col/2] >> 4; }
 106                  else         { i = pushData[nb_col/2] & 0x0f; }
 107                  return(i);
 108          }
 109          
 110          void poll_loop(void) 
 111          {
 112                  uchar i=0,k=0,n=0,m=0,l=0;
 113                  uint crc_val=0;
 114                  
 115                  uchar bitcnt=0,Bytecnt=0,bitval=0,temp=0;
 116                  bit TAGRDY=0,TAGDONE=0,ASICRDY=0,b_col=0;       
 117                  
C51 COMPILER V7.09   CMDR6C                                                                09/11/2007 09:30:23 PAGE 3   

 118                  if(nb_col!=0)
 119                  {
 120                          i = pop();
 121                          temp = mask_len/4;
 122                          if(temp%2) { mask[temp/2] |= (i<<4); }
 123                          else       { mask[temp/2] =  i;      }
 124                          mask_len+= 4;
 125                  }
 126             
 127                  pcdata[4] = 0x05;               //iso15693 request flag
 128                  pcdata[5] = 0x01;               //iso15693 command
 129          
 130                  i = 0;temp = 0;
 131          //   pcdata[6] = mask_len;     
 132          //   pcdata[7] = mask[0];
 133          //   temp = 1;
 134                  if(mask_len==0) { pcdata[6] = 0; }
 135                  else
 136                  {
 137                          pcdata[6] = mask_len;
 138                          temp = mask_len/4;
 139                          temp = (temp+1)/2;
 140                          for(i=0;i<temp;i++)
 141                          {
 142                                  pcdata[7+i] = mask[i];
 143                          }
 144                  }
 145          
 146                  crc_val = crc16Calculate(pcdata+4,3+temp);
 147                  pcdata[7+temp] = LOBYTE(crc_val);               //crc MSByte
 148                  pcdata[8+temp] = HIBYTE(crc_val);               //crc LMSByte
 149                  
 150                  pcdata[0] = 9+temp;
 151                  pcdata[1] = 0;
 152                  pcdata[2] = 0x00;
 153                  pcdata[3] = 0x30;
 154                  for(i= 4;i<9+temp;i++) { pcdata[i] = ReflectBYTE(pcdata[i]);    }
 155          
 156          //   pcdata[0] = 3;
 157          //   pcdata[1] = 0;
 158          //   pcdata[2] = 0xFF; //convention to define first slot
 159          
 160                  _sendfifocmd();
 161          
 162                  for(i=0;i<16;i++)
 163                  {
 164                          pcdata[0] = 3;
 165                          pcdata[1] = 0;
 166                          pcdata[2] = 0xFF; //convention to define first slot
 167                          bitcnt=0;
 168                          Bytecnt=0;
 169                          bitval=0;
 170                          temp=0;
 171                          TAGRDY=0; 
 172                          TAGDONE=0;
 173                          ASICRDY=0;
 174                          b_col=0;
 175                  //      DOUT = 1; 
 176                          _setTimer(2);

⌨️ 快捷键说明

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