#include<lpc214x.h>
void timer_init();
void delay(unsigned int a);
void pll();
int main()
{
IODIR0|=0XFFFFFFFF; //port 0 is output
pll();
timer_init();
while(1)
{
IOSET0|=0xFFFFFFFF;
delay(1000); //1s delay
IOCLR0|=0XFFFFFFFF;
delay(1000); //1s delay
}
}
void delay(unsigned int a)
{
unsigned int s;
T0TCR=0X01; //enable timer
for(s=0;s<a;s++)
{
while(T0TC!=T0MR0); //wait until tc matches to match reg0
}
T0TCR=0X00; //stop the timer
}
void pll() //Fosc=12Mhz,CCLK=60Mhz,PCLK=60MHz
{
PLL0CON=0x01;
PLL0CFG=0x24;
PLL0FEED=0xaa;
PLL0FEED=0x55;
while(!(PLL0STAT&(1<<10)));
PLL0CON=0x03;
PLL0FEED=0xaa;
PLL0FEED=0x55;
VPBDIV=0x01;
}
void timer_init()
{
T0CTCR=0X00; //act as a timer
T0PR=0; //prescale reg value is 0
T0MR0=59999; //match reg0 value is 59999 i.e. { [(60Mhz) * (1 milli sec)]-1 }
T0MCR=0x02; //match on reset tc
T0TCR=0X02; //reset tc and pc
}