//************************************************************************************
//**  
//**  File name:     C:\Users\T3CKN3SS\Documents\flowcode 5\Multi Loop pc case mod dual RGB broken.c
//**  Title:         
//**  Description:   
//**  
//**  Generated by:  Flowcode v5.2.0.0
//**  Date:          Wednesday, June 01, 2016 11:38:09
//**  Licence:       Professional
//**  Registered to: T3CKN3SS
//**  Licence key:   ******
//**  
//**  
//**  http://www.matrixmultimedia.com
//**  
//************************************************************************************


#define MX_PIC

#define MX_USES_UINT8 1
#define MX_USES_SINT16 0
#define MX_USES_CHAR 0
#define MX_USES_FLOAT 0
#define MX_USES_SINT32 0
#define MX_USES_BOOL 1
#define MX_USES_UINT16 0
#define MX_USES_UINT32 0
//Defines for microcontroller
#define P16F676
#define FC_CAL_PIC
#define MX_ADC
#define MX_ADC_TYPE_3
#define MX_ADC_BITS_10
#define MX_EE
#define MX_EE_TYPE1
#define MX_EE_SIZE 128

//Functions
#define MX_CLK_SPEED 19660800
#ifdef _BOOSTC
#include <system.h>
#endif
#ifdef HI_TECH_C
#include <pic.h>
#endif

//Configuration data

//Internal functions
#include "D:\Program Files\flowcode\FCD\internals.c"

//Macro function declarations
void FCM_Start_List();
void FCM_RGB2();
void FCM_RGB1();
void FCM_Mode();


//Variable declarations
#define FCV_FALSE (0)
#define FCV_TRUE (1)
MX_UINT8 FCV_V_BLUE = (0x0);
MX_UINT8 FCV_V_BLUE1 = (0x0);
MX_UINT8 FCV_V_RED = (0x0);
MX_UINT8 FCV_V_GREEN1 = (0x0);
MX_UINT8 FCV_V_RED1 = (0x0);
MX_UINT8 FCV_V_GREEN = (0x0);




//LEDRGB(0): //Defines:

/**** Macro Substitutions ****
a = Unique Reference
b = LED R Port Letter
c = LED R Pin Number
d = LED G Port Letter
e = LED G Pin Number
f = LED B Port Letter
g = LED B Pin Number
h = LED Active Polarity
i = LED Bit Depth (1-8) default 6
******************************/

#define LEDRGB_2_LED_PORT_R	portc
#define LEDRGB_2_LED_TRIS_R	trisc
#define LEDRGB_2_LED_PIN_R	5
#define LEDRGB_2_LED_PORT_G	portc
#define LEDRGB_2_LED_TRIS_G	trisc
#define LEDRGB_2_LED_PIN_G	4
#define LEDRGB_2_LED_PORT_B	portc
#define LEDRGB_2_LED_TRIS_B	trisc
#define LEDRGB_2_LED_PIN_B	3
#define LEDRGB_2_LED_POLE		1
#define LEDRGB_2_LED_BITD		6//%i

#define LEDRGB_2_LED_SHIFT 		8 - LEDRGB_2_LED_BITD
#define LEDRGB_2_LED_ROLLOVER		0xFF >> LEDRGB_2_LED_SHIFT

MX_UINT8 LEDRGB_2_led_en = 0;
MX_UINT8 LEDRGB_2_led_tick = 0;
MX_UINT8 LEDRGB_2_led_r = 0;
MX_UINT8 LEDRGB_2_led_b = 0;
MX_UINT8 LEDRGB_2_led_g = 0;




//LEDRGB(0): //Macro function declarations

void FCD_LEDRGB0_Enable();
void FCD_LEDRGB0_Disable();
void FCD_LEDRGB0_SetColor(MX_UINT8 red, MX_UINT8 green, MX_UINT8 blue);
void FCD_LEDRGB0_Tick();


//ADC(0): //Defines:

/**** Macro Substitutions ****
a = Unique Reference
b = Which ADC Channel
c = Acquisition time
d = Conversion Speed
e = VRef+ Option
f = VRef Voltage x 0.01V
******************************/

//Common Defines

#define ADC_3_MX_ADC_CHANNEL	3
#define ADC_3_MX_ADC_ACTIME	40
#define ADC_3_MX_ADC_CONVSP	3
#define ADC_3_MX_ADC_VREFOP	0
#define ADC_3_MX_ADC_VREFVOL	500

#ifndef MX_ADC_CHANNEL_3
 #define MX_ADC_CHANNEL_3			//Inform CAL ADC channel 3 is now in use.
#endif

#ifndef MX_ADC_REF					//Inform CAL ADC peripheral is now in use
 #define MX_ADC_REF
#endif

extern void FC_CAL_Enable_ADC (MX_UINT8 Channel, MX_UINT8 Conv_Speed, MX_UINT8 Vref, MX_UINT8 T_Charge);
extern MX_UINT16 FC_CAL_Sample_ADC (MX_UINT8 Sample_Mode);
extern void FC_CAL_Disable_ADC (void);




//ADC(0): //Macro function declarations

void FCD_ADC0_SampleADC();
MX_UINT8 FCD_ADC0_ReadAsByte();
MX_UINT16 FCD_ADC0_ReadAsInt();
MX_FLOAT FCD_ADC0_ReadAsVoltage();
void FCD_ADC0_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE);
void FCD_ADC0_ADC_RAW_Configure_Channel();
MX_UINT8 FCD_ADC0_ADC_RAW_Sample_Channel_Byte();
MX_UINT16 FCD_ADC0_ADC_RAW_Sample_Channel_Int();
MX_UINT8 FCD_ADC0_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs);
MX_UINT16 FCD_ADC0_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs);
void FCD_ADC0_ADC_RAW_Disable_Channel();


//LEDRGB(1): //Defines:

