//************************************************************************************
//**  
//**  File name:     \\vmware-host\Shared Folders\ZDL\vonat\Jatekgep_Vonat_2.c
//**  Title:         
//**  Description:   
//**  
//**  Generated by:  Flowcode v5.5.2.1
//**  Date:          Tuesday, August 11, 2015 21:00:29
//**  Licence:       Professional
//**  Registered to: Jakab Gipsz
//**  Licence key:   500NN8
//**  
//**  
//**  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 0
#define MX_USES_UINT16 0
#define MX_USES_UINT32 0
//Mikrovezérl? definíciók
#define P16F876
#define FC_CAL_PIC
#define MX_ADC
#define MX_ADC_TYPE_30
#define MX_ADC_BITS_10
#define MX_EE
#define MX_EE_TYPE2
#define MX_EE_SIZE 256
#define MX_SPI_1
#define MX_SPI_1_MISO_PORT portc
#define MX_SPI_1_MISO_TRIS trisc
#define MX_SPI_1_MISO_PIN 4
#define MX_SPI_1_MOSI_PORT portc
#define MX_SPI_1_MOSI_TRIS trisc
#define MX_SPI_1_MOSI_PIN 5
#define MX_SPI_1_CLK_PORT portc
#define MX_SPI_1_CLK_TRIS trisc
#define MX_SPI_1_CLK_PIN 3
#define MX_SPI_1_SS_PORT portc
#define MX_SPI_1_SS_TRIS trisc
#define MX_UART_1
#define MX_UART_1_TX_PORT portc
#define MX_UART_1_TX_TRIS trisc
#define MX_UART_1_TX_PIN 6
#define MX_UART_1_RX_PORT portc
#define MX_UART_1_RX_TRIS trisc
#define MX_UART_1_RX_PIN 7
#define MX_I2C
#define MX_MI2C
#define MX_I2C_1
#define MX_I2C_1_SDA_PORT portc
#define MX_I2C_1_SDA_TRIS trisc
#define MX_I2C_1_SDA_PIN 4
#define MX_I2C_1_SCL_PORT portc
#define MX_I2C_1_SCL_TRIS trisc
#define MX_I2C_1_SCL_PIN 3
#define MX_PWM
#define MX_PWM_CNT 2
#define MX_PWM_PSCA1
#define MX_PWM_PSCA4
#define MX_PWM_PSCA16
#define MX_PWM_1_PORT portc
#define MX_PWM_1_TRIS trisc
#define MX_PWM_1_PIN 2
#define MX_PWM_2_PORT portc
#define MX_PWM_2_TRIS trisc
#define MX_PWM_2_PIN 1

//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, 0x3f71
#endif
#ifdef HI_TECH_C
__CONFIG(0x3f71);
#endif

//Bels? függvények
#include "C:\Program Files\Flowcode\v5\FCD\internals.c"

//Makró deklarációk
void FCM_Startup();
void FCM_CoinError();
void FCM_TMR2_Macro();
void FCM_TMR1_Macro();


//Változó deklarációk
MX_UINT8 FCV_TMR1_COUNTER = (0x0);
MX_UINT8 FCV_X = (0x0);
MX_UINT8 FCV_T1_E = (0x1);
MX_UINT8 FCV_T2_E = (0x0);
MX_UINT8 FCV_JATEKIDO = (0x0);
MX_UINT8 FCV_TMR2_COUNTER = (0x0);

MX_UINT8 FCLV_LOOP1;
MX_UINT8 FCLV_LOOP2;



//LCDDisplay(0): //Defines:

/**** Macro Substitutions ****
a = Unique Component Reference Number
b = D1 Port Letter
c = D2 Port Letter
d = D3 Port Letter
e = D4 Port Letter
f = RS Port Letter
g = E Port Letter
h = Data 1_Pin
i = Data 2 Pin
j = Data 3 Pin
k = Data 4 Pin
l = RS Pin
m = Enable Pin
n = Row Count
o = Column Count
******************************/

	//component connections
	//Port pin lat workaround for 8-bit PIC devices running >= 32MHz
	//seems we need this mod for 19660800 16F1937 so changed to >= 16MHz

  #ifdef FC_CAL_PIC
   #if MX_CLK_SPEED >= 32000000
	#define LCD_1__PORT0    latb
	#define LCD_1__PORT1    latb
	#define LCD_1__PORT2    latc
	#define LCD_1__PORT3    latc
	#define LCD_1__PORT4    lata
	#define LCD_1__PORT5    lata
   #else
    #ifdef MX_LCD_PORT_LAT
	 #define LCD_1__PORT0    latb
	 #define LCD_1__PORT1    latb
	 #define LCD_1__PORT2    latc
	 #define LCD_1__PORT3    latc
	 #define LCD_1__PORT4    lata
	 #define LCD_1__PORT5    lata
    #else
	 #define LCD_1__PORT0    portb
	 #define LCD_1__PORT1    portb
	 #define LCD_1__PORT2    portc
	 #define LCD_1__PORT3    portc
	 #define LCD_1__PORT4    porta
	 #define LCD_1__PORT5    porta
	#endif
   #endif
  #else
	#define LCD_1__PORT0    portb
	#define LCD_1__PORT1    portb
	#define LCD_1__PORT2    portc
	#define LCD_1__PORT3    portc
	#define LCD_1__PORT4    porta
	#define LCD_1__PORT5    porta
  #endif

	#define LCD_1__TRIS0    trisb
	#define LCD_1__TRIS1    trisb
	#define LCD_1__TRIS2    trisc
	#define LCD_1__TRIS3    trisc
	#define LCD_1__TRIS4    trisa
	#define LCD_1__TRIS5    trisa
	#define LCD_1__BIT0    	6
	#define LCD_1__BIT1    	5
	#define LCD_1__BIT2    	2
	#define LCD_1__BIT3    	3
	#define LCD_1__RS      	4
	#define LCD_1__E       	5
	#define LCD_1__ROWCNT	2
	#define LCD_1__COLCNT	16

	#ifdef _BOOSTC
	  #define LCD_1__DELAY   delay_10us(10)
	#endif
	#ifdef _C2C_
	  #define LCD_1__DELAY   delay_us(100)
	#endif
	#ifdef HI_TECH_C
	  #define LCD_1__DELAY   __delay_us(120)
	#endif
	#ifndef LCD_1__DELAY
	  #define LCD_1__DELAY   delay_us(100)
	#endif




