我用的是周工LPC2131开发板,下面程序不能仿真出正确的结果!<br />//==========================================================<br />//[文件] main.c<br />//[说明] 定时中断0 定时0.5s <br />//[作者] <br />//[时间] 2007/11/19<br />//[实验目的] 定时0功能应用 中断方式 <br />//==========================================================<br />#include "config.h"<br /><br /><br />#define BEEP 1<<7<br />//----------------------------------------------------------<br />//函数名称:IRQ_Timer0()<br />//函数功能:定时器0中断服务程序,取反led控制口电平<br />//入口参数:无<br />//出口参数:无<br />//----------------------------------------------------------<br />void __irq IRQ_Timer0(void)<br />{<br /> if((IO0SET&BEEP)==0) IO0SET = BEEP;<br /> else IO0CLR = BEEP;<br /> <br /> T0IR = 0x01;//清除中断0标志<br /> VICVectAddr = 0x00;//通知VIC中断处理结束<br />}//end<br />//----------------------------------------------------------<br />//主功能函数部分 <br />int main (void)<br />{// add user source code <br /> PINSEL1 = 0x00000000;<br /> IO0DIR = BEEP;<br /> <br /> IRQEnable();//IRQ中断使能<br /> <br /> //定时器0初始化<br /> T0TC = 0;//定时器0计数器清0<br /> T0PR = 0;//预分频寄存器为不分频<br /> T0MCR |= 0x00000003;//匹配控制寄存器设置 T0TC 复位 产生中断标志<br /> T0MR0 = Fpclk/2;//设置0.5s定时(Fpclk = 11.0592MHz 及1s震荡11.0592M次)<br /> T0TCR = 0x01;//启动定时器<br /> //定时器0初始化结束<br /> //设置定时器0中断IRQ<br /> VICIntSelect = 0x00;<br /> VICVectCntl0 = 0x20 | 0x40;<br /> VICVectAddr0 = (uint32)IRQ_Timer0;<br /> VICIntEnable = 1<<0x04;<br /> //定时器0中断IRQ设置结束 <br /> while(1);<br /> return 0;<br />}//end main<br />//End Of File |
|