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

📄 emreader.lst

📁 EM射频卡读写器源代码
💻 LST
字号:
C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE EMREADER
OBJECT MODULE PLACED IN EMReader.OBJ
COMPILER INVOKED BY: d:\Keil7\C51\BIN\C51.EXE EMReader.c ROM(SMALL) DEBUG OBJECTEXTEND

stmt level    source

   1          #include "common.h"
   2          
   3          extern void SerialInit();
   4          extern void SerialSend(BYTE SendCode);
   5          extern BOOL SerialRece(BYTE *SBuf);
   6          //extern void delay(unsigned int iDelay);
   7          extern void delay_100us();
   8          extern void delay_48us();
   9          extern void delay_36us();
  10          
  11          extern void TimerInit();
  12          extern unsigned int GetTimerCount();
  13          
  14          extern unsigned char rlc(unsigned char rc_Byte);
  15          
  16          unsigned char GetOneBitNum(unsigned char buf,unsigned char from,unsigned char end);
  17          
  18          sbit InPin = P3^7;
  19          sbit ModePin = P1^7;
  20          
  21          sbit Dat1 = P3^0;
  22          sbit Dat2 = P3^1;
  23          
  24          main()
  25          {
  26   1       BYTE row,col,buffer;
  27   1       BYTE bitFlag[5];
  28   1       BYTE bitCount[4];
  29   1       BYTE ID[5];
  30   1       BOOL bBuf;
  31   1       BOOL bErrFlag = FALSE;
  32   1       BOOL bHeaderFlag = FALSE;
  33   1       BOOL bFirstBit,bEndBit;
  34   1      
  35   1       SerialInit();
  36   1       TimerInit();
  37   1      
  38   1       EA = 1;
  39   1      
  40   1       while(1)
  41   1       {
  42   2        //get the header
  43   2        bErrFlag = FALSE;
  44   2        if(bHeaderFlag == FALSE)
  45   2        {
  46   3         while(InPin == 0);
  47   3         GetTimerCount();
  48   3      
  49   3         TR0 = 1;
  50   3         while(InPin == 1);
  51   3         if(GetTimerCount() < 150) continue; //300us
  52   3        }
  53   2        while(InPin == 0);                                    // header 1 end
  54   2      
  55   2        if(GetTimerCount() > 150) 
C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 2   

  56   2        {
  57   3         bHeaderFlag = FALSE;
  58   3         continue;
  59   3        }
  60   2        while(InPin == 1);
  61   2        if(GetTimerCount() > 150) 
  62   2        {
  63   3         bHeaderFlag = TRUE;
  64   3         continue; //300us
  65   3        }
  66   2        while(InPin == 0);                                    // header 2 end
  67   2      
  68   2        if(GetTimerCount() > 150) 
  69   2        {
  70   3         bHeaderFlag = FALSE;
  71   3         continue;
  72   3        }
  73   2        while(InPin == 1);
  74   2        if(GetTimerCount() > 150) 
  75   2        {
  76   3         bHeaderFlag = TRUE;
  77   3         continue; //300us
  78   3        }
  79   2        while(InPin == 0);                                    // header 3 end
  80   2      
  81   2        if(GetTimerCount() > 150) 
  82   2        {
  83   3         bHeaderFlag = FALSE;
  84   3         continue;
  85   3        }
  86   2        while(InPin == 1);
  87   2        if(GetTimerCount() > 150) 
  88   2        {
  89   3         bHeaderFlag = TRUE;
  90   3         continue; //300us
  91   3        }
  92   2        while(InPin == 0);                                    // header 4 end
  93   2      
  94   2        if(GetTimerCount() > 150) 
  95   2        {
  96   3         bHeaderFlag = FALSE;
  97   3         continue;
  98   3        }
  99   2        while(InPin == 1);
 100   2        if(GetTimerCount() > 150) 
 101   2        {
 102   3         bHeaderFlag = TRUE;
 103   3         continue; //300us
 104   3        }
 105   2        while(InPin == 0);                                    // header 5 end
 106   2      
 107   2        if(GetTimerCount() > 150) 
 108   2        {
 109   3         bHeaderFlag = FALSE;
 110   3         continue;
 111   3        }
 112   2        while(InPin == 1);
 113   2        if(GetTimerCount() > 150) 
 114   2        {
 115   3         bHeaderFlag = TRUE;
 116   3         continue; //300us
 117   3        }
C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 3   

 118   2        while(InPin == 0);                                    // header 6 end
 119   2      
 120   2        if(GetTimerCount() > 150) 
 121   2        {
 122   3         bHeaderFlag = FALSE;
 123   3         continue;
 124   3        }
 125   2        while(InPin == 1);
 126   2        if(GetTimerCount() > 150) 
 127   2        {
 128   3         bHeaderFlag = TRUE;
 129   3         continue; //300us
 130   3        }
 131   2        while(InPin == 0);                                    // header 7 end
 132   2      
 133   2        if(GetTimerCount() > 150) 
 134   2        {
 135   3         bHeaderFlag = FALSE;
 136   3         continue;
 137   3        }
 138   2        while(InPin == 1);
 139   2        if(GetTimerCount() > 150) 
 140   2        {
 141   3         bHeaderFlag = TRUE;
 142   3         continue; //300us
 143   3        }
 144   2        while(InPin == 0);                                    // header 8 end
 145   2      
 146   2        if(GetTimerCount() > 150) 
 147   2        {
 148   3         bHeaderFlag = FALSE;
 149   3         continue;
 150   3        }
 151   2        while(InPin == 1);
 152   2        if(GetTimerCount() > 150) 
 153   2        {
 154   3         bHeaderFlag = TRUE;
 155   3         continue; //300us
 156   3        }
 157   2       // while(InPin == 0);                                  // header 9 end
 158   2        bHeaderFlag = FALSE;
 159   2      
 160   2        TR0 = 0;
 161   2        delay_100us();
 162   2        delay_100us();
 163   2       
 164   2        //data
 165   2        bitCount[0] = 0;
 166   2        bitCount[1] = 0;
 167   2        bitCount[2] = 0;
 168   2        bitCount[3] = 0;
 169   2        for(row = 0; row < 11; row++)
 170   2        {
 171   3         buffer = 0;
 172   3         for(col = 0; col < 5; col++)
 173   3         {
 174   4          delay_100us();
 175   4              bBuf = InPin;
 176   4              TL0 = 0;
 177   4              TH0 = 0;
 178   4              TR0 = 1;
 179   4              while(bBuf == InPin);   //100us
C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 4   

 180   4              if(GetTimerCount() > 100) 
 181   4              {
 182   5               bErrFlag = TRUE;
 183   5               break;
 184   5              }
 185   4              if(col < 4) delay_100us();
 186   4      
 187   4              if(bBuf) 
 188   4              {
 189   5               buffer++;
 190   5               bitFlag[col] = 1;
 191   5              }
 192   4              else bitFlag[col] = 0;
 193   4              if(col < 4)
 194   4              {
 195   5               if(bitFlag[col]) bitCount[col]++;
 196   5              }
 197   4              else if((col == 4) && ((buffer%2) != 0))
 198   4              {
 199   5               if(row != 10) bErrFlag = TRUE;
 200   5               break;
 201   5              }
 202   4         }//for col end
 203   3      
 204   3         if(bErrFlag) break;
 205   3         if(row == 10) break;
 206   3         if((row%2) == 0)
 207   3         {
 208   4          if(bitFlag[0]) ID[row/2] |= 0x80;
 209   4              else ID[row/2] &= 0x7f;
 210   4          if(bitFlag[1]) ID[row/2] |= 0x40;
 211   4              else ID[row/2] &= 0xbf;
 212   4          if(bitFlag[2]) ID[row/2] |= 0x20;
 213   4              else ID[row/2] &= 0xdf;
 214   4          if(bitFlag[3]) ID[row/2] |= 0x10;
 215   4              else ID[row/2] &= 0xef;
 216   4         }
 217   3         else
 218   3         {
 219   4          if(bitFlag[0]) ID[row/2] |= 0x08;
 220   4              else ID[row/2] &= 0xf7;
 221   4          if(bitFlag[1]) ID[row/2] |= 0x04;
 222   4              else ID[row/2] &= 0xfb;
 223   4          if(bitFlag[2]) ID[row/2] |= 0x02;
 224   4              else ID[row/2] &= 0xfd;
 225   4          if(bitFlag[3]) ID[row/2] |= 0x01;
 226   4              else ID[row/2] &= 0xfe;
 227   4         }
 228   3      
 229   3        }//for row end
 230   2        if(bErrFlag) continue;
 231   2        if((bitCount[0]%2) != 0) continue;
 232   2        if((bitCount[1]%2) != 0) continue;
 233   2        if((bitCount[2]%2) != 0) continue;
 234   2        if((bitCount[3]%2) != 0) continue;
 235   2      
 236   2        // Get ID OK 
 237   2        if(ModePin)
 238   2        {
 239   3              buffer = GetOneBitNum(ID[2],0,7);
 240   3              buffer += GetOneBitNum(ID[3],0,3);
 241   3              if((buffer%2) == 0) bFirstBit = 0;
C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 5   

 242   3              else bFirstBit = 1;
 243   3              buffer = GetOneBitNum(ID[3],4,7);
 244   3              buffer += GetOneBitNum(ID[4],0,7);
 245   3              if((buffer%2) == 0) bEndBit = 1;
 246   3              else bEndBit = 0;
 247   3      
 248   3              if(bFirstBit) 
 249   3              {
 250   4               Dat2 = 0;
 251   4               delay_48us();
 252   4               Dat2 = 1;
 253   4              }
 254   3              else
 255   3              {
 256   4               Dat1 = 0;
 257   4               delay_48us();
 258   4               Dat1 = 1;
 259   4           _nop_();
 260   4               _nop_();
 261   4              }
 262   3              delay_100us();
 263   3              delay_100us();
 264   3              delay_100us();
 265   3              delay_100us();
 266   3              delay_100us();
 267   3              delay_100us();
 268   3              delay_100us();
 269   3              delay_100us();
 270   3              delay_48us();
 271   3              delay_36us();
 272   3      
 273   3              for(row = 0; row < 3; row++)
 274   3              {
 275   4               buffer = ID[row+2];
 276   4               for(col = 0; col <8; col++)
 277   4               {
 278   5                buffer = rlc(buffer);
 279   5                if(CY) 
 280   5                {
 281   6                 Dat2 = 0;
 282   6                 delay_48us();
 283   6                 Dat2 = 1;
 284   6                }
 285   5                else
 286   5                {
 287   6                 Dat1 = 0;
 288   6                 delay_48us();
 289   6                 Dat1 = 1;
 290   6                 _nop_();
 291   6                 _nop_();
 292   6                }
 293   5                delay_100us();
 294   5                delay_100us();
 295   5                delay_100us();
 296   5                delay_100us();
 297   5                delay_100us();
 298   5                delay_100us();
 299   5                delay_100us();
 300   5                delay_100us();
 301   5                delay_48us();
 302   5                if(col == 7) 
 303   5                {
C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 6   

 304   6                 _nop_();
 305   6                 _nop_();
 306   6                 _nop_();
 307   6                }
 308   5                else delay_36us();
 309   5               }
 310   4              }
 311   3      
 312   3              delay_36us();
 313   3              if(bEndBit) 
 314   3              {
 315   4               Dat2 = 0;
 316   4               delay_48us();
 317   4               Dat2 = 1;
 318   4              }
 319   3              else
 320   3              {
 321   4               Dat1 = 0;
 322   4               delay_48us();
 323   4               Dat1 = 1;
 324   4           _nop_();
 325   4               _nop_();
 326   4              }
 327   3              delay_100us();
 328   3              delay_100us();
 329   3              delay_100us();
 330   3              delay_100us();
 331   3              delay_100us();
 332   3              delay_100us();
 333   3              delay_100us();
 334   3              delay_100us();
 335   3              delay_100us();
 336   3        }
 337   2        else
 338   2        {
 339   3         SerialSend(ID[0]);
 340   3         SerialSend(ID[1]);
 341   3         SerialSend(ID[2]);
 342   3         SerialSend(ID[3]);
 343   3         SerialSend(ID[4]);
 344   3        }
 345   2       }
 346   1      }
 347          
 348          unsigned char GetOneBitNum(unsigned char buf,unsigned char from,unsigned char end)
 349          {
 350   1       unsigned char i;
 351   1       unsigned char result = 0;
 352   1       i = from;
 353   1       while(i--)
 354   1       {
 355   2        buf = rlc(buf);
 356   2       }
 357   1       for(i = from; i < end+1; i++)
 358   1       {
 359   2        buf = rlc(buf);
 360   2        if(CY) result++;
 361   2       }
 362   1       return result;
 363   1      }


C51 COMPILER V7.00  EMREADER                                                               01/23/2003 15:06:45 PAGE 7   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1071    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      21
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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