//LCDDisplay(0): //Makró deklarációk

void FCD_LCDDisplay0_RawSend(MX_UINT8 in, MX_UINT8 mask);
void FCD_LCDDisplay0_Start();
void FCD_LCDDisplay0_Clear();
void FCD_LCDDisplay0_PrintASCII(MX_UINT8 Character);
void FCD_LCDDisplay0_Command(MX_UINT8 in);
void FCD_LCDDisplay0_Cursor(MX_UINT8 x, MX_UINT8 y);
void FCD_LCDDisplay0_PrintNumber(MX_SINT16 Number);
void FCD_LCDDisplay0_PrintString(MX_STRING String, MX_UINT8 MSZ_String);
void FCD_LCDDisplay0_ScrollDisplay(MX_UINT8 Direction, MX_UINT8 Num_Positions);
void FCD_LCDDisplay0_ClearLine(MX_UINT8 Line);
void FCD_LCDDisplay0_RAM_Write(MX_UINT8 nIdx, MX_UINT8 d0, MX_UINT8 d1, MX_UINT8 d2, MX_UINT8 d3, MX_UINT8 d4, MX_UINT8 d5, MX_UINT8 d6, MX_UINT8 d7);


//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): //Makró deklarációk

MX_UINT16 FCD_EEPROM0_EEPROMRead(MX_UINT16 addr);
void FCD_EEPROM0_WriteEEPROM(MX_UINT16 addr, MX_UINT16 data);



//LCDDisplay(0): //Makró implementációk


void FCD_LCDDisplay0_RawSend(MX_UINT8 in, MX_UINT8 mask)
{
	
		MX_UINT8 pt;

		FC_CAL_Bit_Low(LCD_1__PORT0, LCD_1__BIT0);
		FC_CAL_Bit_Low(LCD_1__PORT1, LCD_1__BIT1);
		FC_CAL_Bit_Low(LCD_1__PORT2, LCD_1__BIT2);
		FC_CAL_Bit_Low(LCD_1__PORT3, LCD_1__BIT3);
		FC_CAL_Bit_Low(LCD_1__PORT4, LCD_1__RS);
		FC_CAL_Bit_Low(LCD_1__PORT5, LCD_1__E);
		pt = ((in >> 4) & 0x0f);
		if (pt & 0x01)
		    FC_CAL_Bit_High(LCD_1__PORT0, LCD_1__BIT0);
		if (pt & 0x02)
		    FC_CAL_Bit_High(LCD_1__PORT1, LCD_1__BIT1);
		if (pt & 0x04)
		    FC_CAL_Bit_High(LCD_1__PORT2, LCD_1__BIT2);
		if (pt & 0x08)
		    FC_CAL_Bit_High(LCD_1__PORT3, LCD_1__BIT3);
		if (mask)
		    FC_CAL_Bit_High(LCD_1__PORT4, LCD_1__RS);
		LCD_1__DELAY;
		FC_CAL_Bit_High (LCD_1__PORT5, LCD_1__E);
		LCD_1__DELAY;
		FC_CAL_Bit_Low (LCD_1__PORT5, LCD_1__E);
		pt = (in & 0x0f);
		LCD_1__DELAY;
		FC_CAL_Bit_Low(LCD_1__PORT0, LCD_1__BIT0);
		FC_CAL_Bit_Low(LCD_1__PORT1, LCD_1__BIT1);
		FC_CAL_Bit_Low(LCD_1__PORT2, LCD_1__BIT2);
		FC_CAL_Bit_Low(LCD_1__PORT3, LCD_1__BIT3);
		FC_CAL_Bit_Low(LCD_1__PORT4, LCD_1__RS);
		FC_CAL_Bit_Low(LCD_1__PORT5, LCD_1__E);
		if (pt & 0x01)
		    FC_CAL_Bit_High(LCD_1__PORT0, LCD_1__BIT0);
		if (pt & 0x02)
		    FC_CAL_Bit_High(LCD_1__PORT1, LCD_1__BIT1);
		if (pt & 0x04)
		    FC_CAL_Bit_High(LCD_1__PORT2, LCD_1__BIT2);
		if (pt & 0x08)
		    FC_CAL_Bit_High(LCD_1__PORT3, LCD_1__BIT3);
		if (mask)
		    FC_CAL_Bit_High(LCD_1__PORT4, LCD_1__RS);
		LCD_1__DELAY;
		FC_CAL_Bit_High (LCD_1__PORT5, LCD_1__E);
		LCD_1__DELAY;
		FC_CAL_Bit_Low (LCD_1__PORT5, LCD_1__E);
		LCD_1__DELAY;

}