/**** Macro Substitutions ****
a = Unique Reference
b = LED R Port Letter
c = LED R Pin Number
d = LED G Port Letter
e = LED G Pin Number
f = LED B Port Letter
g = LED B Pin Number
h = LED Active Polarity
i = LED Bit Depth (1-8) default 6
******************************/

#define LEDRGB_8_LED_PORT_R	portc
#define LEDRGB_8_LED_TRIS_R	trisc
#define LEDRGB_8_LED_PIN_R	0
#define LEDRGB_8_LED_PORT_G	portc
#define LEDRGB_8_LED_TRIS_G	trisc
#define LEDRGB_8_LED_PIN_G	1
#define LEDRGB_8_LED_PORT_B	portc
#define LEDRGB_8_LED_TRIS_B	trisc
#define LEDRGB_8_LED_PIN_B	2
#define LEDRGB_8_LED_POLE		1
#define LEDRGB_8_LED_BITD		6//%i

#define LEDRGB_8_LED_SHIFT 		8 - LEDRGB_8_LED_BITD
#define LEDRGB_8_LED_ROLLOVER		0xFF >> LEDRGB_8_LED_SHIFT

MX_UINT8 LEDRGB_8_led_en = 0;
MX_UINT8 LEDRGB_8_led_tick = 0;
MX_UINT8 LEDRGB_8_led_r = 0;
MX_UINT8 LEDRGB_8_led_b = 0;
MX_UINT8 LEDRGB_8_led_g = 0;




//LEDRGB(1): //Macro function declarations

void FCD_LEDRGB1_Enable();
void FCD_LEDRGB1_Disable();
void FCD_LEDRGB1_SetColor(MX_UINT8 red, MX_UINT8 green, MX_UINT8 blue);
void FCD_LEDRGB1_Tick();


//EEPROM(0): //Defines:

/**** Macro Substitutions ****
Component has no substitutions
******************************/

#ifndef MX_EEPROM_REF
	#define MX_EEPROM_REF

	#ifdef FC_CAL_PIC16BIT
		extern MX_UINT16 FC_CAL_EE_Read (MX_UINT16 Address);
		extern void FC_CAL_EE_Write (MX_UINT16 Address, MX_UINT16 Data);
	#else
		extern MX_UINT8 FC_CAL_EE_Read (MX_UINT16 Address);
		extern void FC_CAL_EE_Write (MX_UINT16 Address, MX_UINT8 Data);
	#endif
#endif




//EEPROM(0): //Macro function declarations

MX_UINT16 FCD_EEPROM0_EEPROMRead(MX_UINT16 addr);
void FCD_EEPROM0_WriteEEPROM(MX_UINT16 addr, MX_UINT16 data);



//LEDRGB(0): //Macro implementations


void FCD_LEDRGB0_Enable()
{
	
		LEDRGB_2_led_en = 1;

		#if (LEDRGB_2_LED_POLE == 0)

			FC_CAL_Bit_Low_DDR( LEDRGB_2_LED_PORT_R, LEDRGB_2_LED_TRIS_R, LEDRGB_2_LED_PIN_R );
			FC_CAL_Bit_Low_DDR( LEDRGB_2_LED_PORT_G, LEDRGB_2_LED_TRIS_R, LEDRGB_2_LED_PIN_G );
			FC_CAL_Bit_Low_DDR( LEDRGB_2_LED_PORT_B, LEDRGB_2_LED_TRIS_R, LEDRGB_2_LED_PIN_B );

		#else

			FC_CAL_Bit_High_DDR( LEDRGB_2_LED_PORT_R, LEDRGB_2_LED_TRIS_R, LEDRGB_2_LED_PIN_R );
			FC_CAL_Bit_High_DDR( LEDRGB_2_LED_PORT_G, LEDRGB_2_LED_TRIS_G, LEDRGB_2_LED_PIN_G );
			FC_CAL_Bit_High_DDR( LEDRGB_2_LED_PORT_B, LEDRGB_2_LED_TRIS_B, LEDRGB_2_LED_PIN_B );

		#endif

}

void FCD_LEDRGB0_Disable()
{
	
		LEDRGB_2_led_en = 0;

		FC_CAL_Bit_In_DDR ( LEDRGB_2_LED_PORT_R, LEDRGB_2_LED_TRIS_R, LEDRGB_2_LED_PIN_R );
		FC_CAL_Bit_In_DDR ( LEDRGB_2_LED_PORT_G, LEDRGB_2_LED_TRIS_G, LEDRGB_2_LED_PIN_G );
		FC_CAL_Bit_In_DDR ( LEDRGB_2_LED_PORT_B, LEDRGB_2_LED_TRIS_B, LEDRGB_2_LED_PIN_B );

}

void FCD_LEDRGB0_SetColor(MX_UINT8 red, MX_UINT8 green, MX_UINT8 blue)
{
	
		LEDRGB_2_led_r = red >> LEDRGB_2_LED_SHIFT;
		LEDRGB_2_led_g = green >> LEDRGB_2_LED_SHIFT;
		LEDRGB_2_led_b = blue >> LEDRGB_2_LED_SHIFT;

}

