/*****************************************************************************
 *   adctest.c:  main C entry file for NXP LPC29xx Family Microprocessors
 *
 *   Copyright(C) 2007, NXP Semiconductor
 *   All rights reserved.
 *
 *   History
 *   2007.08.16  ver 1.00    Prelimnary version, first Release
 *
******************************************************************************/

#include "LPC29xx.h"                        /* LPC29xx definitions */
#include "type.h"
#include "target.h"


extern volatile DWORD timer_counter;

static void setled(int led, int state)
{
	switch(led) {
		case 3:
			if(state) {
				GPIO0_OR &= ~(1<<28);
			} else {
				GPIO0_OR |= (1<<28);
			}
			break;
		case 1:
			if(state) {
				GPIO3_OR &= ~(1<<0);
			} else {
				GPIO3_OR |= (1<<0);
			}
			break;
		case 2:
			if(state) {
				GPIO3_OR &= ~(1<<12);
			} else {
				GPIO3_OR |= (1<<12);
			}
			break;
	}
}

void Dly100us(int delayCycles)
{
	volatile int i;
	for( i = 0; i < 10 * 1000 * delayCycles; ++i);
}


/*****************************************************************************
**   Main Function  main()
******************************************************************************/
int main (void)
{
	int state;
	
	TargetResetInit();
	
	/* GPIO 3.0 and 3.13 are LED pins set to output */
	GPIO0_DR = (1<<28);
	GPIO3_DR = (1<<0)|(1<<12);
	SFSP0_28 = (1<<2);
	SFSP3_0 = (1<<2);
	SFSP3_13 = (1<<2);
	
	SFSP2_26 = (1<<2);
	SFSP2_27 = (1<<2);
	
	setled(1, 0);
	setled(2, 0);
	setled(3, 0);

	for(state = 0; ; ++state) {
		switch(state) {
		case 1:
			setled(1, 1);
			setled(2, 1);
			setled(3, 1);
			break;
		case 2:
			setled(1, 0);
			setled(2, 1);
			setled(3, 0);
			break;
		case 3:
			setled(1, 0);
			setled(2, 0);
			setled(3, 1);
			break;		
		default:
			state = 0;
			continue;
		}
	
		Dly100us(100);
	}
  //return 0;
}

/*****************************************************************************
**                            End Of File
*****************************************************************************/