void FCD_LCDDisplay0_Start()
{
	
		FC_CAL_Bit_Low_DDR(LCD_1__PORT0, LCD_1__TRIS0, LCD_1__BIT0);
		FC_CAL_Bit_Low_DDR(LCD_1__PORT1, LCD_1__TRIS1, LCD_1__BIT1);
		FC_CAL_Bit_Low_DDR(LCD_1__PORT2, LCD_1__TRIS2, LCD_1__BIT2);
		FC_CAL_Bit_Low_DDR(LCD_1__PORT3, LCD_1__TRIS3, LCD_1__BIT3);
		FC_CAL_Bit_Low_DDR(LCD_1__PORT4, LCD_1__TRIS4, LCD_1__RS);
		FC_CAL_Bit_Low_DDR(LCD_1__PORT5, LCD_1__TRIS5, LCD_1__E);

		Wdt_Delay_Ms(12);

		FCD_LCDDisplay0_RawSend(0x33, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x33, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x32, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x2c, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x06, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x0c, 0);
		Wdt_Delay_Ms(2);

		//clear the display
		FCD_LCDDisplay0_RawSend(0x01, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x02, 0);
		Wdt_Delay_Ms(2);

}

void FCD_LCDDisplay0_Clear()
{
	
		FCD_LCDDisplay0_RawSend(0x01, 0);
		Wdt_Delay_Ms(2);
		FCD_LCDDisplay0_RawSend(0x02, 0);
		Wdt_Delay_Ms(2);

}

void FCD_LCDDisplay0_PrintASCII(MX_UINT8 Character)
{
	
		FCD_LCDDisplay0_RawSend(Character, 0x10);

}

void FCD_LCDDisplay0_Command(MX_UINT8 in)
{
	
		FCD_LCDDisplay0_RawSend(in, 0);
		Wdt_Delay_Ms(2);

}

void FCD_LCDDisplay0_Cursor(MX_UINT8 x, MX_UINT8 y)
{
	
	  #if (LCD_1__ROWCNT == 1)
	    y=0x80;
	  #endif

	  #if (LCD_1__ROWCNT == 2)
		if (y==0)
			y=0x80;
		else
			y=0xc0;
	  #endif

	  #if (LCD_1__ROWCNT == 4)
		if (y==0)
			y=0x80;
		else if (y==1)
			y=0xc0;

		#if (LCD_1__COLCNT == 16)
			else if (y==2)
				y=0x90;
			else
				y=0xd0;
		#endif

		#if (LCD_1__COLCNT == 20)
			else if (y==2)
				y=0x94;
			else
				y=0xd4;
		#endif
	  #endif

		FCD_LCDDisplay0_RawSend(y+x, 0);
		Wdt_Delay_Ms(2);

}

void FCD_LCDDisplay0_PrintNumber(MX_SINT16 Number)
{
	
		MX_SINT16 tmp_int;
		MX_UINT8 tmp_byte;

		if (Number < 0)
		{
			FCD_LCDDisplay0_RawSend('-', 0x10);
			Number = 0 - Number;
		}

		tmp_int = Number;
		if (Number >= 10000)
		{
			tmp_byte = tmp_int / 10000;
			FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10);

			while (tmp_byte > 0)
			{
				tmp_int = tmp_int - 10000;
				tmp_byte--;
			}
		}
		if (Number >= 1000)
		{
			tmp_byte = tmp_int / 1000;
			FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10);

			while (tmp_byte > 0)
			{
				tmp_int = tmp_int - 1000;
				tmp_byte--;
			}
		}
		if (Number >= 100)
		{
			tmp_byte = tmp_int / 100;
			FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10);

			while (tmp_byte > 0)
			{
				tmp_int = tmp_int - 100;
				tmp_byte--;
			}
		}
		if (Number >= 10)
		{
			tmp_byte = tmp_int / 10;
			FCD_LCDDisplay0_RawSend('0' + tmp_byte, 0x10);

			while (tmp_byte > 0)
			{
				tmp_int = tmp_int - 10;
				tmp_byte--;
			}
		}
		FCD_LCDDisplay0_RawSend('0' + tmp_int, 0x10);

}