void FCD_LEDRGB0_Tick()
{
	
		if ( LEDRGB_2_led_en )
		{
			if (LEDRGB_2_led_tick == 0)
				LEDRGB_2_led_tick = LEDRGB_2_LED_ROLLOVER;
			else
			LEDRGB_2_led_tick--;

			if (LEDRGB_2_led_tick < LEDRGB_2_led_r)
			{
				#if (LEDRGB_2_LED_POLE == 0)
					FC_CAL_Bit_High( LEDRGB_2_LED_PORT_R , LEDRGB_2_LED_PIN_R );
				#else
					FC_CAL_Bit_Low( LEDRGB_2_LED_PORT_R , LEDRGB_2_LED_PIN_R );
				#endif
			}
			else
			{
				#if (LEDRGB_2_LED_POLE == 0)
					FC_CAL_Bit_Low( LEDRGB_2_LED_PORT_R , LEDRGB_2_LED_PIN_R );
				#else
					FC_CAL_Bit_High( LEDRGB_2_LED_PORT_R , LEDRGB_2_LED_PIN_R );
				#endif
			}

			if (LEDRGB_2_led_tick < LEDRGB_2_led_b)
			{
				#if (LEDRGB_2_LED_POLE == 0)
					FC_CAL_Bit_High( LEDRGB_2_LED_PORT_B , LEDRGB_2_LED_PIN_B );
				#else
					FC_CAL_Bit_Low( LEDRGB_2_LED_PORT_B , LEDRGB_2_LED_PIN_B );
				#endif
			}
			else
			{
				#if (LEDRGB_2_LED_POLE == 0)
					FC_CAL_Bit_Low( LEDRGB_2_LED_PORT_B , LEDRGB_2_LED_PIN_B );
				#else
					FC_CAL_Bit_High( LEDRGB_2_LED_PORT_B , LEDRGB_2_LED_PIN_B );
				#endif
			}

			if (LEDRGB_2_led_tick < LEDRGB_2_led_g)
			{
				#if (LEDRGB_2_LED_POLE == 0)
					FC_CAL_Bit_High( LEDRGB_2_LED_PORT_G , LEDRGB_2_LED_PIN_G );
				#else
					FC_CAL_Bit_Low( LEDRGB_2_LED_PORT_G , LEDRGB_2_LED_PIN_G );
				#endif
			}
			else
			{
				#if (LEDRGB_2_LED_POLE == 0)
					FC_CAL_Bit_Low( LEDRGB_2_LED_PORT_G , LEDRGB_2_LED_PIN_G );
				#else
					FC_CAL_Bit_High( LEDRGB_2_LED_PORT_G , LEDRGB_2_LED_PIN_G );
				#endif
			}
		}

}



//ADC(0): //Macro implementations


void FCD_ADC0_SampleADC()
{
	
	    //unused

}

MX_UINT8 FCD_ADC0_ReadAsByte()
{
	
		MX_UINT8 retVal;

		//Configure & Enable ADC Channel
		FC_CAL_Enable_ADC ( ADC_3_MX_ADC_CHANNEL , ADC_3_MX_ADC_CONVSP , ADC_3_MX_ADC_VREFOP , ADC_3_MX_ADC_ACTIME );

		retVal = FC_CAL_Sample_ADC( 0 );				//Perform Sample - Return as byte

		FC_CAL_Disable_ADC ();

		return (retVal);

}

MX_UINT16 FCD_ADC0_ReadAsInt()
{
	
		MX_UINT16 retVal;

		//Configure & Enable ADC Channel
		FC_CAL_Enable_ADC ( ADC_3_MX_ADC_CHANNEL , ADC_3_MX_ADC_CONVSP , ADC_3_MX_ADC_VREFOP , ADC_3_MX_ADC_ACTIME );

		retVal = FC_CAL_Sample_ADC( 1 );				//Perform Sample - Return as MX_UINT16

		FC_CAL_Disable_ADC ();

		return (retVal);

}

MX_FLOAT FCD_ADC0_ReadAsVoltage()
{
	
		MX_UINT16 iSample;
		MX_FLOAT fSample, fVoltage, fVperDiv;

		//Configure & Enable ADC Channel
		FC_CAL_Enable_ADC ( ADC_3_MX_ADC_CHANNEL , ADC_3_MX_ADC_CONVSP , ADC_3_MX_ADC_VREFOP , ADC_3_MX_ADC_ACTIME );

	  #ifdef MX_ADC_BITS_8
		iSample = FC_CAL_Sample_ADC( 0 );								//Perform Sample - Return as byte
	  #else
		iSample = FC_CAL_Sample_ADC( 1 );								//Perform Sample - Return as MX_UINT16
	  #endif

	  	FC_CAL_Disable_ADC ();											//Switch off ADC peripheral
		fVoltage = flt_fromi( ADC_3_MX_ADC_VREFVOL );						//Convert reference voltage count to floating point (0 - 500 x 10mV)
		fVoltage = flt_mul(fVoltage, 0.01);								//Convert reference voltage count to actual voltage (0 - 5)

	  #ifdef MX_ADC_BITS_8
		fVperDiv = flt_mul(fVoltage, 0.00390625);						//Convert actual voltage to voltage per division (VRef / 256)
	  #endif
	  #ifdef MX_ADC_BITS_10
		fVperDiv = flt_mul(fVoltage, 0.000976);							//Convert actual voltage to voltage per division (VRef / 1024)
	  #endif
	  #ifdef MX_ADC_BITS_12
		fVperDiv = flt_mul(fVoltage, 0.00024414);						//Convert actual voltage to voltage per division (VRef / 4096)
	  #endif

		fSample = flt_fromi(iSample);									//Convert to floating point variable
		fVoltage = flt_mul(fSample, fVperDiv);							//Calculate floating point voltage

		return (fVoltage);

}

void FCD_ADC0_ReadAsString(MX_CHAR* FCR_RETVAL, MX_UINT8 FCR_RETVAL_SIZE)
{
	
		MX_FLOAT fVoltage;

		fVoltage = FCD_ADC0_ReadAsVoltage();
		FCI_FLOAT_TO_STRING(fVoltage, 2, FCR_RETVAL, FCR_RETVAL_SIZE);	//Convert to String

}

void FCD_ADC0_ADC_RAW_Configure_Channel()
{
	
		//Configure & Enable ADC Channel
		FC_CAL_Enable_ADC ( ADC_3_MX_ADC_CHANNEL , ADC_3_MX_ADC_CONVSP , ADC_3_MX_ADC_VREFOP , ADC_3_MX_ADC_ACTIME );

}

MX_UINT8 FCD_ADC0_ADC_RAW_Sample_Channel_Byte()
{
	
		return FC_CAL_Sample_ADC( 0 );									//Perform Sample - Return as byte

}

MX_UINT16 FCD_ADC0_ADC_RAW_Sample_Channel_Int()
{
	
		return FC_CAL_Sample_ADC( 1 );									//Perform Sample - Return as MX_UINT16

}

MX_UINT8 FCD_ADC0_ADC_RAW_Average_Channel_Byte(MX_UINT8 NumSamples, MX_UINT8 DelayUs)
{
	
		MX_UINT32 average = 0;
		MX_UINT8 count;

		for (count=0; count<NumSamples; count++)
		{
			average = average + FC_CAL_Sample_ADC( 0 );					//Perform Sample - Return as byte - add to average

			if (DelayUs)
				delay_us(DelayUs);										//If delay is not 0 then pause between samples
		}
		average = average / count;

		return (average & 0xFF);										//Return average as byte

}

MX_UINT16 FCD_ADC0_ADC_RAW_Average_Channel_Int(MX_UINT8 NumSamples, MX_UINT8 DelayUs)
{
	
		MX_UINT32 average = 0;
		MX_UINT8 count;

		for (count=0; count<NumSamples; count++)
		{
			average = average + FC_CAL_Sample_ADC( 1 );					//Perform Sample - Return as MX_UINT16 - add to average

			if (DelayUs)
				delay_us(DelayUs);										//If delay is not 0 then pause between samples
		}
		average = average / count;

		return (average & 0x1FFF);										//Return average as MX_SINT16

}

void FCD_ADC0_ADC_RAW_Disable_Channel()
{
	
		FC_CAL_Disable_ADC ();											//Disable ADC Channel

}



//LEDRGB(1): //Macro implementations


void FCD_LEDRGB1_Enable()
{
	
		LEDRGB_8_led_en = 1;

		#if (LEDRGB_8_LED_POLE == 0)

			FC_CAL_Bit_Low_DDR( LEDRGB_8_LED_PORT_R, LEDRGB_8_LED_TRIS_R, LEDRGB_8_LED_PIN_R );
			FC_CAL_Bit_Low_DDR( LEDRGB_8_LED_PORT_G, LEDRGB_8_LED_TRIS_R, LEDRGB_8_LED_PIN_G );
			FC_CAL_Bit_Low_DDR( LEDRGB_8_LED_PORT_B, LEDRGB_8_LED_TRIS_R, LEDRGB_8_LED_PIN_B );

		#else

			FC_CAL_Bit_High_DDR( LEDRGB_8_LED_PORT_R, LEDRGB_8_LED_TRIS_R, LEDRGB_8_LED_PIN_R );
			FC_CAL_Bit_High_DDR( LEDRGB_8_LED_PORT_G, LEDRGB_8_LED_TRIS_G, LEDRGB_8_LED_PIN_G );
			FC_CAL_Bit_High_DDR( LEDRGB_8_LED_PORT_B, LEDRGB_8_LED_TRIS_B, LEDRGB_8_LED_PIN_B );

		#endif

}

void FCD_LEDRGB1_Disable()
{
	
		LEDRGB_8_led_en = 0;

		FC_CAL_Bit_In_DDR ( LEDRGB_8_LED_PORT_R, LEDRGB_8_LED_TRIS_R, LEDRGB_8_LED_PIN_R );
		FC_CAL_Bit_In_DDR ( LEDRGB_8_LED_PORT_G, LEDRGB_8_LED_TRIS_G, LEDRGB_8_LED_PIN_G );
		FC_CAL_Bit_In_DDR ( LEDRGB_8_LED_PORT_B, LEDRGB_8_LED_TRIS_B, LEDRGB_8_LED_PIN_B );

}

void FCD_LEDRGB1_SetColor(MX_UINT8 red, MX_UINT8 green, MX_UINT8 blue)
{
	
		LEDRGB_8_led_r = red >> LEDRGB_8_LED_SHIFT;
		LEDRGB_8_led_g = green >> LEDRGB_8_LED_SHIFT;
		LEDRGB_8_led_b = blue >> LEDRGB_8_LED_SHIFT;

}

void FCD_LEDRGB1_Tick()
{
	
		if ( LEDRGB_8_led_en )
		{
			if (LEDRGB_8_led_tick == 0)
				LEDRGB_8_led_tick = LEDRGB_8_LED_ROLLOVER;
			else
			LEDRGB_8_led_tick--;

			if (LEDRGB_8_led_tick < LEDRGB_8_led_r)
			{
				#if (LEDRGB_8_LED_POLE == 0)
					FC_CAL_Bit_High( LEDRGB_8_LED_PORT_R , LEDRGB_8_LED_PIN_R );
				#else
					FC_CAL_Bit_Low( LEDRGB_8_LED_PORT_R , LEDRGB_8_LED_PIN_R );
				#endif
			}
			else
			{
				#if (LEDRGB_8_LED_POLE == 0)
					FC_CAL_Bit_Low( LEDRGB_8_LED_PORT_R , LEDRGB_8_LED_PIN_R );
				#else
					FC_CAL_Bit_High( LEDRGB_8_LED_PORT_R , LEDRGB_8_LED_PIN_R );
				#endif
			}

			if (LEDRGB_8_led_tick < LEDRGB_8_led_b)
			{
				#if (LEDRGB_8_LED_POLE == 0)
					FC_CAL_Bit_High( LEDRGB_8_LED_PORT_B , LEDRGB_8_LED_PIN_B );
				#else
					FC_CAL_Bit_Low( LEDRGB_8_LED_PORT_B , LEDRGB_8_LED_PIN_B );
				#endif
			}
			else
			{
				#if (LEDRGB_8_LED_POLE == 0)
					FC_CAL_Bit_Low( LEDRGB_8_LED_PORT_B , LEDRGB_8_LED_PIN_B );
				#else
					FC_CAL_Bit_High( LEDRGB_8_LED_PORT_B , LEDRGB_8_LED_PIN_B );
				#endif
			}

			if (LEDRGB_8_led_tick < LEDRGB_8_led_g)
			{
				#if (LEDRGB_8_LED_POLE == 0)
					FC_CAL_Bit_High( LEDRGB_8_LED_PORT_G , LEDRGB_8_LED_PIN_G );
				#else
					FC_CAL_Bit_Low( LEDRGB_8_LED_PORT_G , LEDRGB_8_LED_PIN_G );
				#endif
			}
			else
			{
				#if (LEDRGB_8_LED_POLE == 0)
					FC_CAL_Bit_Low( LEDRGB_8_LED_PORT_G , LEDRGB_8_LED_PIN_G );
				#else
					FC_CAL_Bit_High( LEDRGB_8_LED_PORT_G , LEDRGB_8_LED_PIN_G );
				#endif
			}
		}

}



