LPC2148芯片,用定时器0定时1S(中断方式)实现流水灯变化
但是一直得不到想要的结果,运行的结果LED全亮;程序如下,大家帮忙看一下哪出问题了
#include<LPC214x.h>
#define uint32 unsigned int
#define uchar8 unsigned char
void tc0_isr (void) __irq
{
/* 流水灯*/
uchar8 i;
i=0x01;
while(1)
{
IO1PIN=((IO1PIN&0XFF00FFFF)+~i*0x10000);
i<<=1;
if(!i)
i=0x01;
}
T0IR=1; //清除中断标志
VICVectAddr=0x00; //通知VIC中断处理结束
}
int main()
{
IO1DIR=IO1DIR|0x00FF0000;
IO1PIN=IO1PIN|0x00FF0000;
/* 定时器0定时1s */
T0PR=11999; //时钟不分频
T0MCR=0X03; //设置TOMRO匹配后复位TOTC,并产生中断标志
T0MR0=1001; //定时1s
T0TCR=0X01; //启动定时器
/* 设置定时器0中断IRQ */
VICIntSelect=0x00; //所有中断通道设置为IRQ中断
VICVectCntl0=0x20|0x04; //设置定时器0中断通道分配最高优先级
VICVectAddr0=(uint32)tc0_isr; //设置中断服务程序地址
VICIntEnable=1<<0x04; //使能定时器0中断
while(1);
} |