📄 timer.lst
字号:
C51 COMPILER V7.50 TIMER 12/14/2006 13:34:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN TIMER.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TIMER.C LARGE OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------------------------------
2 // Copyright (c) 2002 Jim Brady
3 // Do not use commercially without author's permission
4 // Last revised August 2002
5 // Net TIMER.C
6 //
7 // This module sets up the timer and handles the timer interrupt
8 //-----------------------------------------------------------------------------
9 #include "C8051f040.h"
10 #include "net.h"
11 #include "timer.h"
12
13
14 extern UINT volatile event_word;
15 extern ULONG idata initial_sequence_nr;
16
17
18 //--------------------------------------------------------------------------
19 // Timer 2 interrupt service routing. Intr vector location is
20 // address 0x002B. The timer generates an interrupt every 25 msec
21 // It is set to auto reload so do not need to reload it.
22 //--------------------------------------------------------------------------
23 void timer2_interrupt(void) interrupt 5
24 {
25 1 static UINT count1 = 0;
26 1 static UINT count2 = 0;
27 1
28 1 TF2 = 0; // Clear interrupt flag
29 1
30 1
31 1 // Advance the initial sequence number
32 1 initial_sequence_nr += 6250;
33 1 // Keep it some distance from rolling over
34 1 if (initial_sequence_nr & 0x10000000L) initial_sequence_nr = 1;
35 1
36 1 count1++;
37 1 // These events happens every 0.50 seconds, not simultaneously
38 1 if (count1 == 5) event_word |= EVENT_ARP_RETRANSMIT;
39 1
40 1 if (count1 == 10) event_word |= EVENT_TCP_INACTIVITY;
41 1
42 1 if (count1 == 15) event_word |= EVENT_READ_ANALOG;
43 1
44 1 if (count1 == 20)
45 1 {
46 2 count1 = 0;
47 2 event_word |= EVENT_TCP_RETRANSMIT;
48 2 }
49 1
50 1 count2++;
51 1 if (count2 == 2401)
52 1 {
53 2 count2 = 0;
54 2 event_word |= EVENT_AGE_ARP_CACHE;
55 2 }
C51 COMPILER V7.50 TIMER 12/14/2006 13:34:47 PAGE 2
56 1 }
57
58
59
60
61
62 //--------------------------------------------------------------------------
63 // 将定时器2设置为模式1自动重载
64 // rate = 22.1184 MHz /(12 * (65536 - reload value))
65 // 25 毫秒 reload value = 19456 = 0x4C00
66 //--------------------------------------------------------------------------
67 void init_timer2(void)
68 {
69 1 char SFRPAGE_SAVE = SFRPAGE;
70 1 SFRPAGE = TMR2_PAGE;
71 1 TMR2CN = 0x04;
72 1 RCAP2H = 0xBF;
73 1 TMR2H = 0xBF;
74 1 TMR2CF = 0X80;
75 1 SFRPAGE = SFRPAGE_SAVE;
76 1 }
77
78
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 245 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 4 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -