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