void FCD_LCDDisplay0_PrintString(MX_STRING String, MX_UINT8 MSZ_String)
{
	
		MX_UINT8 idx = 0;

		for (idx=0; idx<MSZ_String; idx++)
		{
			if (String[idx] == 0)
			{
				break;
			}
			FCD_LCDDisplay0_RawSend(String[idx], 0x10);
		}

}

void FCD_LCDDisplay0_ScrollDisplay(MX_UINT8 Direction, MX_UINT8 Num_Positions)
{
	
		MX_UINT8 cmd = 0;
		MX_UINT8 count;

		//Choose the direction
		switch (Direction)
		{
			case 0:
			case 'l':
			case 'L':

				cmd = 0x18;
				break;

			case 1:
			case 'r':
			case 'R':

				cmd = 0x1C;
				break;

			default:
				break;
		}

		//If direction accepted then scroll the specified amount
		if (cmd)
		{
			for (count = 0; count < Num_Positions; count++)
				FCD_LCDDisplay0_Command(cmd);
		}

}

void FCD_LCDDisplay0_ClearLine(MX_UINT8 Line)
{
	
		MX_UINT8 count;
		MX_UINT8 rowcount;

		//Define number of columns per line
		#if (LCD_1__ROWCNT == 1)
			rowcount=80;
		#endif

		#if (LCD_1__ROWCNT == 2)
			rowcount=40;
		#endif

		#if (LCD_1__ROWCNT == 4)
			#if (LCD_1__COLCNT == 16)
				rowcount=16;
			#endif
			#if (LCD_1__COLCNT == 20)
				rowcount=20;
			#endif
		#endif

		//Start at beginning of the line
		FCD_LCDDisplay0_Cursor (0, Line);

		//Send out spaces to clear line
		for (count = 0; count < rowcount; count++)
			FCD_LCDDisplay0_RawSend(' ', 0x10);

		//Move back to the beginning of the line.
		FCD_LCDDisplay0_Cursor (0, Line);

}

void FCD_LCDDisplay0_RAM_Write(MX_UINT8 nIdx, MX_UINT8 d0, MX_UINT8 d1, MX_UINT8 d2, MX_UINT8 d3, MX_UINT8 d4, MX_UINT8 d5, MX_UINT8 d6, MX_UINT8 d7)
{
	   //set CGRAM address

	   FCD_LCDDisplay0_RawSend(64 + (nIdx << 3), 0);
	   delay_ms(2);

	   //write CGRAM data
	   FCD_LCDDisplay0_RawSend(d0, 0x10);
	   FCD_LCDDisplay0_RawSend(d1, 0x10);
	   FCD_LCDDisplay0_RawSend(d2, 0x10);
	   FCD_LCDDisplay0_RawSend(d3, 0x10);
	   FCD_LCDDisplay0_RawSend(d4, 0x10);
	   FCD_LCDDisplay0_RawSend(d5, 0x10);
	   FCD_LCDDisplay0_RawSend(d6, 0x10);
	   FCD_LCDDisplay0_RawSend(d7, 0x10);

	   //Clear the display
	   FCD_LCDDisplay0_RawSend(0x01, 0);
	   delay_ms(2);
	   FCD_LCDDisplay0_RawSend(0x02, 0);
	   delay_ms(2);

}



//EEPROM(0): //Makró implementációk


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 "C:\Program Files\Flowcode\v5\CAL\includes.c"

//Makró implementációk


