我正好用了lpc2136的t0中断,下面是实际程序,500毫秒中断一次(开发环境为,Keil uVision3,编译器是Keil自代的realview3.0 ) 希望能对你有所帮助<br /><br />__irq void tc0 (void) <br />{ <br /><br />//----------------------arp<br /><br /> ipsys.linktime++; //连接状态改变定时器,大于10秒钟后将从新发送arp<br /><br /> iplinktimecheck++; //定时检查ip连接状态<br /><br /> //hfcsys.time++; //tarp发送定时标志<br /><br /> sysdis.ipchangetime++; //ip地址该变变后发送本机地址探测延时标志<br /><br /> timemodelsendflag++; //定时发送获取产品插槽设备信息<br /><br /> write_time_eeprom++; //写eeprom1秒定时标志<br /><br /> sysdis.iptimesed++; // 定时发送ip冲突信息<br /><br /> iptimereset++; //定时复DM9000AE<br /><br />//---------------------- <br />// WDFEED = 0xAA; // 看门狗复位<br /> //WDFEED = 0x55; // 看门狗复位<br /> T0IR = 1; // Clear interrupt flag <br /> VICVectAddr = 0; // Acknowledge Interrupt <br /><br />}<br /><br /><br />/* Setup the Timer Counter 0 Interrupt */<br /><br /><br />void init_timer (void) { <br /> T0MR0 = 500; //1:为1ms (500为500ms) <br /> T0PR = 60000; //预分频器 时钟60M<br /> T0MCR = 3; // Interrupt and Reset on MR0 <br /> T0TCR = 1; // Timer0 Enable <br /> VICVectAddr0 = (unsigned long)tc0; // set interrupt vector in 0 <br /> VICVectCntl0 = 0x20 | 4; //中断优先级分配<br /> VICIntEnable =0x00000010; //Enable Timer0 Interrupt <br />}
|