//EEPROM(0): //Macro implementations


MX_UINT16 FCD_EEPROM0_EEPROMRead(MX_UINT16 addr)
{
	
		return (FC_CAL_EE_Read (addr));

}

void FCD_EEPROM0_WriteEEPROM(MX_UINT16 addr, MX_UINT16 data)
{
	
		FC_CAL_EE_Write (addr, data);

}

#include "D:\Program Files\flowcode\CAL\includes.c"

//Macro implementations

//Starting funtions

void FCM_Start_List()
{

	//Call Component Macro
	//Call Component Macro: Disable()
	FCD_LEDRGB1_Disable();

	//Call Component Macro
	//Call Component Macro: Disable()
	FCD_LEDRGB0_Disable();

	//Delay
	//Delay: 20 ms
	delay_ms(20);

	//Call Component Macro
	//Call Component Macro: Enable()
	FCD_LEDRGB1_Enable();

	//Call Component Macro
	//Call Component Macro: Enable()
	FCD_LEDRGB0_Enable();

	//Call Component Macro
	//Call Component Macro: SetColor(0, 0, 0)
	FCD_LEDRGB1_SetColor(0, 0, 0);

	//Call Component Macro
	//Call Component Macro: V_Red=Read(0)
	FCV_V_RED = FCD_EEPROM0_EEPROMRead(0);

	//Call Component Macro
	//Call Component Macro: V_Green=Read(1)
	FCV_V_GREEN = FCD_EEPROM0_EEPROMRead(1);

	//Call Component Macro
	//Call Component Macro: V_Blue=Read(2)
	FCV_V_BLUE = FCD_EEPROM0_EEPROMRead(2);

	//Call Component Macro
	//Call Component Macro: V_Blue1=Read(3)
	FCV_V_BLUE1 = FCD_EEPROM0_EEPROMRead(3);

	//Call Component Macro
	//Call Component Macro: V_Green1=Read(4)
	FCV_V_GREEN1 = FCD_EEPROM0_EEPROMRead(4);

	//Call Component Macro
	//Call Component Macro: V_Red1=Read(5)
	FCV_V_RED1 = FCD_EEPROM0_EEPROMRead(5);

	//Call Component Macro
	//Call Component Macro: SetColor(0, 0, 0)
	FCD_LEDRGB0_SetColor(0, 0, 0);

	//Call Component Macro
	//Call Component Macro: SetColor(V_Red, V_Green, V_Blue)
	FCD_LEDRGB0_SetColor(FCV_V_RED, FCV_V_GREEN, FCV_V_BLUE);

	//Call Component Macro
	//Call Component Macro: SetColor(V_Red1, V_Green1, V_Blue1)
	FCD_LEDRGB1_SetColor(FCV_V_RED1, FCV_V_GREEN1, FCV_V_BLUE1);

	//Call Component Macro
	//Call Component Macro: Tick()
	FCD_LEDRGB0_Tick();

	//Call Component Macro
	//Call Component Macro: Tick()
	FCD_LEDRGB1_Tick();

}