void FCM_Startup()
{

	//Komponens makró hívása
	//Komponens makró hívása: jatekido=Read(7)
	FCV_JATEKIDO = FCD_EEPROM0_EEPROMRead(7);

	//Feltételes elágazás
	//Feltételes elágazás: jatekido = 111?
	if (FCV_JATEKIDO == 111)
	{

	} else {

		//Komponens makró hívása
		//Komponens makró hívása: Write(0, 95)
		FCD_EEPROM0_WriteEEPROM(0, 95);

		//Komponens makró hívása
		//Komponens makró hívása: Write(7, 111)
		FCD_EEPROM0_WriteEEPROM(7, 111);

	}

	//Komponens makró hívása
	//Komponens makró hívása: jatekido=Read(0)
	FCV_JATEKIDO = FCD_EEPROM0_EEPROMRead(0);

	//Komponens makró hívása
	//Komponens makró hívása: Start()
	FCD_LCDDisplay0_Start();

	//   0 = Tele karakter
	//Komponens makró hívása: RAM_Írás(0, 31, 31, 31, 31, 31, 31, 31, 31)
	FCD_LCDDisplay0_RAM_Write(0, 31, 31, 31, 31, 31, 31, 31, 31);

	//Ciklus
	//Ciklus: Ciklus 16 alkalommal
	for (FCLV_LOOP1=0; FCLV_LOOP1<16; FCLV_LOOP1++)
	{

		//Komponens makró hívása
		//Komponens makró hívása: PrintASCII(0)
		FCD_LCDDisplay0_PrintASCII(0);


	}

	//Komponens makró hívása
	//Komponens makró hívása: Cursor(0, 1)
	FCD_LCDDisplay0_Cursor(0, 1);

	//Ciklus
	//Ciklus: Ciklus 16 alkalommal
	for (FCLV_LOOP2=0; FCLV_LOOP2<16; FCLV_LOOP2++)
	{

		//Komponens makró hívása
		//Komponens makró hívása: PrintASCII(0)
		FCD_LCDDisplay0_PrintASCII(0);


	}

	//Késleltetés
	//Késleltetés: 250 ms
	delay_ms(250);

	//Komponens makró hívása
	//Komponens makró hívása: Clear()
	FCD_LCDDisplay0_Clear();

	//Komponens makró hívása
	//Komponens makró hívása: PrintString("Keszenlet")
	FCD_LCDDisplay0_PrintString("Keszenlet", 9);

	//Komponens makró hívása
	//Komponens makró hívása: Cursor(0, 1)
	FCD_LCDDisplay0_Cursor(0, 1);

	//Komponens makró hívása
	//Komponens makró hívása: PrintString("Jatekido: ")
	FCD_LCDDisplay0_PrintString("Jatekido: ", 10);

	//Feltételes elágazás
	//Feltételes elágazás: jatekido < 10?
	if (FCV_JATEKIDO < 10)
	{

		//Komponens makró hívása
		//Komponens makró hívása: PrintString("  ")
		FCD_LCDDisplay0_PrintString("  ", 2);

	} else {

		//Feltételes elágazás
		//Feltételes elágazás: jatekido < 100?
		if (FCV_JATEKIDO < 100)
		{

			//Komponens makró hívása
			//Komponens makró hívása: PrintString(" ")
			FCD_LCDDisplay0_PrintString(" ", 1);

		// } else {

		}

	}

	//Komponens makró hívása
	//Komponens makró hívása: PrintNumber(jatekido)
	FCD_LCDDisplay0_PrintNumber(FCV_JATEKIDO);

	//Komponens makró hívása
	//Komponens makró hívása: PrintString(" mp")
	FCD_LCDDisplay0_PrintString(" mp", 3);

	//Bemenet
	//Bemenet: A0 -> x
	trisa = trisa | 0x01;
	FCV_X = ((porta & 0x01) == 0x01);

	//Feltételes elágazás
	//Feltételes elágazás: x = 0?
	if (FCV_X == 0)
	{

		//Makró hívás
		//Makró hívás: CoinError()
		FCM_CoinError();

	// } else {

	}

}


void FCM_CoinError()
{

	//Számítás
	//Számítás:
	//  T1_E = 0
	FCV_T1_E = 0;

	//Komponens makró hívása
	//Komponens makró hívása: TisztaVonal(0)
	FCD_LCDDisplay0_ClearLine(0);

	//Komponens makró hívása
	//Komponens makró hívása: PrintString("Ermehiba !!")
	FCD_LCDDisplay0_PrintString("Ermehiba !!", 11);

	//Bemenet
	//Bemenet: A0 -> x
	trisa = trisa | 0x01;
	FCV_X = ((porta & 0x01) == 0x01);

	//Ciklus
	//Ciklus: Amígx = 0
	while (FCV_X == 0)
	{

		//Bemenet
		//Bemenet: A0 -> x
		trisa = trisa | 0x01;
		FCV_X = ((porta & 0x01) == 0x01);

		//Késleltetés
		//Késleltetés: 10 ms
		delay_ms(10);


	}

	//Komponens makró hívása
	//Komponens makró hívása: TisztaVonal(0)
	FCD_LCDDisplay0_ClearLine(0);

	//Komponens makró hívása
	//Komponens makró hívása: PrintString("Keszenlet")
	FCD_LCDDisplay0_PrintString("Keszenlet", 9);

	//Számítás
	//Számítás:
	//  T1_E = 1
	FCV_T1_E = 1;

}


void FCM_TMR2_Macro()
{

	//Feltételes elágazás
	//Feltételes elágazás: T2_E?
	if (FCV_T2_E)
	{

		//Számítás
		//Számítás:
		//  TMR2_Counter = TMR2_Counter + 1
		FCV_TMR2_COUNTER = FCV_TMR2_COUNTER + 1;

		//Feltételes elágazás (24)
		//Feltételes elágazás: TMR2_Counter > 24?
		if (FCV_TMR2_COUNTER > 24)
		{

			//Számítás
			//Számítás:
			//  TMR2_Counter = 0
			//  x = 1
			FCV_TMR2_COUNTER = 0;
			FCV_X = 1;

		// } else {

		}

	// } else {

	}

}


