www.pudn.com > tcpip5151.rar > Timer.c
//----------------------------------------------------------------------------- // Net TIMER.C // // This module sets up the timer and handles the timer interrupt //----------------------------------------------------------------------------- #include#include "net.h" #include "timer.h" extern UINT volatile event_word; extern ULONG idata initial_sequence_nr; //-------------------------------------------------------------------------- // Timer 2 interrupt service routing. Intr vector location is // address 0x002B. The timer generates an interrupt every 25 msec // It is set to auto reload so do not need to reload it. //-------------------------------------------------------------------------- void timer1_interrupt(void) interrupt 3 { static UINT count1 = 0; static UINT count2 = 0; TH1=0X4C; TL1=0; // Advance the initial sequence number initial_sequence_nr += 6250; // Keep it some distance from rolling over if (initial_sequence_nr & 0x10000000L) initial_sequence_nr = 1; count1++; // These events happens every 0.50 seconds, not simultaneously if (count1 == 5) event_word |= EVENT_ARP_RETRANSMIT; if (count1 == 10) event_word |= EVENT_TCP_INACTIVITY; if (count1 == 15) event_word |= EVENT_READ_ANALOG; if (count1 == 20) { count1 = 0; event_word |= EVENT_TCP_RETRANSMIT; } count2++; if (count2 == 2401) { // This happens every 60.025 seconds, not simultaneous // with above tasks count2 = 0; event_word |= EVENT_AGE_ARP_CACHE; } }