void FCM_RGB2()
{
	//Local variable definitions
	MX_UINT8 FCL_RGB2_BTN_CNT = (0x0);
	MX_BOOL FCL_RGB2_BTN = (0);
	MX_BOOL FCL_RGB2_BTN1 = (0);


	//Output
	//Output: false -> PORTA
	trisa = trisa & 0xF8;
	porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

	//Output
	//Output: true -> A0
	trisa = trisa & 0xFE;
	if ((FCV_TRUE))
		porta = (porta & 0xFE) | 0x01;
	else
		porta = porta & 0xFE;

	//Output
	//Output: true -> A1
	trisa = trisa & 0xFD;
	if ((FCV_TRUE))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Output
	//Output: true -> A2
	trisa = trisa & 0xFB;
	if ((FCV_TRUE))
		porta = (porta & 0xFB) | 0x04;
	else
		porta = porta & 0xFB;

	//Delay
	//Delay: 500 ms
	delay_ms(255);
	delay_ms(245);

	//Output
	//Output: false -> PORTA
	trisa = trisa & 0xF8;
	porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

	//Loop
	//Loop: While 1
	while (1)
	{

		//Input
		//Input: A5 -> .Btn1
		trisa = trisa | 0x20;
		FCL_RGB2_BTN1 = ((porta & 0x20) == 0x20);

		//Switch
		//Switch: .Btn_cnt?
		switch (FCL_RGB2_BTN_CNT)
		{
			case 1:
			{
				//Output
				//Output: true -> A1
				trisa = trisa & 0xFD;
				if ((FCV_TRUE))
					porta = (porta & 0xFD) | 0x02;
				else
					porta = porta & 0xFD;

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xFA;
				porta = (porta & 0xFA) | ((FCV_FALSE) & 0x05);

				//Loop
				//Loop: While .Btn = false
				while (1)
				{

					//Input
					//Input: A5 -> .Btn1
					trisa = trisa | 0x20;
					FCL_RGB2_BTN1 = ((porta & 0x20) == 0x20);

					//Decision
					//Decision: .Btn1 = true?
					if (FCL_RGB2_BTN1 == FCV_TRUE)
					{

						//Goto RGB End
						//Goto Connection Point: [A]: A
						goto FCC_RGB2_A;

					} else {

						//Input
						//Input: A3 -> .Btn
						trisa = trisa | 0x08;
						FCL_RGB2_BTN = ((porta & 0x08) == 0x08);

						//Call Component Macro
						//Call Component Macro: V_Green1=ReadAsByte()
						FCV_V_GREEN1 = FCD_ADC0_ReadAsByte();

						//Call Component Macro
						//Call Component Macro: SetColor(V_Red1, V_Green1, V_Blue1)
						FCD_LEDRGB1_SetColor(FCV_V_RED1, FCV_V_GREEN1, FCV_V_BLUE1);

						//Call Component Macro
						//Call Component Macro: Tick()
						FCD_LEDRGB1_Tick();

					}


					if ((FCL_RGB2_BTN == FCV_FALSE) == 0) break;
				}

				//Calculation
				//Calculation:
				//  .Btn_cnt = 2
				FCL_RGB2_BTN_CNT = 2;

				break;
			}
			case 2:
			{
				//Output
				//Output: true -> A2
				trisa = trisa & 0xFB;
				if ((FCV_TRUE))
					porta = (porta & 0xFB) | 0x04;
				else
					porta = porta & 0xFB;

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xFC;
				porta = (porta & 0xFC) | ((FCV_FALSE) & 0x03);

				//Loop
				//Loop: While .Btn = false
				while (1)
				{

					//Input
					//Input: A5 -> .Btn1
					trisa = trisa | 0x20;
					FCL_RGB2_BTN1 = ((porta & 0x20) == 0x20);

					//Decision
					//Decision: .Btn1 = true?
					if (FCL_RGB2_BTN1 == FCV_TRUE)
					{

						//Goto RGB End
						//Goto Connection Point: [A]: A
						goto FCC_RGB2_A;

					} else {

						//Input
						//Input: A3 -> .Btn
						trisa = trisa | 0x08;
						FCL_RGB2_BTN = ((porta & 0x08) == 0x08);

						//Call Component Macro
						//Call Component Macro: V_Blue1=ReadAsByte()
						FCV_V_BLUE1 = FCD_ADC0_ReadAsByte();

						//Call Component Macro
						//Call Component Macro: SetColor(V_Red1, V_Green1, V_Blue1)
						FCD_LEDRGB1_SetColor(FCV_V_RED1, FCV_V_GREEN1, FCV_V_BLUE1);

						//Call Component Macro
						//Call Component Macro: Tick()
						FCD_LEDRGB1_Tick();

					}


					if ((FCL_RGB2_BTN == FCV_FALSE) == 0) break;
				}

				//Calculation
				//Calculation:
				//  .Btn_cnt = 0
				FCL_RGB2_BTN_CNT = 0;

				break;
			}
			default:
			{
				//Output
				//Output: true -> A0
				trisa = trisa & 0xFE;
				if ((FCV_TRUE))
					porta = (porta & 0xFE) | 0x01;
				else
					porta = porta & 0xFE;

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xF9;
				porta = (porta & 0xF9) | ((FCV_FALSE) & 0x06);

				//Loop
				//Loop: While .Btn = false
				while (1)
				{

					//Input
					//Input: A5 -> .Btn1
					trisa = trisa | 0x20;
					FCL_RGB2_BTN1 = ((porta & 0x20) == 0x20);

					//Decision
					//Decision: .Btn1 = true?
					if (FCL_RGB2_BTN1 == FCV_TRUE)
					{

						//Goto RGB End
						//Goto Connection Point: [A]: A
						goto FCC_RGB2_A;

					} else {

						//Input
						//Input: A3 -> .Btn
						trisa = trisa | 0x08;
						FCL_RGB2_BTN = ((porta & 0x08) == 0x08);

						//Call Component Macro
						//Call Component Macro: V_Red1=ReadAsByte()
						FCV_V_RED1 = FCD_ADC0_ReadAsByte();

						//Call Component Macro
						//Call Component Macro: SetColor(V_Red1, V_Green1, V_Blue1)
						FCD_LEDRGB1_SetColor(FCV_V_RED1, FCV_V_GREEN1, FCV_V_BLUE1);

						//Call Component Macro
						//Call Component Macro: Tick()
						FCD_LEDRGB1_Tick();

					}


					if ((FCL_RGB2_BTN == FCV_FALSE) == 0) break;
				}

				//Calculation
				//Calculation:
				//  .Btn_cnt = 1
				FCL_RGB2_BTN_CNT = 1;

			}
		}

		//Delay
		//Delay: 300 ms
		delay_ms(255);
		delay_ms(45);


	}

	//RGB End
	//Connection Point: [A]: A
FCC_RGB2_A:
;

}