void FCM_TMR1_Macro()
{

	//Feltételes elágazás
	//Feltételes elágazás: T1_E = 1?
	if (FCV_T1_E == 1)
	{

		//Többirányú elágazás
		//Többirányú elágazás: TMR1_Counter?
		switch (FCV_TMR1_COUNTER)
		{
			case 0:
			{
				//Kimenet
				//Kimenet: 16 -> PORTC
				trisc = trisc & 0x0F;
				portc = (portc & 0x0F) | ((16) & 0xF0);

				//Kimenet
				//Kimenet: 2 -> PORTB
				trisb = trisb & 0xF8;
				portb = (portb & 0xF8) | ((2) & 0x07);

				break;
			}
			case 1:
			{
				//Kimenet
				//Kimenet: 32 -> PORTC
				trisc = trisc & 0x0F;
				portc = (portc & 0x0F) | ((32) & 0xF0);

				//Kimenet
				//Kimenet: 5 -> PORTB
				trisb = trisb & 0xF8;
				portb = (portb & 0xF8) | ((5) & 0x07);

				break;
			}
			case 2:
			{
				//Kimenet
				//Kimenet: 64 -> PORTC
				trisc = trisc & 0x0F;
				portc = (portc & 0x0F) | ((64) & 0xF0);

				//Kimenet
				//Kimenet: 2 -> PORTB
				trisb = trisb & 0xF8;
				portb = (portb & 0xF8) | ((2) & 0x07);

				break;
			}
			case 3:
			{
				//Kimenet
				//Kimenet: 128 -> PORTC
				trisc = trisc & 0x0F;
				portc = (portc & 0x0F) | ((128) & 0xF0);

				//Kimenet
				//Kimenet: 5 -> PORTB
				trisb = trisb & 0xF8;
				portb = (portb & 0xF8) | ((5) & 0x07);

				break;
			}
			// default:

		}

		//Számítás
		//Számítás:
		//  TMR1_Counter = TMR1_Counter + 1
		FCV_TMR1_COUNTER = FCV_TMR1_COUNTER + 1;

		//Feltételes elágazás
		//Feltételes elágazás: TMR1_Counter > 3?
		if (FCV_TMR1_COUNTER > 3)
		{

			//Számítás
			//Számítás:
			//  TMR1_Counter = 0
			FCV_TMR1_COUNTER = 0;

		// } else {

		}

	// } else {

	}

}



