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

📄 function.lst

📁 slrc632程序..网上绝对找不到.对RC632读TYPEB完整的程序包
💻 LST
字号:
C51 COMPILER V7.50   FUNCTION                                                              07/17/2008 22:58:13 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FUNCTION
OBJECT MODULE PLACED IN function.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE function.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REGX52.H>
   2          #include <main.h>
   3          #include <function.h>
   4          #include <typeb.h>
   5          /***************************
   6          *串口缓冲区
   7          ****************************/
   8          static idata volatile com com_buff;
   9          /***************************
  10          *函 数:延时程序
  11          *void delay(uchar a)
  12          *输入函数
  13          ***************************/
  14          void Delay(uchar  a)
  15          {
  16   1              static uchar b;
  17   1      
  18   1              while(--a)
  19   1               {
  20   2                for(b=0;b<255;b++);
  21   2                   }
  22   1      }
  23          
  24          /******************************
  25          *函数:写MFRC500
  26          *void WriteIO(uchar Address,uchar value)
  27          *
  28          *********************************/
  29          void WriteIO(uchar Address,uchar value)
  30          {
  31   1         uchar xdata *pa;
  32   1      
  33   1         pa=Base_addr;
  34   1      
  35   1         EA = 0;          //关闭中断
  36   1      
  37   1         CS_RC500();     //选中MFRC500
  38   1      
  39   1         *pa=Address>>3;
  40   1         pa=Address+Base_addr;
  41   1         *pa=value;
  42   1      
  43   1         UCS_RC500();    //不先中MFRC500
  44   1      
  45   1         EA = 1;
  46   1      }
  47          
  48          
  49          /******************************
  50          *函数:读MFRC500
  51          *uchar ReadIO(uchar Address)
  52          *返回来为uchar
  53          *********************************/
  54          uchar ReadIO(uchar Address)
  55          {
C51 COMPILER V7.50   FUNCTION                                                              07/17/2008 22:58:13 PAGE 2   

  56   1          static uchar xdata *pa;
  57   1          static uchar temp;
  58   1      
  59   1          pa=Base_addr;
  60   1      
  61   1          EA = 0;                  //关闭中断
  62   1      
  63   1          CS_RC500();             //选中MFRC500
  64   1      
  65   1          *pa=Address>>3;
  66   1          pa=Address+Base_addr;   //读取MFRC500
  67   1          temp = *pa;
  68   1      
  69   1          UCS_RC500();            //不选中MFRC500
  70   1        
  71   1          EA = 1;                //开中断
  72   1      
  73   1         return(temp);          //返回从MFRC500读出来的值
  74   1      }
  75          
  76          
  77          /******************************
  78          *函数:蜂鸣器发声
  79          *void BellSpeak(void)
  80          *无返回值
  81          *********************************/
  82          void BellSpeak(void)
  83          {
  84   1              Bell=0;          //输出低电平
  85   1              Delay(20);       //发出响声
  86   1              Bell=1;          //关闭峰鸣器
  87   1      }
  88          
  89          /******************************
  90          *函数名称:void system_initial(void)
  91          *函数功能:系统初始化
  92          *函数说明:初始化整个系统
  93          *返 回 值:无返回值
  94          *********************************/
  95          /****************************
  96          *COM初始化
  97          *无-->
  98          *无-->
  99          *Fosc = 22.1184Mhz,Baud = 115200
 100          *Reload = Int(22118400/115200/32+0.5)
 101          *       = Int(6.5)
 102          *       = 6
 103          *       = 0006H
 104          *10000H - 0006H = FFFAH
 105          *RCAP2H = 0xff
 106          *RCAP2L = 0xfa
 107          *****************************/
 108          void system_initial(void)
 109          {
 110   1      //IO口初始化
 111   1              P0 = 0xff;
 112   1              P1 = 0xff;
 113   1              P2 = 0xff;
 114   1              P3 = 0xff;
 115   1      //串口初始化
 116   1              SCON = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
 117   1              TMOD = 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
C51 COMPILER V7.50   FUNCTION                                                              07/17/2008 22:58:13 PAGE 3   

 118   1              TH1  = 0xFd;       //Baud:9600  fosc=11.0592MHz 
 119   1              TL1  = 0xF4;
 120   1              TR1 = 1;          // timer 1 run 
 121   1              ES  = 0;
 122   1              EA  = 0; 
 123   1      
 124   1      }
 125          
 126          /****************************
 127          *串口发送一个字节
 128          *输入-->unsigned char ch
 129          *返回-->无
 130          *****************************/
 131          void send_char_com(unsigned char ch)  
 132          {
 133   1          SBUF=ch;
 134   1          while(TI==0);
 135   1          TI=0;
 136   1      }
 137          
 138          /****************************
 139          *串口发送字符串
 140          *输入-->unsigned char *str;unsigned char strlen ->字符串指针;字符串长度
 141          *返回-->无
 142          *****************************/
 143          void send_string_com(unsigned char *str,unsigned char strlen)
 144          {
 145   1              unsigned char k=0;
 146   1      
 147   1          do 
 148   1          {
 149   2              send_char_com(*(str + k));   //发送字符串数据
 150   2              k++;
 151   2          } while(k < strlen);
 152   1      }
 153          
 154          /****************************
 155          *韦根延时100us
 156          *输入-->无
 157          *返回-->无
 158          *****************************/
 159          void dealay100us(void)
 160          {                       
 161   1              TH0 = 0xff;
 162   1              TL0 = 0xa3;
 163   1              TF0 = 0; 
 164   1              TR0 = 1; 
 165   1              while (!TF0);
 166   1              TR0 = 0; 
 167   1              TF0 = 0;
 168   1       
 169   1      }
 170          
 171          /****************************
 172          *韦根延时1500us
 173          *输入-->无
 174          *返回-->无
 175          *****************************/
 176          void dealay1500us(void)
 177          {
 178   1              TH0 = 0xfa;
 179   1              TL0 = 0x99;
C51 COMPILER V7.50   FUNCTION                                                              07/17/2008 22:58:13 PAGE 4   

 180   1              TF0 = 0;  
 181   1              TR0 = 1; 
 182   1              while (!TF0);
 183   1              TR0 = 0;
 184   1              TF0 = 0; 
 185   1      }
 186          
 187          /****************************
 188          *韦根发送数据
 189          *输入-->*str
 190          *返回-->无
 191          *1:区号 2:ID号高位 3:ID号低位
 192          *****************************/
 193          void send_wiegand26(uchar *str) 
 194          { 
 195   1              uchar idata i,j; 
 196   1              static uchar data one_num; //计算1的个数 
 197   1              uchar data check_temp; //韦根包奇偶效验中间暂存 
 198   1              bit data even; //韦根包前12位偶效验 
 199   1              bit data odd; //韦根包后12位齐效验 
 200   1              static uchar data wiegand[3]; //韦根包数据24位 
 201   1      //计算前8位1的个数,为偶效验用 
 202   1          wiegand[0]=*str;
 203   1          check_temp = wiegand[0]; 
 204   1      
 205   1              for(i = 0;i<8;i++) 
 206   1              { 
 207   2                      if(check_temp&0x01) //(check_temp&0x01) 
 208   2                      { 
 209   3                              one_num++; 
 210   3                      } 
 211   2      
 212   2                      check_temp >>= 1; 
 213   2              } 
 214   1      
 215   1              wiegand[1] = *(str+1); 
 216   1      //计算接下来的4位1的个数,为偶效验用 
 217   1              check_temp = wiegand[1]; 
 218   1      
 219   1              for(i = 0;i<4;i++) 
 220   1              { 
 221   2                      if(check_temp&0x80) 
 222   2                      { 
 223   3                              one_num++; 
 224   3                      } 
 225   2      
 226   2                      check_temp<<=1; 
 227   2              } 
 228   1      //判断1的个数 
 229   1              one_num%2 == 0 ? (even = 0):( even = 1); 
 230   1              one_num = 0; 
 231   1      //计算接下来的4位1的个数,为奇效验用 
 232   1              check_temp = wiegand[1]; 
 233   1      
 234   1              for(i = 0;i<4;i++) 
 235   1              { 
 236   2                      if(check_temp&0x01)
 237   2                      {
 238   3                              one_num++;
 239   3                      } 
 240   2      
 241   2                      check_temp>>=1; 
C51 COMPILER V7.50   FUNCTION                                                              07/17/2008 22:58:13 PAGE 5   

 242   2              } 
 243   1      
 244   1              wiegand[2] =*(str+2); 
 245   1      //计算接下来的8位1的个数,为奇效验用 
 246   1              check_temp = wiegand[2]; 
 247   1      
 248   1              for(i = 0;i<8;i++) 
 249   1              { 
 250   2                      if(check_temp&0x01)
 251   2                      {
 252   3                              one_num++;
 253   3                      } 
 254   2                      
 255   2                      check_temp >>= 1; 
 256   2      
 257   2              } 
 258   1      //判断1的个数 
 259   1              one_num%2 == 0 ? (odd = 1):( odd = 0); 
 260   1              one_num = 0; 
 261   1      
 262   1      //启动发送,用定时器做时间延时 
 263   1      //韦根 输出端初始化 
 264   1              Wgl = 1; 
 265   1              Wgh = 1; 
 266   1      //发送偶效验 
 267   1      
 268   1      //enen韦根包前12位偶效验标志
 269   1              if(even)                     
 270   1              { 
 271   2                      Wgh = 0; 
 272   2                      dealay100us();//延时100us
 273   2                      Wgh = 1; 
 274   2              } 
 275   1              else 
 276   1                      { 
 277   2                              Wgl = 0; 
 278   2                              dealay100us();//延时100us
 279   2                              Wgl = 1; 
 280   2                      }
 281   1       
 282   1              dealay1500us();//延时一个发送周期
 283   1      
 284   1      //发送24位数据 
 285   1              for(j=0;j<3;j++)
 286   1              {
 287   2                      for(i = 0;i<8;i++) 
 288   2                      { 
 289   3      //韦根 输出端初始化 
 290   3                              if((wiegand[j])&0x80) 
 291   3                              { 
 292   4                                              Wgh = 0;  
 293   4                                              dealay100us();//延时100us
 294   4                                              Wgh = 1; 
 295   4                              } 
 296   3                              else 
 297   3                                      { 
 298   4                                              Wgl = 0; 
 299   4                                              dealay100us();//延时100us
 300   4                                              Wgl = 1; 
 301   4                                      }
 302   3       
 303   3                       wiegand[j] <<= 1; 
C51 COMPILER V7.50   FUNCTION                                                              07/17/2008 22:58:13 PAGE 6   

 304   3                  
 305   3                      dealay1500us();//延时一个发送周期 
 306   3                      } 
 307   2              }
 308   1      //发送奇效验位 
 309   1      //韦根 输出端初始化 
 310   1      //韦根包后12位后效验标志
 311   1              if(odd)  
 312   1              { 
 313   2                      Wgh = 0; 
 314   2                      dealay100us();//延时100us 
 315   2                      Wgh = 1; 
 316   2              } 
 317   1              else 
 318   1                      { 
 319   2                              Wgl = 0; 
 320   2                              dealay100us();//延时100us 
 321   2                              Wgl = 1; 
 322   2                      } 
 323   1      } 
 324          
 325          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    466    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       3
   IDATA SIZE       =     12       2
   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 + -