void FCM_RGB1()
{
	//Local variable definitions
	MX_UINT8 FCL_RGB1_BTN_CNT = (0x0);
	MX_BOOL FCL_RGB1_BTN = (0);
	MX_BOOL FCL_RGB1_BTN1 = (0);


	//Output
	//Output: false -> PORTA
	trisa = trisa & 0xF8;
	porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

	//Output
	//Output: true -> A0
	trisa = trisa & 0xFE;
	if ((FCV_TRUE))
		porta = (porta & 0xFE) | 0x01;
	else
		porta = porta & 0xFE;

	//Output
	//Output: true -> A1
	trisa = trisa & 0xFD;
	if ((FCV_TRUE))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Output
	//Output: true -> A2
	trisa = trisa & 0xFB;
	if ((FCV_TRUE))
		porta = (porta & 0xFB) | 0x04;
	else
		porta = porta & 0xFB;

	//Delay
	//Delay: 500 ms
	delay_ms(255);
	delay_ms(245);

	//Output
	//Output: false -> PORTA
	trisa = trisa & 0xF8;
	porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

	//Loop
	//Loop: While 1
	while (1)
	{

		//Input
		//Input: A5 -> .Btn1
		trisa = trisa | 0x20;
		FCL_RGB1_BTN1 = ((porta & 0x20) == 0x20);

		//Switch
		//Switch: .Btn_cnt?
		switch (FCL_RGB1_BTN_CNT)
		{
			case 1:
			{
				//Output
				//Output: true -> A1
				trisa = trisa & 0xFD;
				if ((FCV_TRUE))
					porta = (porta & 0xFD) | 0x02;
				else
					porta = porta & 0xFD;

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xFA;
				porta = (porta & 0xFA) | ((FCV_FALSE) & 0x05);

				//Loop
				//Loop: While .Btn = false
				while (1)
				{

					//Input
					//Input: A5 -> .Btn1
					trisa = trisa | 0x20;
					FCL_RGB1_BTN1 = ((porta & 0x20) == 0x20);

					//Decision
					//Decision: .Btn1 = true?
					if (FCL_RGB1_BTN1 == FCV_TRUE)
					{

						//Goto RGB End
						//Goto Connection Point: [A]: A
						goto FCC_RGB1_A;

					} else {

						//Input
						//Input: A3 -> .Btn
						trisa = trisa | 0x08;
						FCL_RGB1_BTN = ((porta & 0x08) == 0x08);

						//Call Component Macro
						//Call Component Macro: V_Green=ReadAsByte()
						FCV_V_GREEN = FCD_ADC0_ReadAsByte();

						//Call Component Macro
						//Call Component Macro: SetColor(V_Red, V_Green, V_Blue)
						FCD_LEDRGB0_SetColor(FCV_V_RED, FCV_V_GREEN, FCV_V_BLUE);

						//Call Component Macro
						//Call Component Macro: Tick()
						FCD_LEDRGB0_Tick();

					}


					if ((FCL_RGB1_BTN == FCV_FALSE) == 0) break;
				}

				//Calculation
				//Calculation:
				//  .Btn_cnt = 2
				FCL_RGB1_BTN_CNT = 2;

				break;
			}
			case 2:
			{
				//Output
				//Output: true -> A2
				trisa = trisa & 0xFB;
				if ((FCV_TRUE))
					porta = (porta & 0xFB) | 0x04;
				else
					porta = porta & 0xFB;

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xFC;
				porta = (porta & 0xFC) | ((FCV_FALSE) & 0x03);

				//Loop
				//Loop: While .Btn = false
				while (1)
				{

					//Input
					//Input: A5 -> .Btn1
					trisa = trisa | 0x20;
					FCL_RGB1_BTN1 = ((porta & 0x20) == 0x20);

					//Decision
					//Decision: .Btn1 = true?
					if (FCL_RGB1_BTN1 == FCV_TRUE)
					{

						//Goto RGB End
						//Goto Connection Point: [A]: A
						goto FCC_RGB1_A;

					} else {

						//Input
						//Input: A3 -> .Btn
						trisa = trisa | 0x08;
						FCL_RGB1_BTN = ((porta & 0x08) == 0x08);

						//Call Component Macro
						//Call Component Macro: V_Blue=ReadAsByte()
						FCV_V_BLUE = FCD_ADC0_ReadAsByte();

						//Call Component Macro
						//Call Component Macro: SetColor(V_Red, V_Green, V_Blue)
						FCD_LEDRGB0_SetColor(FCV_V_RED, FCV_V_GREEN, FCV_V_BLUE);

						//Call Component Macro
						//Call Component Macro: Tick()
						FCD_LEDRGB0_Tick();

					}


					if ((FCL_RGB1_BTN == FCV_FALSE) == 0) break;
				}

				//Calculation
				//Calculation:
				//  .Btn_cnt = 0
				FCL_RGB1_BTN_CNT = 0;

				break;
			}
			default:
			{
				//Output
				//Output: true -> A0
				trisa = trisa & 0xFE;
				if ((FCV_TRUE))
					porta = (porta & 0xFE) | 0x01;
				else
					porta = porta & 0xFE;

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xF9;
				porta = (porta & 0xF9) | ((FCV_FALSE) & 0x06);

				//Loop
				//Loop: While .Btn = false
				while (1)
				{

					//Input
					//Input: A5 -> .Btn1
					trisa = trisa | 0x20;
					FCL_RGB1_BTN1 = ((porta & 0x20) == 0x20);

					//Decision
					//Decision: .Btn1 = true?
					if (FCL_RGB1_BTN1 == FCV_TRUE)
					{

						//Goto RGB End
						//Goto Connection Point: [A]: A
						goto FCC_RGB1_A;

					} else {

						//Input
						//Input: A3 -> .Btn
						trisa = trisa | 0x08;
						FCL_RGB1_BTN = ((porta & 0x08) == 0x08);

						//Call Component Macro
						//Call Component Macro: SetColor(V_Red, V_Green, V_Blue)
						FCD_LEDRGB0_SetColor(FCV_V_RED, FCV_V_GREEN, FCV_V_BLUE);

						//Call Component Macro
						//Call Component Macro: V_Red=ReadAsByte()
						FCV_V_RED = FCD_ADC0_ReadAsByte();

						//Call Component Macro
						//Call Component Macro: Tick()
						FCD_LEDRGB0_Tick();

					}


					if ((FCL_RGB1_BTN == FCV_FALSE) == 0) break;
				}

				//Calculation
				//Calculation:
				//  .Btn_cnt = 1
				FCL_RGB1_BTN_CNT = 1;

			}
		}

		//Delay
		//Delay: 300 ms
		delay_ms(255);
		delay_ms(45);


	}

	//RGB End
	//Connection Point: [A]: A
FCC_RGB1_A:
;

}


