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

📄 wigen.lst

📁 监控行业车辆检测器源代码
💻 LST
字号:
C51 COMPILER V8.05a   WIGEN                                                                10/20/2008 11:07:23 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE WIGEN
OBJECT MODULE PLACED IN WIGEN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE WIGEN.C ROM(COMPACT) DEBUG OBJECTEXTEND

line level    source

   1          #include "STC12C5410AD.h"
   2          #include "app.h"
   3          #include <string.h>
   4          #include <stdio.h>
   5          #include <INTRINS.H>
   6          
   7          
   8          
   9          sbit  DATA0   =  P1^0;     // green
  10          sbit  DATA1   =  P3^7;     // white
  11          void send_wiegand26(unsigned char *str)
  12          {
  13   1           unsigned char i;
  14   1           static unsigned char  one_num; //计算 1 的个数
  15   1           unsigned char check_temp; //韦根包奇偶效验中间暂存
  16   1           bit data even; //韦根包前 12 位偶效验
  17   1           bit data odd; //韦根包后 12 位齐效验
  18   1           static unsigned char wiegand[3]; //韦根包数据 24 位
  19   1      //================================数组到韦根包的转化
  20   1           wiegand[0] = wiegand[0]|((*str)<<4);//原理是把每个字节的低 4 位取出,来计算这个字节的值
  21   1           wiegand[0] = wiegand[0]|(*(str+1)&0x0f);
  22   1      //--------------------------------计算前 8 位 1 的个数,为偶效验用
  23   1           check_temp = wiegand[0];
  24   1               for(i = 0;i<8;i++)
  25   1                      {
  26   2                          if(check_temp&0x01) //(check_temp&0x01)
  27   2                           {
  28   3                               one_num++;
  29   3                            }
  30   2                          check_temp >>= 1;
  31   2                      }
  32   1              wiegand[1] = wiegand[1]|(*(str+2)<<4);
  33   1                      //--------------------------------计算接下来的 4 位 1 的个数,为偶效验用
  34   1              check_temp = wiegand[1];
  35   1      
  36   1              for(i = 0;i<4;i++)
  37   1                      {
  38   2                          if(check_temp&0x80)
  39   2                           {
  40   3                              one_num++;
  41   3                            }
  42   2                         check_temp<<=1;
  43   2                      }
  44   1                      //--------------------------------判断 1 的个数
  45   1              one_num%2 == 0 ? (even = 0):( even = 1);
  46   1              one_num = 0;
  47   1              wiegand[1] = wiegand[1]|(*(str+3)&0x0f);
  48   1                      //--------------------------------计算接下来的 4 位 1 的个数,为奇效验用
  49   1              check_temp = wiegand[1];
  50   1              for(i = 0;i<4;i++)
  51   1                      {
  52   2                         if(check_temp&0x01)
  53   2                          {
  54   3                            one_num++;
  55   3                          }
C51 COMPILER V8.05a   WIGEN                                                                10/20/2008 11:07:23 PAGE 2   

  56   2                         check_temp>>=1;
  57   2                      }
  58   1              wiegand[2] = wiegand[2]|(*(str+4)<<4);
  59   1              wiegand[2] = wiegand[2]|(*(str+5)&0x0f);
  60   1                      //--------------------------------计算接下来的 8 位 1 的个数,为奇效验用
  61   1              check_temp = wiegand[2];
  62   1              for(i = 0;i<8;i++)
  63   1                      {
  64   2                          if(check_temp&0x01)
  65   2                          {
  66   3                           one_num++;
  67   3                          }
  68   2                         check_temp >>= 1;
  69   2                      }
  70   1                      //--------------------------------判断 1 的个数
  71   1              one_num%2 == 0 ? (odd = 1):( odd = 0);
  72   1              one_num = 0;
  73   1      
  74   1      }
  75          
  76          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    161    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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