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

📄 main.lst

📁 基于RC500射频卡读写模块的程序设计
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  04/02/2007 15:23:04 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE OPTIMIZE(6,SPEED) BROWSE INCDIR(.\;.\c51) DEFINE(KEIL) DEBUG O
                    -BJECTEXTEND PRINT(.\lst\main.lst) OBJECT(.\obj\main.obj)

stmt level    source

   1          /*验证1:读卡序列号函数readsnr(cardsnr)*/
   2          
   3          #include "main.h"
   4          #include "rc500.h"
   5          #include "lcd.h"
   6          #include "led.h"
   7          #include " VIIC_C51.H"
   8          uchar idata t_buff[16],cardsnr[4];
   9          uchar xdata buff[16];
  10          unsigned long keynumber;
  11          unsigned char disp_buff[6];
  12          unsigned char keybuff[6];
  13          uint tage;
  14          bit     T0IR;           
  15          bit dataconctrl;
  16          bit keyflag;
  17          uint consmeny;
  18          uint d;
  19          ////////////////////////////////////////////////////////////
  20          
  21          
  22          time0() interrupt 1 using 1     /*50ms*/
  23          { 
  24   1       if(tage) 
  25   1              tage--; // Decrease timeout counter
  26   1         if(!tage) 
  27   1         {
  28   2              T0IR = 1;       // Set timeout state
  29   2              TR0 = 0;
  30   2              ES=1;    //when the time is out,enable ES,can access eeprom this time
  31   2      
  32   2         }
  33   1         TF0 = 0;
  34   1            
  35   1        
  36   1      }
  37          
  38          startwait(uchar time)
  39          {       tage=time*2;T0IR=0;
  40   1              TR0=1;ET0=1;EA=1;ES=0;  
  41   1      
  42   1      }
  43          
  44          void putbyte(uchar c)
  45          {
  46   1      SBUF=c;
  47   1      while(!TI);TI=0;
  48   1      }
  49          
  50          void urtinit()       //串口初始化
  51          {  TMOD = 0x21;                 
  52   1         PCON = 0x80;                 
  53   1         SCON = 0x50;                 
  54   1         TH1=0xFD; TL1=0xFD; TR1=1;  //19200.n,8.1
C51 COMPILER V7.06   MAIN                                                                  04/02/2007 15:23:04 PAGE 2   

  55   1         
  56   1      }
  57          
  58          
  59          void setmiyao(void)     
  60          {
  61   1        char buff1[6],buff2[6];
  62   1      
  63   1       buff1[0]=0xff; 
  64   1       buff1[1]=0xff; 
  65   1       buff1[2]=0xff; 
  66   1       buff1[3]=0xff;
  67   1       buff1[4]=0xff; 
  68   1       buff1[5]=0xff;
  69   1       
  70   1       buff2[0]=0xff; 
  71   1       buff2[1]=0xff; 
  72   1       buff2[2]=0xff; 
  73   1       buff2[3]=0xff;
  74   1       buff2[4]=0xff; 
  75   1       buff2[5]=0xff;
  76   1      
  77   1      
  78   1       
  79   1       if(rc500_keys(KEYA,0x03,buff1,buff)==MI_OK) 
  80   1       { putbyte(0xaa);
  81   2       }
  82   1      
  83   1        if(rc500_keys(KEYB,0x03,buff2,buff)==MI_OK)
  84   1        { putbyte(0xbb);
  85   2       }
  86   1      
  87   1       
  88   1       
  89   1       
  90   1      }
  91          
  92          /************************************声响1子程序***********/
  93          void alar(uint k,uchar h)
  94                  {//TOGGLE_WD();
  95   1              while(h--)
  96   1                      {_alarm=ON;
  97   2                        
  98   2                     delay_10ms(k);
  99   2                    _alarm=OFF;
 100   2                    delay_10ms(k);
 101   2                      }
 102   1              }
 103          ////////////////////////////////////////////////////////////
 104          
 105          uchar rcinit()
 106          {
 107   1              alar(30,1);
 108   1              RC500_CS = TRUE;                // Enable the CS for RC500
 109   1              P1=P2=P3=0xff;
 110   1              IT0 = 1;                        // Config ext0 as edge trigger for RC500
 111   1              EX0 = 1;                        // Enable ext0 interrupt for RC500
 112   1              EA = TRUE;                      // Enable all interrupts
 113   1              OpenIO();
 114   1              if(M500PcdConfig()!=MI_OK)
 115   1                      {alar(30,1);
 116   2                        putbyte(0x11);
C51 COMPILER V7.06   MAIN                                                                  04/02/2007 15:23:04 PAGE 3   

 117   2                       return(NOK);           
 118   2                      }
 119   1              else
 120   1                      {
 121   2                       alar(10,3);
 122   2                   putbyte(0x33);
 123   2                       return(OK);}
 124   1      }
 125          
 126          void keymovedisp(unsigned char key)
 127           {    unsigned char dat;
 128   1            dat=key;
 129   1            keybuff[5]=keybuff[4];
 130   1                keybuff[4]=keybuff[3];
 131   1                keybuff[3]=keybuff[2];
 132   1                keybuff[2]=keybuff[1];
 133   1            keybuff[1]=keybuff[0];
 134   1            keybuff[0]=dat;
 135   1            disp_num(keybuff);
 136   1       }
 137          
 138          
 139          void hextobcd(uint x,uchar *d2)
 140          {  char i;
 141   1         uint d1[6];
 142   1        // uchar d2[6];
 143   1          for(i=0;i<6;i++)
 144   1          {
 145   2               d1[i]=x/10;
 146   2               d2[i]=x%10;
 147   2               x=d1[i];
 148   2              }       
 149   1      
 150   1              //bcd[3]=(d2[1]<<4)|d2[0];
 151   1          //bcd[2]=(d2[3]<<4)|d2[2];
 152   1      //      bcd[1]=(d2[5]<<4)|d2[4];
 153   1         // bcd[0]=0x00;
 154   1      }
 155          
 156          void dispyuer(uint x)
 157          {
 158   1       hextobcd(x,keybuff);
 159   1       disp_num_dot2(keybuff);
 160   1      }
 161          uchar readmfandwrite()
 162          { 
 163   1        uchar wrong;
 164   1       startwait(20);/*等待刷卡???*/       
 165   1       while(!T0IR&&keyflag==0)
 166   1       { 
 167   2        
 168   2         if(rc500(READ,KEYA,0x0D,t_buff,cardsnr)==MI_OK)      //有卡???
 169   2              { M500PiccHalt();
 170   3                        d=256*t_buff[1]+t_buff[0];
 171   3                    d=d-consmeny;
 172   3                       // putbyte(t_buff[1]);
 173   3                      //  putbyte(t_buff[0]);
 174   3                 
 175   3                putbyte(cardsnr[0]);
 176   3                        putbyte(cardsnr[1]);
 177   3                putbyte(cardsnr[2]);
 178   3                putbyte(cardsnr[3]);
C51 COMPILER V7.06   MAIN                                                                  04/02/2007 15:23:04 PAGE 4   

 179   3                t_buff[0]=d;
 180   3                        t_buff[1]=d>>8;
 181   3                 wrong=rc500(WRITE,KEYA,0x0D,t_buff,cardsnr);
 182   3                        if(wrong==MI_OK)
 183   3                         {//putbyte(t_buff[1]);
 184   4                         // putbyte(t_buff[0]);
 185   4                              alar(50,1);
 186   4                              disp_cls();
 187   4                              dispyuer(d);
 188   4                         }     
 189   3                      
 190   3             }
 191   2                 M500PiccHalt();
 192   2      
 193   2       }
 194   1      
 195   1       keyflag=1;
 196   1        return 1;
 197   1      }
 198          
 199          void key_pross()
 200          {
 201   1       unsigned char key;
 202   1        key=get_key();  // 从键盘程序返回键盘值
 203   1                 if (key!=0xff)  //若无输入,则重新开始循环体
 204   1                 { 
 205   2                  switch(key)
 206   2                      {case 0:disp_cls();consmeny=0;keybuff[3]=0x00;keybuff[2]=0x00;keybuff[1]=0x00;keybuff[0]=0x00;
 207   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 208   3                       case 1: disp_cls();consmeny=100;keybuff[3]=0x00;keybuff[2]=0x01;keybuff[1]=0x00;keybuff[0]=0x00;
 209   3                           disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 210   3                       case 2: disp_cls();consmeny=200;keybuff[3]=0x00;keybuff[2]=0x02;keybuff[1]=0x00;keybuff[0]=0x00;
 211   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 212   3                       case 3: disp_cls();consmeny=300;keybuff[3]=0x00;keybuff[2]=0x03;keybuff[1]=0x00;keybuff[0]=0x00;
 213   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 214   3                       case 4: disp_cls();consmeny=400;keybuff[3]=0x00;keybuff[2]=0x04;keybuff[1]=0x00;keybuff[0]=0x00;
 215   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 216   3                       case 5: disp_cls();consmeny=500;keybuff[3]=0x00;keybuff[2]=0x05;keybuff[1]=0x00;keybuff[0]=0x00;
 217   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 218   3                       case 6: disp_cls();consmeny=600;keybuff[3]=0x00;keybuff[2]=0x06;keybuff[1]=0x00;keybuff[0]=0x00;
 219   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 220   3                       case 7: disp_cls();consmeny=700;keybuff[3]=0x00;keybuff[2]=0x07;keybuff[1]=0x00;keybuff[0]=0x00;
 221   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 222   3                       case 8: disp_cls();consmeny=800;keybuff[3]=0x00;keybuff[2]=0x08;keybuff[1]=0x00;keybuff[0]=0x00;
 223   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 224   3                       case 9: disp_cls();consmeny=900;keybuff[3]=0x00;keybuff[2]=0x09;keybuff[1]=0x00;keybuff[0]=0x00;
 225   3                          disp_num_dot(keybuff);keyflag=0;readmfandwrite();break;
 226   3                       case 10: break;
 227   3                       case 11: break;
 228   3                       case 12: break;
 229   3                       case 13: break;
 230   3                       case 14: break;
 231   3                       case 15: break;
 232   3                       default: break;
 233   3                       
 234   3                      }
 235   2                 
 236   2                 /*if(0<=key&&key<=9)
 237   2                   { keymovedisp(key);      
 238   2                   }
 239   2                       else if(key==15)   //确定键
 240   2                       {keyflag=0; 
C51 COMPILER V7.06   MAIN                                                                  04/02/2007 15:23:04 PAGE 5   

 241   2                        
 242   2                        keybuff[3]=0x03;
 243   2                        keybuff[2]=0x02;
 244   2                        keybuff[1]=0x01;
 245   2                        keybuff[0]=0x00;
 246   2      
 247   2                        consmeny=keybuff[3]*1000+keybuff[2]*100+keybuff[1]*10+keybuff[0];
 248   2                    disp_num_dot(keybuff);
 249   2      
 250   2                       // putbyte(consmeny);
 251   2               // consmeny=consmeny>>8;
 252   2               // putbyte(consmeny);
 253   2                       }
 254   2                       else if(key==14)   //清零键
 255   2                       {keybuff[5]=0x00;
 256   2                        keybuff[4]=0x00;
 257   2                        keybuff[3]=0x00;
 258   2                        keybuff[2]=0x00;
 259   2                        keybuff[1]=0x00;
 260   2                        keybuff[0]=0x00;
 261   2                        disp_cls();
 262   2                       }
 263   2                */
 264   2                 }
 265   1      }
 266          
 267          main()
 268          {
 269   1       urtinit();
 270   1       putbyte(0x55);
 271   1       disp_int();
 272   1       rcinit();
 273   1       keyflag=1;
 274   1       setmiyao();
 275   1       while(1)
 276   1              { key_pross();  
 277   2                readmfandwrite();
 278   2          /* 
 279   2          if(rc500(READ,KEYA,0x0D,t_buff,cardsnr)==MI_OK)     //有卡???
 280   2              {M500PiccHalt(); 
 281   2               alar(50,1);     
 282   2                       putbyte(0xaa);
 283   2                       if(rc500(WRITE,KEYA,0x0D,t_buff,cardsnr)==MI_OK)
 284   2                         {//putbyte(t_buff[1]);
 285   2                          //putbyte(t_buff[0]);
 286   2                //alar(50,1);
 287   2                              putbyte(0xbb);
 288   2                         }
 289   2                       
 290   2                      }
 291   2                  
 292   2              
 293   2              */      
 294   2             
 295   2              }
 296   1       
 297   1      }
 298          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1333    ----
C51 COMPILER V7.06   MAIN                                                                  04/02/2007 15:23:04 PAGE 6   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     38      33
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     20    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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