//************************************************************************************
//**  
//**  File name:     C:\Users\toldi\Documents\Flowcode\Comparator\CompVref-ADC2.c
//**  Title:         
//**  Description:   
//**  
//**  Generated by:  Flowcode v5.2.0.0
//**  Date:          Tuesday, November 20, 2012 22:53:28
//**  Licence:       Professional
//**  Registered to: xyz
//**  Licence key:   WUK7B9
//**  
//**  
//**  http://www.matrixmultimedia.com
//**  
//************************************************************************************


#define MX_PIC

#define MX_USES_UINT8 1
#define MX_USES_SINT16 1
#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
//Mikrovezérl? definíciók
#define P16F628A
#define FC_CAL_PIC
#define MX_EE
#define MX_EE_SIZE 128
#define MX_UART_1
#define MX_UART_1_TX_PORT portb
#define MX_UART_1_TX_TRIS trisb
#define MX_UART_1_TX_PIN 2
#define MX_UART_1_RX_PORT portb
#define MX_UART_1_RX_TRIS trisb
#define MX_UART_1_RX_PIN 1
#define MX_PWM
#define MX_PWM_CNT 1
#define MX_PWM_PSCA1
#define MX_PWM_PSCA4
#define MX_PWM_PSCA16
#define MX_PWM_1_PORT portb
#define MX_PWM_1_TRIS trisb
#define MX_PWM_1_PIN 3

//Függvények
#define MX_CLK_SPEED 4000000
#ifdef _BOOSTC
#include <system.h>
#endif
#ifdef HI_TECH_C
#include <pic.h>
#endif

//Konfigurációs adatok
#ifdef _BOOSTC
#pragma DATA 0x2007, 0x3f78
#endif
#ifdef HI_TECH_C
__CONFIG(0x3f78);
#endif

//Bels? függvények
#include "C:\Program Files (x86)\Flowcode\v5\FCD\internals.c"

//Makró deklarációk
void FCM_TMR0makro();
void FCM_kezdovillogas();


//Változó deklarációk
#define FCV_TRUE (1)
#define FCV_FALSE (0)
MX_UINT8 FCV_C2 = (0x2); // Comparator2 értéke
MX_SINT16 FCV_SOTET = (200); // Ennyi idei gvan off  a led
MX_UINT8 FCV_I = (0x1);
MX_UINT8 FCV_LED = (0x0); // Ez a led világít éppen, mert ebbe a tartományba esik a feszültésg.
MX_UINT8 FCV_C2BACK; // C2 el?z? körben lev? értéke. Akkor még 1 volt
MX_SINT16 FCV_VILAGIT = (200); // Ennyit iedeig világit a led
MX_UINT8 FCV_C1 = (0x2); // Comparator 1 értéke

MX_UINT8 FCLV_LOOP1;
MX_UINT8 FCLV_LOOP2;


#include "C:\Program Files (x86)\Flowcode\v5\CAL\includes.c"

//Makró implementációk


void FCM_TMR0makro()
{

	//Kimenet
	//Kimenet: 1 -> B2
	trisb = trisb & 0xFB;
	if ((1))
		portb = (portb & 0xFB) | 0x04;
	else
		portb = portb & 0xFB;

	//Késleltetés
	//Késleltetés: 100 ms
	Wdt_Delay_Ms(100);

}


void FCM_kezdovillogas()
{

	//Comparator inicializálás
	//C kód:
	char temp;
	porta = 0;
	cmcon = 0x02;
	trisa = 0x07;
	delay_10us(1);
	temp = cmcon;
	vrcon = 0x81;
	// E9: Vref bekap, és kiadja a A2 lábra
	// A9: nem adja ki. 

	//Comparátor interrupt disable
	//C kód:
	// Interrupt disable
	clear_bit(pie1, CMIE);

	//Ciklus
	//Ciklus: Ciklus 5 alkalommal
	for (FCLV_LOOP2=0; FCLV_LOOP2<5; FCLV_LOOP2++)
	{

		//Világít
		//Kimenet: 1 -> B2
		trisb = trisb & 0xFB;
		if ((1))
			portb = (portb & 0xFB) | 0x04;
		else
			portb = portb & 0xFB;

		//Világít várakozás
		//Késleltetés: 100 ms
		Wdt_Delay_Ms(100);

		//Sötét
		//Kimenet: 0 -> B2
		trisb = trisb & 0xFB;
		if ((0))
			portb = (portb & 0xFB) | 0x04;
		else
			portb = portb & 0xFB;

		//Sötét várakozás
		//Késleltetés: 100 ms
		Wdt_Delay_Ms(100);


	}

}



void main()
{
	//Initialization
	cmcon = 0x07;


	//Interrupt initialization code
	option_reg = 0xC0;


	//Makró hívás
	//Makró hívás: kezdovillogas()
	FCM_kezdovillogas();

	//Ciklus
	//Ciklus: Amíg1
	while (1)
	{

		//C kód
		//C kód:
		vrcon = 0x81;


		//Számítás
		//Számítás:
		//  i = 1
		FCV_I = 1;

		//Ciklus
		//Ciklus: Ciklus 8 alkalommal
		for (FCLV_LOOP1=0; FCLV_LOOP1<8; FCLV_LOOP1++)
		{

			//Késleltetés
			//Késleltetés: 10 us
			delay_us(10);

			//Váltózó lekérdezése
			//C kód:
			FCV_C1 = test_bit(cmcon, C1OUT);
			FCV_C2 = test_bit(cmcon, C2OUT);

			//C2 vizsgálat
			//Feltételes elágazás: C2 = 0?
			if (FCV_C2 == 0)
			{

			} else {

				//Feltételes elágazás
				//Feltételes elágazás: C2back = 0?
				if (FCV_C2BACK == 0)
				{

					//Többirányú elágazás
					//Többirányú elágazás: i?
					switch (FCV_I)
					{
						case 1:
						{
							//Kimenet
							//Kimenet: 1 -> PORTB
							trisb = 0x00;
							portb = (1);

							break;
						}
						case 2:
						{
							//Kimenet
							//Kimenet: 2 -> PORTB
							trisb = 0x00;
							portb = (2);

							break;
						}
						case 3:
						{
							//Kimenet
							//Kimenet: 4 -> PORTB
							trisb = 0x00;
							portb = (4);

							break;
						}
						case 4:
						{
							//Kimenet
							//Kimenet: 8 -> PORTB
							trisb = 0x00;
							portb = (8);

							break;
						}
						case 5:
						{
							//Kimenet
							//Kimenet: 16 -> PORTB
							trisb = 0x00;
							portb = (16);

							break;
						}
						case 6:
						{
							//Kimenet
							//Kimenet: 32 -> PORTB
							trisb = 0x00;
							portb = (32);

							break;
						}
						case 7:
						{
							//Kimenet
							//Kimenet: 64 -> PORTB
							trisb = 0x00;
							portb = (64);

							break;
						}
						case 8:
						{
							//Kimenet
							//Kimenet: 128 -> PORTB
							trisb = 0x00;
							portb = (128);

							break;
						}
						// default:

					}

				// } else {

				}

			}

			//C kód
			//C kód:
			vrcon = vrcon + 2;


			//Számítás
			//Számítás:
			//  i = i + 1
			//  C2back = C2
			FCV_I = FCV_I + 1;
			FCV_C2BACK = FCV_C2;


		}


	}

	mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
}



