📄 timer.lst
字号:
C51 COMPILER V7.20 TIMER 03/07/2006 14:49:13 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN Timer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Timer.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 //-----------------------------------------------------------------------------
2 // Net TIMER.C
3 //
4 // This module sets up the timer and handles the timer interrupt
5 //-----------------------------------------------------------------------------
6 #include "reg52.h"
7 #include "net.h"
8 #include "timer.h"
9
10 extern unsigned int volatile event_word;
11 extern ULONG idata initial_sequence_nr;
12 //--------------------------------------------------------------------------
13 // Timer 2 interrupt service routing. Intr vector location is
14 // address 0x002B. The timer generates an interrupt every 25 msec
15 // It is set to auto reload so do not need to reload it.
16 //--------------------------------------------------------------------------
17
18 void timer2_interrupt(void) interrupt 5
19 {
20 1 static UCHAR count1 = 0;
21 1 static UINT count2 = 0;
22 1
23 1 TF2 = 0; // Clear interrupt flag
24 1
25 1 // Advance the initial sequence number
26 1 initial_sequence_nr += 6250;
27 1 // Keep it some distance from rolling over
28 1 if (initial_sequence_nr & 0x10000000L) initial_sequence_nr = 1;
29 1 // Keep it some distance from rolling over
30 1 // if (initial_sequence_nr & 0x10000000L) initial_sequence_nr = 1;
31 1
32 1 count1++;
33 1 // These events happens every 0.5 seconds, not simultaneously
34 1 if (count1 == 5) event_word |= EVENT_ARP_RETRANSMIT;
35 1 if (count1 == 8) event_word |= EVENT_TCP_INACTIVITY;
36 1 if (count1 == 10)event_word |= EVENT_RS232_ARRIVED;
37 1 if (count1 == 20)
38 1 {
39 2 count1 = 0;
40 2 event_word |= EVENT_TCP_RETRANSMIT;
41 2 LED = ~LED;//350ms
42 2 }
43 1
44 1 count2++;
45 1 if (count2 == 1714)
46 1 {
47 2 // This happens every 60.025 seconds, not simultaneous
48 2 // with above tasks
49 2 count2 = 0;
50 2 event_word |= EVENT_AGE_ARP_CACHE;
51 2 }
52 1 }
53 //--------------------------------------------------------------------------
54 // Setup Timer2 in mode 1 which is 16 bit auto reload
55 // Intr rate = 22.1184 MHz /(12 * (65536 - reload value))
C51 COMPILER V7.20 TIMER 03/07/2006 14:49:13 PAGE 2
56 // For 25 msec reload value = 19456 = 0x4C00
57 //12MHz -->reload value =65536-t(ms)*cystal/12=65536-25=
58 //--------------------------------------------------------------------------
59 void init_timer2(void)
60 {
61 1 T2CON = 0x00;
62 1 RCAP2H = 0x04; // Reload value 35ms
63 1 RCAP2L = 0x00;
64 1 TH2 = 0x04; // Initial load value
65 1 TL2 = 0x00;
66 1 TR2 = 1; // Timer 2 run
67 1 PT2 = 0; //优先级低
68 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 176 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -