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

📄 ridcard.lst

📁 可视门铃的主机软件
💻 LST
字号:
C51 COMPILER V6.02  RIDCARD                                                                03/10/2006 14:34:52 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE RIDCARD
OBJECT MODULE PLACED IN Ridcard.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE Ridcard.c DB OE SMALL ROM(LARGE) 

stmt level    source

   1          
   2          /*读卡程序:卡号有三个数据存IDCARDDATA[]数组里,读到数据返回YES,否则NO
   3          */
   4          
   5          #include "defineh.h"
   6          #include "ridcard.h"
   7          
   8          
   9          sbit mIdCard0   = P1^6;
  10          sbit mIdCard1   = P1^7;
  11          sbit mBell      = P1^4;
  12          
  13          bit readcard(void)
  14          {
  15   1       uchar xdata even=0;    //偶效验1的和
  16   1       uchar xdata odd=0;     //奇效验1的和
  17   1       bit even_bit;
  18   1       bit odd_bit;
  19   1       uchar xdata i;
  20   1       uchar xdata j;
  21   1       uint xdata delatime=0;
  22   1       uchar xdata readdata;
  23   1      
  24   1       if(!mIdCard1)
  25   1         even_bit=1;                             //开始偶效验
  26   1       else if(!mIdCard0)
  27   1         even_bit=0;
  28   1       else
  29   1         return NO;  
  30   1       i=0;
  31   1       for(;;)
  32   1         {
  33   2          //if((!mIdCard0)||(!mIdCard1))
  34   2          if(mIdCard0&&mIdCard1)
  35   2            break;
  36   2          else
  37   2            i++;
  38   2          nop();
  39   2          if(i==100)
  40   2            return NO;
  41   2         }
  42   1       for(i=0;i<3;i++)
  43   1         {
  44   2          for(j=0;j<=7;j++)
  45   2            {
  46   3              for(;;)
  47   3                {
  48   4                 if(!mIdCard0)
  49   4                   {
  50   5                    readdata<<=1; break;         //数据0
  51   5                   }
  52   4                 else if(!mIdCard1)
  53   4                   {
  54   5                    readdata<<=1;                //数据1
  55   5                    readdata|=0x01;
C51 COMPILER V6.02  RIDCARD                                                                03/10/2006 14:34:52 PAGE 2   

  56   5                    break;
  57   5                   }
  58   4                 else
  59   4                  delatime++;
  60   4                 if(delatime>300)                //超时无数据退出
  61   4                   return NO;
  62   4                }
  63   3              delatime=0;
  64   3              for(;;)
  65   3               {
  66   4                if(mIdCard0&&mIdCard1)
  67   4                  break;
  68   4                else
  69   4                  delatime++;
  70   4                if(delatime>=100)                //为低电平超时退出
  71   4                  return NO;
  72   4               }
  73   3              delatime=0;
  74   3            }
  75   2          idcarddata[i]=readdata;                //保存数据
  76   2         }
  77   1       i=0;
  78   1       for(;;)                //等待奇效验
  79   1        {
  80   2         if(!mIdCard1)
  81   2           {
  82   3            odd_bit=1;
  83   3            break;
  84   3           }
  85   2         else if(!mIdCard0)
  86   2           {
  87   3            odd_bit=0;
  88   3            break;
  89   3           } 
  90   2         else
  91   2           i++;
  92   2         nop();
  93   2         if(i==100)
  94   2            return NO;
  95   2        }
  96   1      
  97   1       j=idcarddata[0];
  98   1       for(i=0;i<8;i++)
  99   1         {
 100   2          if((j&0x80)==0x80)
 101   2            even++;
 102   2          j<<=1;
 103   2         }
 104   1       j=idcarddata[1];
 105   1       for(i=0;i<4;i++)
 106   1        {
 107   2         if((j&0x80)==0x80)
 108   2            even++;
 109   2          j<<=1;
 110   2        }
 111   1       for(i=0;i<4;i++)
 112   1        {
 113   2         if((j&0x80)==0x80)
 114   2            odd++;
 115   2          j<<=1;
 116   2        }
 117   1       j=idcarddata[2];
C51 COMPILER V6.02  RIDCARD                                                                03/10/2006 14:34:52 PAGE 3   

 118   1       for(i=0;i<8;i++)
 119   1         {
 120   2          if((j&0x80)==0x80)
 121   2            odd++;
 122   2          j<<=1;
 123   2         }
 124   1       if(even_bit)
 125   1         even++;
 126   1       if(odd_bit)
 127   1         odd++;
 128   1       if((!(even%=2))&&(odd%=2))
 129   1         {
 130   2           mBell=0;
 131   2           keysoundtime=0;
 132   2           keysoundtime_bit=1;
 133   2           return YES;
 134   2         }
 135   1       else
 136   1         return NO;
 137   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    462    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       7
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -