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

📄 timer.lst

📁 单片机控制RTL8019AS的程序,C语言编写,仿真通过.
💻 LST
字号:
C51 COMPILER V7.06   TIMER                                                                 10/09/2006 21:51:56 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE timer.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //-----------------------------------------------------------------------------
   2          // Net TIMER.C
   3          //
   4          // This module sets up the timer and handles the timer interrupt
   5          //-----------------------------------------------------------------------------
   6          #include <reg51.h>
   7          #include <net.h>
   8          #include <timer.h>
   9          
  10          
  11          extern UINT volatile event_word;
  12          extern ULONG idata initial_sequence_nr;
  13          
  14          sfr T2CON               = 0xc8;
  15          sbit cprl2              = T2CON^0;
  16          sbit ct2                = T2CON^1;
  17          sbit TR2                = T2CON^2;
  18          sbit exen2              = T2CON^3;
  19          sbit tclk               = T2CON^4;
  20          sbit rclk               = T2CON^5;
  21          sbit exf2               = T2CON^6;
  22          sbit TF2                = T2CON^7;
  23          
  24          sfr RCAP2H              = 0xcb;
  25          sfr RCAP2L              = 0xca;
  26          sfr TH2                 = 0xcd;
  27          sfr TL2                 = 0xcc;
  28          
  29          sfr CHPCON              = 0xbf;
  30          sfr CHPENR              = 0xf6;
  31          sfr SFRAL               = 0xc4;
  32          sfr SFRAH               = 0xc5;
  33          sfr SFRFD               = 0xc6;
  34          sfr SFRCN               = 0xc7;
  35          
  36          //--------------------------------------------------------------------------
  37          // Timer 2 interrupt service routing. Intr vector location is
  38          // address 0x002B. The timer generates an interrupt every 20 msec
  39          // It is set to auto reload so do not need to reload it.
  40          //--------------------------------------------------------------------------
  41          void timer2_interrupt(void) interrupt 5
  42          {
  43   1              static UINT count1 = 0;
  44   1              static UINT count2 = 0;
  45   1              
  46   1              TF2 = 0;                // Clear interrupt flag
  47   1      
  48   1              
  49   1              // Advance the initial sequence number
  50   1              initial_sequence_nr += 6250;
  51   1         // Keep it some distance from rolling over
  52   1         if (initial_sequence_nr & 0x10000000L) initial_sequence_nr = 1;
  53   1              
  54   1              count1++;
  55   1              // These events happens every 0.50 seconds, not simultaneously
C51 COMPILER V7.06   TIMER                                                                 10/09/2006 21:51:56 PAGE 2   

  56   1              if (count1 == 6) event_word |= EVENT_ARP_RETRANSMIT;
  57   1              
  58   1              if (count1 == 12) event_word |= EVENT_TCP_INACTIVITY;
  59   1                      
  60   1              if (count1 == 25)
  61   1              {
  62   2                      count1 = 0;
  63   2                      event_word |= EVENT_TCP_RETRANSMIT;
  64   2              }
  65   1              
  66   1              count2++;
  67   1              if (count2 == 3001)
  68   1              {
  69   2                      // This happens every 60.020 seconds, not simultaneous
  70   2                      // with above tasks
  71   2                      count2 = 0;
  72   2                      event_word |= EVENT_AGE_ARP_CACHE;
  73   2              }
  74   1      }
  75          
  76          
  77          
  78          
  79          
  80          //--------------------------------------------------------------------------
  81          // Setup Timer2 in mode 1 which is 16 bit auto reload
  82          // Intr rate = 32 MHz /(12 * (65536 - reload value))
  83          // For 20 msec reload value  = 0x2FAB
  84          //--------------------------------------------------------------------------
  85          void init_timer2(void)
  86          {
  87   1              T2CON = 0x00;
  88   1              RCAP2H = 0x2F;          // Reload value
  89   1              RCAP2L = 0xAB;
  90   1              TH2 = 0x2F;                             // Initial load value
  91   1              TL2 = 0xAB;
  92   1              TR2 = 1;                                        // Timer 2 run
  93   1      }
  94          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    180    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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