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

📄 emrfc.lst

📁 安防产品源程序 包括液晶芯片, c51单片机,通讯等 程序
💻 LST
字号:
C51 COMPILER V3.20,  SN-50203013  EMRFC                                                    03/14/07  15:02:59  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE EMRFC
OBJECT MODULE PLACED IN EMRFC.OBJ
COMPILER INVOKED BY: D:\COMP51\BIN\C51.EXE EMRFC.C DB OE SMALL ROM(LARGE) 

stmt level    source

   1          #pragma RB(0)
   2          #pragma OT(5,SIZE)
   3          #include<reg52.h>
   4          #include<intrins.h>
   5          #include <pub2000.h>
   6          /*************************************************/
   7          /*功能:用来对EM4095的读卡信号进行解码,以键盘接口*/
   8          /*     协议输出卡号                     	 */
   9          /*适用条件:卡格式为EM4001,码格式为曼彻斯特,     */
  10          /*         BITRATE=RF/64                         */                            
  11          /*编写时间:2005.9.12                             */
  12          /*编写人:唯实公司-张建炜                         */ 
  13          /*************************************************/
  14          
  15          #define uchar unsigned char 
  16          #define uint  unsigned int 
  17          #define ulong unsigned long
  18          /********** 11.0592MHz ************************/
  19          #define TSMAX  320  /*最大有效半周期长度256us=235*/
  20          #define TSMIN  140  /*最小有效半周期长度*/
  21          #define TLMIN  330  /*最小一周期长度512us=471*/
  22          #define TLMAX  650  /*最大一周期长度*/ 
  23          /********** 11.0592MHz ************************/
  24           
  25          extern uchar TT1;
  26          unsigned char bdata DMbyte;
  27          sbit DMbit0 = DMbyte^0;
  28          sbit DMbit1 = DMbyte^1;
  29          sbit DMbit2 = DMbyte^2;
  30          sbit DMbit3 = DMbyte^3;
  31          sbit DMbit4 = DMbyte^4;
  32          sbit DMbit5 = DMbyte^5;
  33          sbit DMbit6 = DMbyte^6;
  34          sbit DMbit7 = DMbyte^7;
  35          
  36          #define TH OO.AA[0]
  37          #define TL OO.AA[1]
  38          
  39          union
  40             {
  41             uchar AA[2];
  42             uint HL;
  43             } data WW,OO;
  44          unsigned int data PTime;
  45          bit TF;
  46          unsigned char data BitNumb;
  47          unsigned char data ByteNumb;
  48          unsigned char data RFCardID[11];
  49          unsigned char bdata BCDByte;
  50          sbit CardS0=BCDByte^0; 
  51          unsigned char data Parity;
  52          bit DataFlag=0;
  53          
  54          void startTime()
  55          {    
C51 COMPILER V3.20,  SN-50203013  EMRFC                                                    03/14/07  15:02:59  PAGE 2   

  56   1        if ( TF0 ) PTime=0xffff; else;
  57   1        TR0=0;
  58   1        WW.AA[0]=TH0; 
  59   1        WW.AA[1]=TL0;
  60   1        TR0=1;
  61   1        PTime=WW.HL-OO.HL;
  62   1        TH=WW.AA[0];TL=WW.AA[1]; 
  63   1      } 
  64          
  65          bit searchHead()
  66          {
  67   1      
  68   1         bit flag;
  69   1         while ( !TF0 )
  70   1            {
  71   2            flag=CARDIN;
  72   2            while ( CARDIN==flag && (TH0-TH)<4 );startTime();
  73   2            if ( (TH0-TH)>3 ) return 0; else;
  74   2            
  75   2            if ( PTime<TLMAX && PTime>TLMIN ) 
  76   2               {
  77   3               if ( flag ) 
  78   3                  {
  79   4                  BitNumb=1;
  80   4                  return 1;
  81   4                  }
  82   3               else;
  83   3               }
  84   2            else if ( PTime<TSMAX && PTime>TSMIN );   
  85   2            else return 0;
  86   2            }
  87   1         return 0; /*超时*/   
  88   1      }
  89          
  90          uchar rdCard()
  91          {
  92   1         uchar AA;
  93   1         bit flag;   
  94   1      
  95   1         Mod=0;
  96   1       
  97   1         TT1=0;  
  98   1         TH0=0xab;TL0=0x00; TF0=0; // 25ms ;
  99   1         TR0=1; ET0=1;
 100   1         while ( TT1<1 ) PCON=1; // IDLE MODE
 101   1         ET0=0;
 102   1         
 103   1         TR0=0; TH0=0xf5;TL0=34;TR0=1; TF0=0;    /*在3ms之内检测CARDIN是否有跳变*/
 104   1         while( !CARDIN && !TF0 ); 
 105   1         startTime();
 106   1         if ( TF0 ) return 0; else;
 107   1         
 108   1         /*第一个脉冲跳过去*/  
 109   1         TR0=0;TH0=0;TL0=0;TR0=1; TF0=0;
 110   1         while ( CARDIN && TH0<3 ); startTime();
 111   1         if ( TH>2 ) return 0; else;   
 112   1         
 113   1         if ( !searchHead() ) 
 114   1            return 0;
 115   1         else;
 116   1      
 117   1         while ( BitNumb<9 )
C51 COMPILER V3.20,  SN-50203013  EMRFC                                                    03/14/07  15:02:59  PAGE 3   

 118   1            {
 119   2            while ( !CARDIN && (TH0-TH)<4 ); startTime();
 120   2            if ( PTime<TSMAX && PTime>TSMIN )
 121   2               {
 122   3               while ( CARDIN && (TH0-TH)<4 ); startTime();
 123   3               if ( PTime<TSMAX && PTime>TSMIN )
 124   3                  {
 125   4                  if ( BitNumb>8 ) break;
 126   4                  else BitNumb++;
 127   4                  }
 128   3               else 
 129   3                  return 0;   
 130   3               }
 131   2            else if ( PTime<TLMAX && PTime>TLMIN )
 132   2               {
 133   3               if ( !searchHead() ) 
 134   3                  return 0;
 135   3               }   
 136   2            else return 0;   
 137   2            
 138   2            }
 139   1         /*读数据*/
 140   1         BitNumb=0; ByteNumb=0; BCDByte=0; Parity=0; flag=0;
 141   1      
 142   1         while (1)
 143   1            {
 144   2            BCDByte<<=1;// DataFlag=~DataFlag;
 145   2            while ( (CARDIN==flag) && (TH0-TH)<4 ); startTime();
 146   2            flag=!flag;
 147   2            if (PTime>TSMIN && PTime<TSMAX)
 148   2               {
 149   3               while ( (CARDIN==flag) && (TH0-TH)<4 ); startTime();
 150   3               flag = !flag;
 151   3               if (PTime>TSMIN && PTime<TSMAX) 
 152   3                  {
 153   4                  if ( flag==0 ) 
 154   4                     { 
 155   5                     BCDByte |=1; 
 156   5                     }
 157   4                  else;
 158   4                  BitNumb++;
 159   4                  }
 160   3               else return 0;
 161   3               }
 162   2            else if ( PTime>TLMIN && PTime<TLMAX ) 
 163   2               {
 164   3               if (!flag) BCDByte |= 1; 
 165   3               else;
 166   3               BitNumb++;
 167   3               }
 168   2            else return 0;
 169   2            
 170   2            if ( BitNumb>=5 )
 171   2               {
 172   3               BitNumb=0;
 173   3               if ( ByteNumb<10 )
 174   3                  {
 175   4                  RFCardID[ByteNumb]=BCDByte; 
 176   4                  ACC=BCDByte;
 177   4                  if (P==0){ ByteNumb++; Parity ^= BCDByte; }
 178   4                  else return 0;
 179   4                  BCDByte=0; 
C51 COMPILER V3.20,  SN-50203013  EMRFC                                                    03/14/07  15:02:59  PAGE 4   

 180   4                  }
 181   3               else
 182   3                  {
 183   4                  RFCardID[10]=BCDByte;
 184   4                  if ( CardS0 != 0 ) 
 185   4                     return 0;
 186   4                  else;
 187   4                  Parity ^= BCDByte;
 188   4                  Parity=Parity>>1;
 189   4                  BCDByte=0;
 190   4                  if ( Parity!=0 ) 
 191   4                     return 0;
 192   4                  else return 1;
 193   4                  }      
 194   3               }   
 195   2            else;   
 196   2            }  
 197   1      }
 198          
 199          void handleID() 
 200          	{
 201   1         	unsigned char i;
 202   1      
 203   1         	for ( i=0;i<10;i=i+2 )
 204   1            	   {
 205   2            	   RFCardID[i/2] = ((RFCardID[i]<<3) & 0xf0) + (RFCardID[i+1]>>1);
 206   2            	   }
 207   1      	}
 208          
 209          bit rfEM() /*1:有卡;0:无卡*/
 210          {
 211   1         uchar i=0;
 212   1         bit flag;
 213   1         
 214   1         if ( rdCard()==1 ) 
 215   1            {
 216   2            handleID();
 217   2            return 1;
 218   2            }
 219   1         else return 0;
 220   1      }
 221          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    663    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     22       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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