void FCM_Mode()
{
	//Local variable definitions
	MX_BOOL FCL_MODE_SAVE_BTN = (0);
	MX_BOOL FCL_MODE_MODE_BTN = (0);


	//Output
	//Output: false -> PORTA
	trisa = trisa & 0xF8;
	porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

	//Output
	//Output: true -> A0
	trisa = trisa & 0xFE;
	if ((FCV_TRUE))
		porta = (porta & 0xFE) | 0x01;
	else
		porta = porta & 0xFE;

	//Output
	//Output: true -> A1
	trisa = trisa & 0xFD;
	if ((FCV_TRUE))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Output
	//Output: true -> A2
	trisa = trisa & 0xFB;
	if ((FCV_TRUE))
		porta = (porta & 0xFB) | 0x04;
	else
		porta = porta & 0xFB;

	//Delay
	//Delay: 500 ms
	delay_ms(255);
	delay_ms(245);

	//Output
	//Output: false -> PORTA
	trisa = trisa & 0xF8;
	porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

	//Loop
	//Loop: While 1
	while (1)
	{

		//Input
		//Input: A3 -> .Save_Btn
		trisa = trisa | 0x08;
		FCL_MODE_SAVE_BTN = ((porta & 0x08) == 0x08);

		//Input
		//Input: A5 -> .Mode_Btn
		trisa = trisa | 0x20;
		FCL_MODE_MODE_BTN = ((porta & 0x20) == 0x20);

		//Decision
		//Decision: .Mode_Btn = true?
		if (FCL_MODE_MODE_BTN == FCV_TRUE)
		{

			//Goto End Mode
			//Goto Connection Point: [A]: A
			goto FCC_Mode_A;

		} else {

			//Decision
			//Decision: .Save_Btn = true?
			if (FCL_MODE_SAVE_BTN == FCV_TRUE)
			{

				//Output
				//Output: false -> PORTA
				trisa = trisa & 0xF8;
				porta = (porta & 0xF8) | ((FCV_FALSE) & 0x07);

				//Call Component Macro
				//Call Component Macro: Write(0, V_Red)
				FCD_EEPROM0_WriteEEPROM(0, FCV_V_RED);

				//Output
				//Output: true -> A0
				trisa = trisa & 0xFE;
				if ((FCV_TRUE))
					porta = (porta & 0xFE) | 0x01;
				else
					porta = porta & 0xFE;

				//Delay
				//Delay: 100 ms
				delay_ms(100);

				//Call Component Macro
				//Call Component Macro: Write(1, V_Green)
				FCD_EEPROM0_WriteEEPROM(1, FCV_V_GREEN);

				//Output
				//Output: true -> A1
				trisa = trisa & 0xFD;
				if ((FCV_TRUE))
					porta = (porta & 0xFD) | 0x02;
				else
					porta = porta & 0xFD;

				//Delay
				//Delay: 100 ms
				delay_ms(100);

				//Call Component Macro
				//Call Component Macro: Write(2, V_Blue)
				FCD_EEPROM0_WriteEEPROM(2, FCV_V_BLUE);

				//Output
				//Output: true -> A2
				trisa = trisa & 0xFB;
				if ((FCV_TRUE))
					porta = (porta & 0xFB) | 0x04;
				else
					porta = porta & 0xFB;

				//Delay
				//Delay: 200 ms
				delay_ms(200);

				//Call Component Macro
				//Call Component Macro: Write(3, V_Blue1)
				FCD_EEPROM0_WriteEEPROM(3, FCV_V_BLUE1);

				//Output
				//Output: False -> A2
				trisa = trisa & 0xFB;
				if ((FCV_FALSE))
					porta = (porta & 0xFB) | 0x04;
				else
					porta = porta & 0xFB;

				//Delay
				//Delay: 100 ms
				delay_ms(100);

				//Call Component Macro
				//Call Component Macro: Write(4, V_Green1)
				FCD_EEPROM0_WriteEEPROM(4, FCV_V_GREEN1);

				//Output
				//Output: False -> A1
				trisa = trisa & 0xFD;
				if ((FCV_FALSE))
					porta = (porta & 0xFD) | 0x02;
				else
					porta = porta & 0xFD;

				//Delay
				//Delay: 100 ms
				delay_ms(100);

				//Call Component Macro
				//Call Component Macro: Write(5, V_Red1)
				FCD_EEPROM0_WriteEEPROM(5, FCV_V_RED1);

				//Output
				//Output: False -> A0
				trisa = trisa & 0xFE;
				if ((FCV_FALSE))
					porta = (porta & 0xFE) | 0x01;
				else
					porta = porta & 0xFE;

				//Delay
				//Delay: 500 ms
				delay_ms(255);
				delay_ms(245);

			// } else {

			}

		}


	}

	//End Mode
	//Connection Point: [A]: A
FCC_Mode_A:
;

	//Calculation
	//Calculation:
	//  .Mode_Btn = 0
	FCL_MODE_MODE_BTN = 0;

	//Calculation
	//Calculation:
	//  .Save_Btn = 0
	FCL_MODE_SAVE_BTN = 0;

	//Delay
	//Delay: 100 ms
	delay_ms(100);

}



void main()
{
	//Local variable definitions
	MX_UINT8 FCL_MAIN_MODE_CNT = (0x0);

	//Initialization
	ansel = 0;
	cmcon = 0x07;


	//Interrupt initialization code
	option_reg = 0xC0;


	//Call Macro
	//Call Macro: Start_List()
	FCM_Start_List();

	//Loop
	//Loop: While 1
	while (1)
	{

		//Switch
		//Switch: .Mode_cnt?
		switch (FCL_MAIN_MODE_CNT)
		{
			case 1:
			{
				//Call Macro
				//Call Macro: RGB1()
				FCM_RGB1();

				//Calculation
				//Calculation:
				//  .Mode_cnt = 2
				FCL_MAIN_MODE_CNT = 2;

				break;
			}
			case 2:
			{
				//Call Macro
				//Call Macro: RGB2()
				FCM_RGB2();

				//Calculation
				//Calculation:
				//  .Mode_cnt = 0
				FCL_MAIN_MODE_CNT = 0;

				break;
			}
			default:
			{
				//Call Macro
				//Call Macro: Mode()
				FCM_Mode();

				//Calculation
				//Calculation:
				//  .Mode_cnt = 1
				FCL_MAIN_MODE_CNT = 1;

			}
		}

		//Delay
		//Delay: 300 ms
		delay_ms(255);
		delay_ms(45);


	}

	mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
}