void main()
{
	//Initialization
	adcon1 = 0x07;


	//Interrupt initialization code
	option_reg = 0xC0;


	//Késleltetés
	//Késleltetés: 255 ms
	delay_ms(255);

	//Makró hívás
	//Makró hívás: Startup()
	FCM_Startup();

	//Megszakítás
	//Megszakítás: Engedélyezés TMR1
	st_bit(intcon,PEIE);
	st_bit(t1con,T1OSCEN);
	st_bit(t1con,TMR1ON);
	cr_bit(t1con,TMR1CS);
	t1con = (t1con & 0x0F) | 0x30;
	st_bit(intcon,GIE);
	st_bit(pie1, TMR1IE);

	//C kód
	//C kód:
	t1con=0b00111101;

	//Megszakítás
	//Megszakítás: Engedélyezés TMR2
	st_bit(intcon,PEIE);
	cr_bit(t2con,T2CKPS0);
	st_bit(t2con,T2CKPS1);
	st_bit(t2con,TMR2ON);
	t2con = (t2con & 0x07) | 0x48;
	pr2=250-1;
	st_bit(intcon,GIE);
	st_bit(pie1, TMR2IE);

	//Ciklus
	//Ciklus: Amíg1
	while (1)
	{

		//Bemenet
		//Bemenet: A0 -> x
		trisa = trisa | 0x01;
		FCV_X = ((porta & 0x01) == 0x01);

		//Feltételes elágazás
		//Feltételes elágazás: x = 0?
		if (FCV_X == 0)
		{

			//Komponens makró hívása
			//Komponens makró hívása: TisztaVonal(0)
			FCD_LCDDisplay0_ClearLine(0);

			//Komponens makró hívása
			//Komponens makró hívása: PrintString("Jatek...")
			FCD_LCDDisplay0_PrintString("Jatek...", 8);

			//Kimenet
			//Kimenet: 1 -> B7
			trisb = trisb & 0x7F;
			if ((1))
				portb = (portb & 0x7F) | 0x80;
			else
				portb = portb & 0x7F;

			//Késleltetés
			//Késleltetés: 250 ms
			delay_ms(250);

			//Kimenet
			//Kimenet: 0 -> B7
			trisb = trisb & 0x7F;
			if ((0))
				portb = (portb & 0x7F) | 0x80;
			else
				portb = portb & 0x7F;

			//Kimenet
			//Kimenet: 1 -> B3
			trisb = trisb & 0xF7;
			if ((1))
				portb = (portb & 0xF7) | 0x08;
			else
				portb = portb & 0xF7;

			//Számítás
			//Számítás:
			//  x = 0
			//  TMR2_Counter = 0
			FCV_X = 0;
			FCV_TMR2_COUNTER = 0;

			//Számítás
			//Számítás:
			//  T2_E = 1
			FCV_T2_E = 1;

			//Ciklus
			//Ciklus: Amígjatekido > 0
			while (FCV_JATEKIDO > 0)
			{

				//Feltételes elágazás
				//Feltételes elágazás: x = 1?
				if (FCV_X == 1)
				{

					//Számítás
					//Számítás:
					//  jatekido = jatekido - 1
					//  x = 0
					FCV_JATEKIDO = FCV_JATEKIDO - 1;
					FCV_X = 0;

					//Komponens makró hívása
					//Komponens makró hívása: Cursor(10, 1)
					FCD_LCDDisplay0_Cursor(10, 1);

					//Feltételes elágazás
					//Feltételes elágazás: jatekido < 10?
					if (FCV_JATEKIDO < 10)
					{

						//Komponens makró hívása
						//Komponens makró hívása: PrintString("  ")
						FCD_LCDDisplay0_PrintString("  ", 2);

					} else {

						//Feltételes elágazás
						//Feltételes elágazás: jatekido < 100?
						if (FCV_JATEKIDO < 100)
						{

							//Komponens makró hívása
							//Komponens makró hívása: PrintString(" ")
							FCD_LCDDisplay0_PrintString(" ", 1);

						// } else {

						}

					}

					//Komponens makró hívása
					//Komponens makró hívása: PrintNumber(jatekido)
					FCD_LCDDisplay0_PrintNumber(FCV_JATEKIDO);

				// } else {

				}


			}

			//Kimenet
			//Kimenet: 0 -> B3
			trisb = trisb & 0xF7;
			if ((0))
				portb = (portb & 0xF7) | 0x08;
			else
				portb = portb & 0xF7;

			//Számítás
			//Számítás:
			//  T2_E = 0
			FCV_T2_E = 0;

			//Bemenet
			//Bemenet: A0 -> x
			trisa = trisa | 0x01;
			FCV_X = ((porta & 0x01) == 0x01);

			//Feltételes elágazás
			//Feltételes elágazás: x = 0?
			if (FCV_X == 0)
			{

				//Makró hívás
				//Makró hívás: CoinError()
				FCM_CoinError();

			// } else {

			}

			//Komponens makró hívása
			//Komponens makró hívása: jatekido=Read(0)
			FCV_JATEKIDO = FCD_EEPROM0_EEPROMRead(0);

			//Komponens makró hívása
			//Komponens makró hívása: TisztaVonal(0)
			FCD_LCDDisplay0_ClearLine(0);

			//Komponens makró hívása
			//Komponens makró hívása: PrintString("Keszenlet")
			FCD_LCDDisplay0_PrintString("Keszenlet", 9);

			//Komponens makró hívása
			//Komponens makró hívása: Cursor(10, 1)
			FCD_LCDDisplay0_Cursor(10, 1);

			//Feltételes elágazás
			//Feltételes elágazás: jatekido < 10?
			if (FCV_JATEKIDO < 10)
			{

				//Komponens makró hívása
				//Komponens makró hívása: PrintString("  ")
				FCD_LCDDisplay0_PrintString("  ", 2);

			} else {

				//Feltételes elágazás
				//Feltételes elágazás: jatekido < 100?
				if (FCV_JATEKIDO < 100)
				{

					//Komponens makró hívása
					//Komponens makró hívása: PrintString(" ")
					FCD_LCDDisplay0_PrintString(" ", 1);

				// } else {

				}

			}

			//Komponens makró hívása
			//Komponens makró hívása: PrintNumber(jatekido)
			FCD_LCDDisplay0_PrintNumber(FCV_JATEKIDO);

		// } else {

		}

		//Bemenet
		//Bemenet: A1 -> x
		trisa = trisa | 0x02;
		FCV_X = ((porta & 0x02) == 0x02);

		//Feltételes elágazás
		//Feltételes elágazás: x = 0?
		if (FCV_X == 0)
		{

			//Komponens makró hívása
			//Komponens makró hívása: TisztaVonal(0)
			FCD_LCDDisplay0_ClearLine(0);

			//Komponens makró hívása
			//Komponens makró hívása: PrintString("Beallitas:")
			FCD_LCDDisplay0_PrintString("Beallitas:", 10);

			//Ciklus
			//Ciklus: Amígx = 0
			while (FCV_X == 0)
			{

				//Bemenet
				//Bemenet: A1 -> x
				trisa = trisa | 0x02;
				FCV_X = ((porta & 0x02) == 0x02);


			}

			//Késleltetés
			//Késleltetés: 100 ms
			delay_ms(100);

			//Számítás
			//Számítás:
			//  TMR2_Counter = 1
			FCV_TMR2_COUNTER = 1;

			//Ciklus
			//Ciklus: AmígTMR2_Counter > 0
			while (FCV_TMR2_COUNTER > 0)
			{

				//Bemenet
				//Bemenet: A3 -> x
				trisa = trisa | 0x08;
				FCV_X = ((porta & 0x08) == 0x08);

				//Feltételes elágazás
				//Feltételes elágazás: x = 0 AND jatekido < 255?
				if (FCV_X == 0 & FCV_JATEKIDO < 255)
				{

					//Számítás
					//Számítás:
					//  jatekido = jatekido + 1
					FCV_JATEKIDO = FCV_JATEKIDO + 1;

					//Komponens makró hívása
					//Komponens makró hívása: Cursor(10, 1)
					FCD_LCDDisplay0_Cursor(10, 1);

					//Feltételes elágazás
					//Feltételes elágazás: jatekido < 10?
					if (FCV_JATEKIDO < 10)
					{

						//Komponens makró hívása
						//Komponens makró hívása: PrintString("  ")
						FCD_LCDDisplay0_PrintString("  ", 2);

					} else {

						//Feltételes elágazás
						//Feltételes elágazás: jatekido < 100?
						if (FCV_JATEKIDO < 100)
						{

							//Komponens makró hívása
							//Komponens makró hívása: PrintString(" ")
							FCD_LCDDisplay0_PrintString(" ", 1);

						// } else {

						}

					}

					//Komponens makró hívása
					//Komponens makró hívása: PrintNumber(jatekido)
					FCD_LCDDisplay0_PrintNumber(FCV_JATEKIDO);

					//Késleltetés
					//Késleltetés: 100 ms
					delay_ms(100);

				// } else {

				}

				//Bemenet
				//Bemenet: A2 -> x
				trisa = trisa | 0x04;
				FCV_X = ((porta & 0x04) == 0x04);

				//Feltételes elágazás
				//Feltételes elágazás: x = 0 AND jatekido > 5?
				if (FCV_X == 0 & FCV_JATEKIDO > 5)
				{

					//Számítás
					//Számítás:
					//  jatekido = jatekido - 1
					FCV_JATEKIDO = FCV_JATEKIDO - 1;

					//Komponens makró hívása
					//Komponens makró hívása: Cursor(10, 1)
					FCD_LCDDisplay0_Cursor(10, 1);

					//Feltételes elágazás
					//Feltételes elágazás: jatekido < 10?
					if (FCV_JATEKIDO < 10)
					{

						//Komponens makró hívása
						//Komponens makró hívása: PrintString("  ")
						FCD_LCDDisplay0_PrintString("  ", 2);

					} else {

						//Feltételes elágazás
						//Feltételes elágazás: jatekido < 100?
						if (FCV_JATEKIDO < 100)
						{

							//Komponens makró hívása
							//Komponens makró hívása: PrintString(" ")
							FCD_LCDDisplay0_PrintString(" ", 1);

						// } else {

						}

					}

					//Komponens makró hívása
					//Komponens makró hívása: PrintNumber(jatekido)
					FCD_LCDDisplay0_PrintNumber(FCV_JATEKIDO);

					//Késleltetés
					//Késleltetés: 100 ms
					delay_ms(100);

				// } else {

				}

				//Bemenet
				//Bemenet: A1 -> TMR2_Counter
				trisa = trisa | 0x02;
				FCV_TMR2_COUNTER = ((porta & 0x02) == 0x02);


			}

			//Komponens makró hívása
			//Komponens makró hívása: Write(0, jatekido)
			FCD_EEPROM0_WriteEEPROM(0, FCV_JATEKIDO);

			//Ciklus
			//Ciklus: AmígTMR2_Counter = 0
			while (FCV_TMR2_COUNTER == 0)
			{

				//Bemenet
				//Bemenet: A1 -> TMR2_Counter
				trisa = trisa | 0x02;
				FCV_TMR2_COUNTER = ((porta & 0x02) == 0x02);


			}

			//Késleltetés
			//Késleltetés: 100 ms
			delay_ms(100);

			//C kód
			//C kód:
			reset();

			//Kommentár:
			//Nagyon ronda megoldás!

			//Makró hívás
			//Makró hívás: Startup()
			FCM_Startup();

		// } else {

		}


	}

	mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
	//Handler code for [TMR1]
	#ifndef MX_INTHANDLER_pir1_TMR1IF
	#define MX_INTHANDLER_pir1_TMR1IF
	if (ts_bit(pir1, TMR1IF) && ts_bit(pie1, TMR1IE))
	{
		#ifdef USE_FLOWCODE_ICD
			extern char ICD_Interrupt_Enable = 1;
		#endif	
		FCM_TMR1_Macro();
		cr_bit(pir1, TMR1IF);
		#ifdef USE_FLOWCODE_ICD
			extern char ICD_Interrupt_Enable = 0;
		#endif	
	}
	#else
	#warning "This interrupt has previously been enabled, so the macro <TMR1_Macro> may never get called."
	#endif


	//Handler code for [TMR2]
	#ifndef MX_INTHANDLER_pir1_TMR2IF
	#define MX_INTHANDLER_pir1_TMR2IF
	if (ts_bit(pir1, TMR2IF) && ts_bit(pie1, TMR2IE))
	{
		#ifdef USE_FLOWCODE_ICD
			extern char ICD_Interrupt_Enable = 1;
		#endif	
		FCM_TMR2_Macro();
		cr_bit(pir1, TMR2IF);
		#ifdef USE_FLOWCODE_ICD
			extern char ICD_Interrupt_Enable = 0;
		#endif	
	}
	#else
	#warning "This interrupt has previously been enabled, so the macro <TMR2_Macro> may never get called."
	#endif


}



