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

📄 main.lst

📁 c8051f310xmodembootloader.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE INTVECTOR(0X1000) DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************************
   2          ** copyright(c) skee ltd,.co. 1996-2009
   3          ** c8051f310  256+1024 bytes ram    osc:24.5M
   4          ** RFchip  si4421(433M)   Anti-collision
   5          ** Last Modify 2009-12-9
   6          ** by jerkoh
   7          ** V2.0
   8          ******************************************************************************/
   9          
  10          #include "global.h"
  11          
  12          unsigned char code  system_date[]="\r\n[msg:]Compiler_date:"   __DATE__;
  13          unsigned char code  system_time[]="\r\n[msg:]Compiler_date:"   __TIME__;
  14          /******************************************************************************
  15          ** MAIN Routine
  16          ******************************************************************************/
  17          
  18          void main (void)
  19          {
  20   1        
  21   1         unsigned char nr;
  22   1         unsigned int  event_word_copy;
  23   1         
  24   1                                                       // Disable Watchdog timer
  25   1         PCA0MD &= ~0x40;                              // WDTE = 0 (clear watchdog timer 
  26   1                                                       // enable)
  27   1         PORT_Init();                                  // Initialize Port I/O
  28   1         SYSCLK_Init ();  
  29   1                                                       // Initialize Oscillator
  30   1         
  31   1         event_word=0;
  32   1      
  33   1         delayms(200);
  34   1         Timer0_Init();
  35   1         Timer2_Init(SYSCLK/TIMER2_RATE);              // Init Timer 2 
  36   1      
  37   1         PCA_Init ();
  38   1         InitSysTimer();                               // 初始化计数器
  39   1         
  40   1         Beef(2,RED);                                  // 上电2闪2滴
  41   1         delayms(500);
  42   1         BeefL(1,RED);
  43   1         delayms(500);
  44   1         
  45   1         LEDR_ON;
  46   1         LEDG_OFF;
  47   1         flash_boot();                                 //AT25参数启动检验提取
  48   1      
  49   1      
  50   1      
  51   1         UART0_Init();
  52   1         EA=1;
  53   1         ES0=1;
  54   1         delay(400);
  55   1         nres=0;
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 2   

  56   1         delayms(100);
  57   1         nres=1;
  58   1         ia442xinit();
  59   1         spirevtwobyte();
  60   1         spisendcommand(0x8288);                                   //电源管理 whole receive crystal on
  61   1         spisendcommand(0xca83);                                       //FIFO COMMAND
  62   1         
  63   1        
  64   1         
  65   1         if(DEBUG) Printf_String("\r\n[msg:]Copyright(c) SKEE LTD,.CO. 1996-2009");
  66   1         if(DEBUG) Printf_String("\r\n[msg:]EZradio SI4421(433Mhz) Running on C8051F310");
  67   1      
  68   1      
  69   1         for(nr=0;nr<sizeof(system_date);nr++)
  70   1         {
  71   2            if(DEBUG) Printf_Char(system_date[nr]);
  72   2         }
  73   1         delayms(300);
  74   1         for(nr=0;nr<sizeof(system_time);nr++)
  75   1         {
  76   2            if(DEBUG) Printf_Char(system_time[nr]);
  77   2         }
  78   1      
  79   1         delayms(100);
  80   1      
  81   1         memset(tagnr, 0, sizeof(tagnr));              //清空登记标签结构体
  82   1         memset(wiebuf_cout, 0, sizeof(wiebuf_cout));
  83   1         
  84   1         Init_AT25XXX(0x00);                           //初始化AT25xxx SPI eeprom
  85   1        
  86   1         PCA0L    = 0x00;
  87   1         PCA0CPL4 = 255;                               //32.1ms
  88   1         PCA0MD  |= 0x40;                                      //开启看门狗 
  89   1      
  90   1       
  91   1               
  92   1        while(1)
  93   1        {  
  94   2      
  95   2        
  96   2      /**********@task00@**********/                                                    
  97   2      /**倒计时数组片管理LED+BELL**/
  98   2      
  99   2                       if(GetSysTimer(0))                                          //0=LEDR  
 100   2               {
 101   3                  LEDR^=1;
 102   3                  SetSysTimer(0,500);                  //500MS LEDR闪  
 103   3               } 
 104   2                                         
 105   2                       if(GetSysTimer(1))                                              //1=LEDG
 106   2                       {                                                                               //关闭闪过的绿灯
 107   3                              LEDG_OFF;
 108   3                       }
 109   2      
 110   2                       if(GetSysTimer(2))                                              //2=BELL
 111   2                       {
 112   3                              BELL_OFF;                                                        //关闭响过的蜂鸣器
 113   3                       }
 114   2      
 115   2      
 116   2      
 117   2      
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 3   

 118   2      /**********@task01@**********/  
 119   2      /*****处理无线接收的信息*****/                                  
 120   2      
 121   2                       if(receive()) 
 122   2                       { 
 123   3                          Process_Frame();
 124   3                       }
 125   2      
 126   2      
 127   2      /**********@task02@**********/
 128   2      /********串口数据处理********/                   
 129   2      
 130   2                        event_word_copy=event_word;            //搜集时间片
 131   2      
 132   2                if(event_word_copy&event_uart_arrived)
 133   2                        {
 134   3                                EA=0;
 135   3                                event_word&= ~(event_uart_arrived);//消毁完成任务标记
 136   3                                EA=1;
 137   3                                process_uart();
 138   3                        }
 139   2      
 140   2                                
 141   2                                      
 142   2                       
 143   2      /**********@task03@**********/  
 144   2      /****每100ms轮询无线标签*****/                  
 145   2                        if(event_word_copy&event_time_100ms)
 146   2                        {   
 147   3                                EA=0;
 148   3                                event_word&= ~(event_time_100ms);
 149   3                                EA=1;
 150   3      
 151   3                                if(((TRIG==0)&&(TRIG_STATE==1)) ||(TRIG==1))    
 152   3                                {                                                                      //触发状态加触发或者非触发才询卡
 153   4                                                                                              
 154   4                                   SeekFrame(WCMD_NOR);            //普通寻卡
 155   4                       txregframe(FRAME_LEN);
 156   4                                }            
 157   3                        }
 158   2              
 159   2      /**********@task04@**********/ 
 160   2      /*****1s基准处理时间事件*****/                  
 161   2                        if(event_word_copy&event_time_1000ms)  
 162   2                        {
 163   3                                 EA=0;
 164   3                                 event_word&= ~(event_time_1000ms);
 165   3                                 EA=1;
 166   3                                
 167   3                                 for(nr=0;nr<10;nr++)                          //查询登记是否需要老化
 168   3                                 {
 169   4                          if((tagnr[nr].save_inactivity)&&(tagnr[nr].save_state!=0))
 170   4                                      {
 171   5                                          tagnr[nr].save_inactivity--;
 172   5                                              if(tagnr[nr].save_inactivity==0)
 173   5                                              {
 174   6                                                     tagnr[nr].save_state=0;   
 175   6                                                  }
 176   5                                      }
 177   4      
 178   4                                              if(tagnr[nr].save_inactivity==0)
 179   4                                              {
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 4   

 180   5                                                  tagnr[nr].save_state=0;     
 181   5                                              }
 182   4                                 }
 183   3      
 184   3                                 if(event_relay!=0)
 185   3                                 { 
 186   4                                   event_relay--;
 187   4                                         if(event_relay==0)
 188   4                                         {
 189   5                                           if(ONLY_READER)
 190   5                                               {
 191   6                                                  RELAY_IN =ON_1;                //继电器
 192   6                                                  RELAY_OUT=ON_1;
 193   6                                               }
 194   5                                               else
 195   5                                               {
 196   6                                                  RELAY_IN =OFF_0;                
 197   6                                                  RELAY_OUT=OFF_0;
 198   6                                               }
 199   5      
 200   5                                         }
 201   4                                 } 
 202   3                        }
 203   2      
 204   2                      
 205   2      
 206   2      /**********@task05@**********/
 207   2      /**处理接收的wiegand数据包***/                                   
 208   2      
 209   2                        if(event_word_copy&event_wie_arrived)
 210   2                        {
 211   3                                EA=0;
 212   3                                event_word&= ~(event_wie_arrived);
 213   3                                EA=1;
 214   3      
 215   3                                wie_str=0;                         //清wiegand脉冲标记
 216   3                                                                               //注意wie_cout半字节当一次处理
 217   3                                if(wie_cout==0)
 218   3                                {wie_cout++;}
 219   3                                for(nr=0;nr<wie_cout;nr++)
 220   3                                {   
 221   4                                  Printf_Char(wiebuf_cout[nr]);
 222   4                                }             
 223   3                            CLR_WIEBUF_COUT;
 224   3                        }
 225   2      
 226   2      /**********@task06@**********/  
 227   2      /****处理进出2路触发信号*****/                           
 228   2                if(TRIG_IN==0)
 229   2                        {
 230   3                          RELAY_TRIG_STATE=1;                              //当前进门
 231   3                              TRIG_STATE=1;
 232   3                              flg_io=0x01;
 233   3                        }
 234   2                        else if(TRIG_OUT==0)
 235   2                        {
 236   3                          RELAY_TRIG_STATE=0;                                  //当前出门
 237   3                              TRIG_STATE=1;
 238   3                              flg_io=0x00;
 239   3                        }
 240   2                        else
 241   2                        {
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 5   

 242   3                         ;
 243   3                        }
 244   2      /**********@task07@**********/  
 245   2      /**********@task08@**********/  
 246   2      /**********@task09@**********/  
 247   2      /**********@task0A@**********/  
 248   2      /**********@task0B@**********/  
 249   2      /**********@task0C@**********/
 250   2      /**********@task0D@**********/
 251   2      /**********@task0E@**********/
 252   2      /**********@task0F@**********/                                      
 253   2        }
 254   1      }
 255          
 256          
 257          
 258          /******************************************************************************
 259          ** 函数: PORT_Init ()
 260          ** 入参: 
 261          ** 返回: 
 262          ** 说明:
 263          ** PORT_Init
 264          ** Configure the Crossbar and GPIO ports.
 265          ** P0.4 - UART TX
 266          ** P0.5 - UART RX
 267          ** P3.3 - LED
 268          ******************************************************************************/
 269          void PORT_Init (void)
 270          {
 271   1         
 272   1         P0SKIP    = 0xcf;                                             //注意SPI没有配置成硬件,只是脚放在对应位置
 273   1         P1SKIP    = 0x03;                                             //配置P1.2 P1.3 两端块脉冲捕获
 274   1         XBR0      = 0x01;                             //使能 UART on P0.4(TX) and P0.5                    
 275   1         XBR1      = 0x42;
 276   1         P0MDOUT   = 0x1C;                             //使能 UTX 为推挽输出  p0.2 p0.3
 277   1        
 278   1         P3MDOUT  |= 0x06;                                             //P3.1 P3.2 继电器
 279   1      
 280   1      
 281   1         if(ONLY_READER)                                                               //只做读卡器时jdq不动作
 282   1         {
 283   2            RELAY_IN  =1;
 284   2            RELAY_OUT =1;
 285   2         }

⌨️ 快捷键说明

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