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

📄 main.lst

📁 小车上用的电脑锁方案(射频卡当钥匙):包括原理图
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  06/02/2005 11:16:07 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.C DB OE SMALL ROM(LARGE)

line level    source

   1          /*********************************************************************
   2            MAIN function for vx1818 (Copyright(c) HuaLong Inc. 2005)
   3            v1.0
   4            Data:2005.03.04
   5            by Ljj422
   6          *********************************************************************/
   7          #include <intrins.h>
   8          #include <stdio.h>
   9          #include <string.h>
  10          #include "reg52.h"
  11          #include "delay.h"
  12          #include "MCUIO.H"
  13          #include "EERAM.H"
  14          #include "resetmcu.h"
  15          
  16          
  17          void GetEmCardID(void);
  18          void McuIni(void);
  19          bit  CardIDCheck(void);
  20          void  ioCheck(void);
  21          
  22          unsigned char idata EmCardID[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  23          unsigned int idata TimerLoop=0,Timer0=0,LightTimer=0,WarningTimer=0,LEDTimer=0;
  24          unsigned int LEDCount=0;
  25          unsigned char code CardID1[8]={0xaa,0xff,0x05,0x00,0xfa,0xb8,0xfe,0xec};
  26          unsigned char code CardID2[8]={0xaa,0xff,0x02,0x00,0x32,0xbd,0x9b,0x43};
  27          unsigned char SystemState=0;
  28          bit MCU_ACC = 0;
  29          bit MCU_Brake =0;
  30          bit MCU_Door =0;
  31          bit MCU_Start =0;
  32          bit IDCardPassFlag=0;
  33          bit LEDOpenFlag=0;
  34          //----------------------
  35          bit Start30sFlag=0;
  36          #define CarPowerClose   0
  37          #define   CarCardCheck  1
  38          #define   CarPowerOpen  2
  39          #define   CarDoorOpen           3
  40          #define   CarWarning            4
  41          #define   CarStart              5
  42          //----------------------------
  43          bit GetACardIDFlag=0;
  44          bit IniCarWarning=0;
  45          
  46          
  47          
  48          
  49          /*************************************************************************************/
  50          void main(void)using 0
  51          {
  52   1              delay200ms();
  53   1              P0=0x00;
  54   1              JStart_Clr;
  55   1              delay20ms();
C51 COMPILER V7.20   MAIN                                                                  06/02/2005 11:16:07 PAGE 2   

  56   1              McuIni();       
  57   1              LEDOpenFlag=1;
  58   1              LEDCount=1000;   // 1s 
  59   1              while(1){
  60   2                      ioCheck();
  61   2              //car no opration mode          
  62   2                      if( (MCU_ACC==0)  &&  (MCU_Start==0) ){
  63   3                      //input 
  64   3                              if(Start30sFlag==0){                            
  65   4                                      WarningTimer=30000;
  66   4                                      Start30sFlag=1;
  67   4                              }//30s
  68   3                              else if(WarningTimer==0){ 
  69   4                                      if(Start30sFlag==1){
  70   5                                              SystemState=CarPowerClose;
  71   5                                              Start30sFlag=0;
  72   5                                              IDCardPassFlag=0;
  73   5                                              LEDCount=1000;
  74   5                                              ResetMcu();
  75   5                                      }
  76   4                                      else {;}
  77   4                              }
  78   3                      }
  79   2                      else if(Start30sFlag==1)Start30sFlag=0;
  80   2              //Car Card ID Check
  81   2                  if( (SystemState!=CarPowerOpen) && (SystemState!=CarStart) && (!MCU_Brake) ){
  82   3                              if(LEDCount==1000){
  83   4                                      LEDCount=200;
  84   4                                      SystemState=CarCardCheck;
  85   4                              }
  86   3                      }                  
  87   2                 if( ( GetACardIDFlag) && (SystemState==CarCardCheck) ){
  88   3                              GetACardIDFlag=0;
  89   3                              if( (CardIDCheck()) && (SystemState!=CarPowerOpen) && (SystemState!=CarStart) ){
  90   4                                      LEDCount=1000;
  91   4                                      LEDOpenFlag=0;
  92   4                                      JCarOil=1;
  93   4                                      delay20ms();
  94   4                                      JStart_Set;
  95   4                                      delay20ms();
  96   4                                      JSpeaker=0;delay20ms();
  97   4                                      IDCardPassFlag=1;
  98   4                                      JLED=0;delay20ms();
  99   4                                      
 100   4                              }                       
 101   3                      }
 102   2              //Car Power Open
 103   2                      if( MCU_ACC ){
 104   3                              if(IDCardPassFlag)SystemState=CarPowerOpen;
 105   3                              else if(SystemState!=CarWarning)IniCarWarning=1;
 106   3                      }
 107   2              //Car Start
 108   2                      if( MCU_Start ){
 109   3                              if(IDCardPassFlag)SystemState=CarStart;
 110   3                              else if(SystemState!=CarWarning)IniCarWarning=1;
 111   3                      }
 112   2              //Car Warning
 113   2              if(IniCarWarning){
 114   3                              SystemState=CarWarning;
 115   3                              IniCarWarning=0;
 116   3                              delay1s();      
 117   3                              JSpeaker=1;
C51 COMPILER V7.20   MAIN                                                                  06/02/2005 11:16:07 PAGE 3   

 118   3                              delay20ms();
 119   3                              JCarOil=0;
 120   3                              delay20ms();
 121   3                              JStart_Clr;
 122   3                              delay20ms();
 123   3                      }                       
 124   2              //Car Door Open
 125   2                  if( (MCU_Door==0) && (MCU_ACC==1) ){
 126   3                              if(LightTimer==0){
 127   4                                      LightTimer=500;
 128   4                                      JTurnLight=~JTurnLight;
 129   4                                      delay20ms();
 130   4                              }       
 131   3                     }
 132   2                  else JTurnLight=0;
 133   2              }
 134   1      }
 135          
 136          
 137          
 138          
 139          
 140           void Timer0_1ms(void) interrupt 1 using 1
 141          {
 142   1              
 143   1              //0.270ms
 144   1              if(TimerLoop<3)TimerLoop++;
 145   1              else{
 146   2                 TimerLoop=0;   
 147   2                 if(WarningTimer!=0)WarningTimer--;
 148   2                 if(Timer0!=0)Timer0--;
 149   2                 if(LightTimer!=0)LightTimer--;
 150   2                 //------LED CONTROL
 151   2                 if(LEDTimer!=0)LEDTimer--;
 152   2                 else if(LEDOpenFlag){
 153   3                      LEDTimer=LEDCount;
 154   3                      if(P0&0x10)P0 &=0xef;
 155   3                      else P0 |=0x10;
 156   3                 }
 157   2                 else P0 &=0xef;
 158   2              }
 159   1      }
 160          
 161          
 162          
 163          
 164          void McuIni(void){
 165   1      
 166   1              // set timer 0
 167   1              TMOD &= 0xf0;
 168   1              TMOD |= 0x02;
 169   1              TL0 = -250;
 170   1              TH0 = -250;
 171   1              TCON &= 0xcf;
 172   1              TCON |= 0x10;
 173   1      
 174   1              // set timer 1
 175   1              TMOD &= 0x0f;
 176   1              TMOD |= 0x20;
 177   1              TL1 = 0xfa;             //0xf3;
 178   1              TH1 = 0xfa;             //0xf3;
 179   1              TCON &= 0x3f;
C51 COMPILER V7.20   MAIN                                                                  06/02/2005 11:16:07 PAGE 4   

 180   1              TCON |= 0x40;
 181   1      
 182   1              SCON = 0x50;
 183   1              PCON |= 0x80;
 184   1              TR1=1;
 185   1              // set interrupt
 186   1              PT0=1;
 187   1              EA=1;
 188   1              ES=1;
 189   1              ET0=1;
 190   1              REN=1;
 191   1              
 192   1             // P4CONA=0x00;
 193   1              //P4CONB=0x00;
 194   1              //IO INI
 195   1              P0=0;
 196   1              P1=0xFF;
 197   1              P2=0xff;
 198   1              P3=0xff;
 199   1              JStart_Clr;
 200   1      
 201   1      }
 202          
 203          
 204          void GetEmCardID(void) interrupt 4 using 2{
 205   1              unsigned char temp;
 206   1      
 207   1      //------first byte   
 208   1          if(RI==0)return;
 209   1          RI=0;
 210   1          if(SBUF!=0xaa){TI=0;return;}
 211   1          EmCardID[0]=SBUF;
 212   1      
 213   1      //------second byte
 214   1          Timer0=5;   //wait 
 215   1          while(RI==0){
 216   2              if(Timer0==0)return;
 217   2          }
 218   1              if(SBUF!=0xff)return;
 219   1              EmCardID[1]=SBUF;
 220   1      //------ID NO.1 byte
 221   1          Timer0=5;   //wait 
 222   1          RI=0;
 223   1          while(RI==0){
 224   2              if(Timer0==0)return;
 225   2          }
 226   1              EmCardID[2]=SBUF;
 227   1      //------ID NO.2 byte
 228   1          Timer0=5;   //wait 
 229   1          RI=0;
 230   1          while(RI==0){
 231   2                      if(Timer0==0)return;
 232   2          }
 233   1              EmCardID[3]=SBUF;               
 234   1      //------ID NO.3 byte
 235   1          Timer0=5;   //wait 
 236   1          RI=0;
 237   1          while(RI==0){
 238   2                      if(Timer0==0)return;
 239   2          }
 240   1              EmCardID[4]=SBUF;
 241   1      //------ID NO.4 byte
C51 COMPILER V7.20   MAIN                                                                  06/02/2005 11:16:07 PAGE 5   

 242   1          Timer0=5;   //wait 
 243   1          RI=0;
 244   1          while(RI==0){
 245   2                      if(Timer0==0)return;
 246   2          }
 247   1              EmCardID[5]=SBUF;       
 248   1      //------ID NO.5 byte
 249   1          Timer0=5;   //wait 
 250   1          RI=0;
 251   1          while(RI==0){
 252   2                      if(Timer0==0)return;
 253   2          }
 254   1              EmCardID[6]=SBUF;
 255   1      //------CHECK SUM
 256   1          Timer0=5;   //wait 
 257   1          RI=0;
 258   1          while(RI==0){
 259   2                      if(Timer0==0)return;
 260   2          }
 261   1              EmCardID[7]=SBUF;
 262   1      
 263   1      
 264   1      //-------XOR CHECK----
 265   1              temp=EmCardID[0]^
 266   1                   EmCardID[1]^
 267   1                   EmCardID[2]^
 268   1                   EmCardID[3]^
 269   1                   EmCardID[4]^
 270   1                   EmCardID[5]^
 271   1                   EmCardID[6];
 272   1              if(temp!=EmCardID[7])return;
 273   1              else GetACardIDFlag=1;
 274   1      }
 275          
 276          
 277          void  ioCheck(void){
 278   1              unsigned char temp;
 279   1      
 280   1              temp=P2 & 0x1E;
 281   1              delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();
 282   1              if(temp== (P2 & 0x1E)){
 283   2                      MCU_ACC=~ioMCU_ACC;
 284   2                      MCU_Brake=~ioMCU_Brake;
 285   2                      MCU_Door=~ioMCU_Door;
 286   2                      MCU_Start=~ioMCU_Start;
 287   2              }
 288   1      }
 289          
 290          
 291          bit  CardIDCheck(void){
 292   1              if(  (EmCardID[0]==CardID1[0]) || (EmCardID[0]==CardID2[0])  ){
 293   2                      if(  (EmCardID[1]==CardID1[1]) || (EmCardID[1]==CardID2[1])  ){
 294   3                              if(  (EmCardID[2]==CardID1[2]) || (EmCardID[2]==CardID2[2])  ){
 295   4                                      if(  (EmCardID[3]==CardID1[3]) || (EmCardID[3]==CardID2[3])  ){
 296   5                                              if(  (EmCardID[4]==CardID1[4]) || (EmCardID[4]==CardID2[4])  ){
 297   6                                                      if(  (EmCardID[5]==CardID1[5]) || (EmCardID[5]==CardID2[5])  ){
 298   7                                                              if(  (EmCardID[6]==CardID1[6]) || (EmCardID[6]==CardID2[6])  ){
 299   8                                                                       if(  (EmCardID[7]==CardID1[7]) || (EmCardID[7]==CardID2[7])  ){
 300   9                                                                                      return 1;
 301   9                                                                       }
 302   8                                                              }
 303   7                                                      }
C51 COMPILER V7.20   MAIN                                                                  06/02/2005 11:16:07 PAGE 6   

 304   6                                              }
 305   5                                      }
 306   4                              }
 307   3                      }
 308   2              }
 309   1              return 0;        
 310   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    940    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       1
   IDATA SIZE       =     18    ----
   BIT SIZE         =      9    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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