//************************************************************************************
//**  
//**  File name:     D:\sachs_work\ECIO\v4_sa_ecio_18f4620\sa_ecio.c
//**  Generated by:  Flowcode v4.2.2.57
//**  Date:          Saturday, October 10, 2009 12:37:45
//**  Licence:       Professional
//**  Registered to: WOLFGANG SACHS
//**  
//**  
//**  http://www.matrixmultimedia.com
//************************************************************************************


#define MX_PIC

//Defines for microcontroller
#define P18F4620
#define MX_EE
#define MX_EE_TYPE3
#define MX_EE_SIZE 1024
#define MX_SPI
#define MX_SPI_C
#define MX_SPI_SDI 4
#define MX_SPI_SDO 5
#define MX_SPI_SCK 3
#define MX_UART
#define MX_UART_C
#define MX_UART_TX 6
#define MX_UART_RX 7
#define MX_I2C
#define MX_MI2C
#define MX_I2C_C
#define MX_I2C_SDA 4
#define MX_I2C_SCL 3
#define MX_PWM
#define MX_PWM_CNT 2
#define MX_PWM_TRIS1 trisc
#define MX_PWM_1 2
#define MX_PWM_TRIS2 trisc
#define MX_PWM_2 1
#define MX_PWM_TRIS2a trisb
#define MX_PWM_2a 3

//Functions
#define MX_CLK_SPEED 40000000
#ifdef _BOOSTC
#include <system.h>
#endif
#ifdef HI_TECH_C
#include <pic18.h>
#endif

//Configuration data
#ifdef _BOOSTC
#pragma DATA 0x300000, 0xff
#endif
#ifdef _BOOSTC
#pragma DATA 0x300001, 0x6
#endif
#ifdef _BOOSTC
#pragma DATA 0x300002, 0x12
#endif
#ifdef _BOOSTC
#pragma DATA 0x300003, 0x1e
#endif
#ifdef _BOOSTC
#pragma DATA 0x300004, 0xff
#endif
#ifdef _BOOSTC
#pragma DATA 0x300005, 0x81
#endif
#ifdef _BOOSTC
#pragma DATA 0x300006, 0x80
#endif
#ifdef _BOOSTC
#pragma DATA 0x300007, 0xff
#endif
#ifdef _BOOSTC
#pragma DATA 0x300008, 0xf
#endif
#ifdef _BOOSTC
#pragma DATA 0x300009, 0xc0
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000a, 0xf
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000b, 0xe0
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000c, 0xf
#endif
#ifdef _BOOSTC
#pragma DATA 0x30000d, 0x40
#endif

//Internal functions
#include "C:\Program Files\Matrix Multimedia\Flowcode V4\FCD\internals.h"

//Macro function declarations
void FCM_tas_led(char FCL_LED_NR, char FCL_AN_AUS);
void FCM_si_out(char FCL_SI_NR, char FCL_SI_AN_AUS);
void FCM_timer_int();
void FCM_eeprom_bearb();
void FCM_tas_bet(char FCL_TAS_NR);
void FCM_tas_bet_nbet(char FCL_TAS_NR);
void FCM_ee_wert_test();
void FCM_d_time(char FCL_NR, char FCL_AN_AUS, char FCL_NEUSTART);
void FCM_set_arbeit_d_time_03();
void FCM_set_arbeit_d_time_01();
void FCM_set_arbeit_d_time_02();
void FCM_diag();
void FCM_tas();
void FCM_digitime();
void FCM_se_out();
void FCM_si_out_diag();
void FCM_n_c();
void FCM_anz_eeprom();
void FCM_anz_ram_einlesen();
void FCM_se_out_diag();
void FCM_takt4_5ms();
void FCM_write_ini();
void FCM_anz_start();
void FCM_anz_text(char* PFCL_TEXT_XYZ, char FCL_X, char FCL_Y, char FCL_BYTES);
void FCM_write();
void FCM_write_com();
void FCM_anz_curpos(char FCL_CUR_X, char FCL_CUR_Y, char FCL_CUR_AN_AUS);
void FCM_symbol_ini();
void FCM_symbol_init();
void FCM_anz_sym_x(char FCL_SYM_NR, char FCL_SYM_X, char FCL_SYM_Y);
void FCM_anz_clear(char FCL_LINE_0, char FCL_LINE_1, char FCL_X, char FCL_Y, char FCL_CUR_AN_AUS);
void FCM_anz_number(short FCL_NUMB_WERT, char FCL_X, char FCL_Y, char FCL_R_B);
void FCM_digitime_int();


//Variable declarations
#define FCSZ_TEXT_102 17
#define FCSZ_TEXT_103 17
#define FCSZ_TEXT_104 17
#define FCSZ_TEXT_105 17
#define FCSZ_TEXT_106 17
#define FCSZ_TEXT_107 17
#define FCSZ_TEXT_108 17
#define FCSZ_TEXT_109 17
#define FCSZ_AAANZ 20
#define FCSZ_TEST_TEXT 16
#define FCSZ_TEXT_151 17
#define FCSZ_D_TI_ 31
#define FCSZ_TEXT_000 17
#define FCSZ_TEXT_101 17
char FCV_TEXT_102[FCSZ_TEXT_102];
char FCV_TAS[9];
short FCV_TEXT_NR_TEST_ZEILE0;
char FCV_YES;
char FCV_NO;
char FCV_TEXT_103[FCSZ_TEXT_103];
short FCV_EPROM_ADD;
short FCV_TEXT_NR_TEST_ZEILE1;
char FCV_I2_AD_BYT;
char FCV_TEXT_104[FCSZ_TEXT_104];
char FCV_TEXT_105[FCSZ_TEXT_105];
char FCV_TAS_LED_OUT_PORT;
char FCV_ZAEHLT;
char FCV_D_TIME_ANZAHL;
char FCV_NUMMER;
char FCV_RD;
char FCV_I2E_OUT7_[9];
char FCV_TEXT_106[FCSZ_TEXT_106];
char FCV_SI_OUT_PORT_1TO8;
char FCV_I2E_ADC_ALL_LESEN;
char FCV_RES_H;
char FCV_I2E_OUT6_[9];
char FCV_TEXT_107[FCSZ_TEXT_107];
char FCV_I2E_IO0_X;
char FCV_I2E_OUT5_[9];
char FCV_I2I_IO_X[9];
char FCV_IO_DISABLE;
char FCV_TEXT_108[FCSZ_TEXT_108];
char FCV_D_T_N;
char FCV_TESTBIT_HOB;
char FCV_SI_OUT_PORT_9TO16;
char FCV_SYMBOL_7_[8];
char FCV_I2E_IO1_X;
char FCV_I2E_OUT4_[9];
char FCV_TEXT_109[FCSZ_TEXT_109];
short FCV_TE_PR_SUM;
char FCV_SYMBOL_6_[8];
char FCV_I2I_IO0_X;
char FCV_I2E_IO2_X;
char FCV_I2E_OUT3_[9];
char FCV_IO_ENABLE;
short FCV_D_TIME_WERT_[31];
char FCV_JA;
char FCV_SI_OUT_PORT_17TO24;
char FCV_SYMBOL_5_[8];
char FCV_I2I_IO1_X;
char FCV_I2E_IO3_X;
char FCV_I2E_OUT2_[9];
char FCV_D_TIME_WERT_ORG_LOB_[31];
char FCV_AAANZ[FCSZ_AAANZ];
char FCV_SYMBOL_4_[8];
char FCV_SYMBOL;
char FCV_TEST_TEXT[FCSZ_TEST_TEXT];
char FCV_I2I_IO2_X;
char FCV_I2E_IO4_X;
char FCV_I2E_OUT1_[9];
char FCV_I2E_IO_X[9];
short FCV_D_TIME_WERT_ORG_[31];
char FCV_TESTBIT_LOB;
char FCV_SYMBOL_3_[8];
char FCV_I2I_IO3_X;
char FCV_I2E_IO5_X;
char FCV_OFF;
char FCV_I2E_OUT0_[9];
char FCV_TEXT_151[FCSZ_TEXT_151];
char FCV_COUNT;
char FCV_D_TI_[FCSZ_D_TI_];
char FCV_SYMBOL_2_[8];
char FCV_I2I_IO4_X;
char FCV_I2E_IO6_X;
char FCV_I2C_ACK;
char FCV_D_TIME_IST_[31];
char FCV_AUS;
char FCV_WR;
char FCV_DA_AD_N;
char FCV_SYMBOL_1_[8];
char FCV_I2I_IO5_X;
char FCV_I2E_IO7_X;
char FCV_I2I_OUT0_[9];
char FCV_N_BET;
char FCV_BET;
char FCV_AN;
char FCV_D_TIME_WERT_ORG_HOB_[31];
char FCV_NEIN;
char FCV_OK;
char FCV_ZAEHL;
char FCV_SYMBOL_0_[8];
char FCV_I2I_IO6_X;
char FCV_RAS_TAS[9];
char FCV_TEXT_XYZ_WERT;
char FCV_SPA_NR;
char FCV_TEXT_000[FCSZ_TEXT_000];
char FCV_I2I_IO7_X;
short FCV_TESTBIT;
char FCV_INT_WAR;
char FCV_AUTO;
char FCV_ON;
char FCV_I2_AD_BYTE;
char FCV_TEXT_101[FCSZ_TEXT_101];
char FCV_D_TIME_NR_[31];
char FCV_RAS_TAS_AN_AUS[9];


//Defines:

/**** Macro Substitutions ****
porta = D1 Port
trisa = D1 Data Direction
porta = D2 Port
trisa = D2 Data Direction
porta = D3 Port
trisa = D3 Data Direction
porta = D4 Port
trisa = D4 Data Direction
porta = RS Port
trisa = RS Data Direction
porta = E Port
trisa = E Data Direction
0 = Data 1_Pin
1 = Data 2 Pin
2 = Data 3 Pin
3 = Data 4 Pin
4 = RS Pin
5 = Enable Pin
LCD_1312710 = Unique Component Reference Number
2 = Row Count
16 = Column Count
******************************/

	//component connections
	#define LCD_1312710_PORT0    porta
	#define LCD_1312710_TRIS0    trisa
	#define LCD_1312710_PORT1    porta
	#define LCD_1312710_TRIS1    trisa
	#define LCD_1312710_PORT2    porta
	#define LCD_1312710_TRIS2    trisa
	#define LCD_1312710_PORT3    porta
	#define LCD_1312710_TRIS3    trisa
	#define LCD_1312710_PORT4    porta
	#define LCD_1312710_TRIS4    trisa
	#define LCD_1312710_PORT5    porta
	#define LCD_1312710_TRIS5    trisa
	#define LCD_1312710_BIT0    	0
	#define LCD_1312710_BIT1    	1
	#define LCD_1312710_BIT2    	2
	#define LCD_1312710_BIT3    	3
	#define LCD_1312710_RS      	4
	#define LCD_1312710_E       	5
	#define LCD_1312710_ROWCNT	2
	#define LCD_1312710_COLCNT	16

	#ifdef _BOOSTC
	  #define LCD_1312710_DELAY   delay_10us(10)
	#endif
	#ifdef _C2C_
	  #define LCD_1312710_DELAY   delay_us(100)
	#endif
	#ifdef HI_TECH_C
	  #define LCD_1312710_DELAY   __delay_us(120)
	#endif
	#ifndef LCD_1312710_DELAY
	  #define LCD_1312710_DELAY   delay_us(100)
	#endif




//LCDDisplay0: //Macro function declarations

void FCD_LCDDisplay0_RawSend(char in, char mask);
void FCD_LCDDisplay0_Start();
void FCD_LCDDisplay0_Clear();
void FCD_LCDDisplay0_PrintASCII(char Character);
void FCD_LCDDisplay0_Command(char in);
void FCD_LCDDisplay0_Cursor(char x, char y);
void FCD_LCDDisplay0_PrintNumber(short Number);
void FCD_LCDDisplay0_PrintString(char* String, char MSZ_String);
void FCD_LCDDisplay0_ScrollDisplay(char Direction, char Num_Positions);
void FCD_LCDDisplay0_ClearLine(char Line);
void FCD_LCDDisplay0_RAM_Write(char nIdx, char d0, char d1, char d2, char d3, char d4, char d5, char d6, char d7);
//Defines:

/**** Macro Substitutions ****
******************************/




//EEPROM0: //Macro function declarations

char FCD_EEPROM0_EEPROMRead(short addr);
void FCD_EEPROM0_WriteEEPROM(short addr, char data);



//LCDDisplay0: //Macro implementations


void FCD_LCDDisplay0_RawSend(char in, char mask)
{
		unsigned char pt;

		clear_bit(LCD_1312710_PORT0, LCD_1312710_BIT0);
		clear_bit(LCD_1312710_PORT1, LCD_1312710_BIT1);
		clear_bit(LCD_1312710_PORT2, LCD_1312710_BIT2);
		clear_bit(LCD_1312710_PORT3, LCD_1312710_BIT3);
		clear_bit(LCD_1312710_PORT4, LCD_1312710_RS);
		clear_bit(LCD_1312710_PORT5, LCD_1312710_E);
		pt = ((in >> 4) & 0x0f);
		if (pt & 0x01)
		    set_bit(LCD_1312710_PORT0, LCD_1312710_BIT0);
		if (pt & 0x02)
		    set_bit(LCD_1312710_PORT1, LCD_1312710_BIT1);
		if (pt & 0x04)
		    set_bit(LCD_1312710_PORT2, LCD_1312710_BIT2);
		if (pt & 0x08)
		    set_bit(LCD_1312710_PORT3, LCD_1312710_BIT3);
		if (mask)
		    set_bit(LCD_1312710_PORT4, LCD_1312710_RS);
		LCD_1312710_DELAY;
		set_bit (LCD_1312710_PORT5, LCD_1312710_E);
		LCD_1312710_DELAY;
		clear_bit (LCD_1312710_PORT5, LCD_1312710_E);
		pt = (in & 0x0f);
		LCD_1312710_DELAY;
		clear_bit(LCD_1312710_PORT0, LCD_1312710_BIT0);
		clear_bit(LCD_1312710_PORT1, LCD_1312710_BIT1);
		clear_bit(LCD_1312710_PORT2, LCD_1312710_BIT2);
		clear_bit(LCD_1312710_PORT3, LCD_1312710_BIT3);
		clear_bit(LCD_1312710_PORT4, LCD_1312710_RS);
		clear_bit(LCD_1312710_PORT5, LCD_1312710_E);
		if (pt & 0x01)
		    set_bit(LCD_1312710_PORT0, LCD_1312710_BIT0);
		if (pt & 0x02)
		    set_bit(LCD_1312710_PORT1, LCD_1312710_BIT1);
		if (pt & 0x04)
		    set_bit(LCD_1312710_PORT2, LCD_1312710_BIT2);
		if (pt & 0x08)
		    set_bit(LCD_1312710_PORT3, LCD_1312710_BIT3);
		if (mask)
		    set_bit(LCD_1312710_PORT4, LCD_1312710_RS);
		LCD_1312710_DELAY;
		set_bit (LCD_1312710_PORT5, LCD_1312710_E);
		LCD_1312710_DELAY;
		clear_bit (LCD_1312710_PORT5, LCD_1312710_E);
		LCD_1312710_DELAY;
}

void FCD_LCDDisplay0_Start()
{
	
		clear_bit(LCD_1312710_TRIS0, LCD_1312710_BIT0);
		clear_bit(LCD_1312710_TRIS1, LCD_1312710_BIT1);
		clear_bit(LCD_1312710_TRIS2, LCD_1312710_BIT2);
		clear_bit(LCD_1312710_TRIS3, LCD_1312710_BIT3);
		clear_bit(LCD_1312710_TRIS4, LCD_1312710_RS);
		clear_bit(LCD_1312710_TRIS5, LCD_1312710_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(char Character)
{
	
		FCD_LCDDisplay0_RawSend(Character, 0x10);

}

void FCD_LCDDisplay0_Command(char in)
{
	
		FCD_LCDDisplay0_RawSend(in, 0);
		Wdt_Delay_Ms(2);

}

void FCD_LCDDisplay0_Cursor(char x, char y)
{
	
	  #if (LCD_1312710_ROWCNT == 1)
	    y=0x80;
	  #endif

	  #if (LCD_1312710_ROWCNT == 2)
		if (y==0)
			y=0x80;
		else
			y=0xc0;
	  #endif

	  #if (LCD_1312710_ROWCNT == 4)
		if (y==0)
			y=0x80;
		else if (y==1)
			y=0xc0;

		#if (LCD_1312710_COLCNT == 16)
			else if (y==2)
				y=0x90;
			else
				y=0xd0;
		#endif

		#if (LCD_1312710_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(short Number)
{
	
		short tmp_int;
		char 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(char* String, char MSZ_String)
{
	
		char idx = 0;

		for (idx=0; idx<MSZ_String; idx++)
		{
			#ifdef _BOOSTC
				if (String[idx] == 0)
				{
					break;
				}
				FCD_LCDDisplay0_RawSend(String[idx], 0x10);
			#endif

			#ifdef HI_TECH_C
				if (*String == 0)
				{
					break;
				}
				FCD_LCDDisplay0_RawSend(*String, 0x10);
				String++;
			#endif
		}

}

void FCD_LCDDisplay0_ScrollDisplay(char Direction, char Num_Positions)
{
	
		char cmd = 0;
		char 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(char Line)
{
	
		char count;
		char rowcount;

		//Define number of columns per line
		#if (LCD_1312710_ROWCNT == 1)
			rowcount=80;
		#endif

		#if (LCD_1312710_ROWCNT == 2)
			rowcount=40;
		#endif

		#if (LCD_1312710_ROWCNT == 4)
			#if (LCD_1312710_COLCNT == 16)
				rowcount=16;
			#endif
			#if (LCD_1312710_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(char nIdx, char d0, char d1, char d2, char d3, char d4, char d5, char d6, char 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);
}



//EEPROM0: //Macro implementations


char FCD_EEPROM0_EEPROMRead(short addr)
{
		char data = 0;

		#ifdef _BOOSTC
			#ifdef MX_EE
				#ifndef MX_EEADR
					#ifdef EEADR
						#define MX_EEADR eeadr
					#endif
					#ifdef EEADRL
						#define MX_EEADR eeadrl
					#endif
				#endif
				#ifndef MX_EEDATA
					#ifdef EEDATA
						#define MX_EEDATA eedata
					#endif
					#ifdef EEDATAL
						#define MX_EEDATA eedatal
					#endif
					#ifdef EEDATL
						#define MX_EEDATA eedatl
					#endif
				#endif

				#ifndef MX_EEADR	//Catch Error
					  #pragma error EEPROM error - MX_EEADR not set
				#endif

				#ifndef MX_EEDATA
					  #pragma error EEPROM error - MX_EEDATA not set
				#endif

				MX_EEADR = addr & 0xff;
				#if (MX_EE_SIZE > 256)
					eeadrh = (addr & 0xff00) >> 8;
				#endif
				#ifdef MX_EE_TYPE2
					clear_bit(eecon1, EEPGD);
				#endif
				#ifdef MX_EE_TYPE3
					clear_bit(eecon1, EEPGD);
					clear_bit(eecon1, CFGS);
				#endif
				set_bit(eecon1, RD);
				data = MX_EEDATA;
			#else
				#ifdef MX_EE_TYPE67X
					#pragma error "FlowCode does not support EEPROM for this device"
				#else
					#ifdef MX_EE_TYPE62X
						#pragma error "FlowCode does not support EEPROM for this device"
					#else
						#pragma error "Chip does not have EEPROM memory"
					#endif
				#endif
			#endif
		#endif
		#ifdef HI_TECH_C
			data = eeprom_read(addr);
		#endif

		return (data);

}

void FCD_EEPROM0_WriteEEPROM(short addr, char data)
{
		#ifdef _BOOSTC
			#ifdef MX_EE
				#ifndef MX_EEADR
					#ifdef EEADR
						#define MX_EEADR eeadr
					#endif
					#ifdef EEADRL
						#define MX_EEADR eeadrl
					#endif
				#endif
				#ifndef MX_EEDATA
					#ifdef EEDATA
						#define MX_EEDATA eedata
					#endif
					#ifdef EEDATAL
						#define MX_EEDATA eedatal
					#endif
				#endif

				#ifndef MX_EEADR	//Catch Error
					  #pragma error EEPROM error - MX_EEADR not set
				#endif

				#ifndef MX_EEDATA
					  #pragma error EEPROM error - MX_EEDATA not set
				#endif

				char bInterruptsEnabled;

				//wait for previous EE writes to complete...
				while (test_bit(eecon1, WR));

				MX_EEADR = addr & 0xff;
				#if (MX_EE_SIZE > 256)
					eeadrh = (addr & 0xff00) >> 8;
				#endif
				MX_EEDATA = data;
				#ifdef MX_EE_TYPE2
					clear_bit(eecon1, EEPGD);
				#endif
				#ifdef MX_EE_TYPE3
					clear_bit(eecon1, EEPGD);
					clear_bit(eecon1, CFGS);
				#endif
				set_bit(eecon1, WREN);
				bInterruptsEnabled = test_bit(intcon, GIE);
				clear_bit(intcon, GIE);			//Disable Interrupts

				eecon2 = 0x55;
				eecon2 = 0xAA;
				set_bit(eecon1, WR);
				while (test_bit(eecon1, WR));	//wait for EE write to complete...

				if (bInterruptsEnabled)
					set_bit(intcon, GIE);		//Re-enable Interrupts
				clear_bit(eecon1, WREN);
			#else
				#ifdef MX_EE_TYPE67X
					#pragma error FlowCode does not support EEPROM for this device
				#else
					#ifdef MX_EE_TYPE62X
						#pragma error FlowCode does not support EEPROM for this device
					#else
						#pragma error Chip does not have EEPROM memory
					#endif
				#endif
			#endif
		#endif
		#ifdef HI_TECH_C
			eeprom_write(addr, data);
		#endif

}

//Macro implementations

void FCM_tas_led(char FCL_LED_NR, char FCL_AN_AUS)
{
	
	//Local variable definitions
	char FCL_AN;

	//Entscheidung
	//Decision: tas_led.led_nr = 0?
	if (FCL_LED_NR == 0)
	{
		//Berechnung
		//Calculation:
		//  tas_led_out_port = 0xff
		FCV_TAS_LED_OUT_PORT = 0xff;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_tas_led_A;


	}


	//Entscheidung
	//Decision: tas_led.led_nr = 3?
	if (FCL_LED_NR == 3)
	{
		//Berechnung
		//Calculation:
		//  tas_led.led_nr = 0x04
		FCL_LED_NR = 0x04;
		

	} else {
		//Entscheidung
		//Decision: tas_led.led_nr = 4?
		if (FCL_LED_NR == 4)
		{
			//Berechnung
			//Calculation:
			//  tas_led.led_nr = 0x08
			FCL_LED_NR = 0x08;
			

		} else {
			//Entscheidung
			//Decision: tas_led.led_nr = 5?
			if (FCL_LED_NR == 5)
			{
				//Berechnung
				//Calculation:
				//  tas_led.led_nr = 0x10
				FCL_LED_NR = 0x10;
				

			} else {
				//Entscheidung
				//Decision: tas_led.led_nr = 6?
				if (FCL_LED_NR == 6)
				{
					//Berechnung
					//Calculation:
					//  tas_led.led_nr = 0x20
					FCL_LED_NR = 0x20;
					

				}


			}


		}


	}


	//Entscheidung
	//Decision: tas_led.an_aus = 1?
	if (FCL_AN_AUS == 1)
	{
		//Berechnung
		//Calculation:
		//  tas_led.led_nr = NOT tas_led.led_nr
		FCL_LED_NR = ~ FCL_LED_NR;
		

		//Berechnung
		//Calculation:
		//  tas_led_out_port = tas_led_out_port AND tas_led.led_nr
		FCV_TAS_LED_OUT_PORT = FCV_TAS_LED_OUT_PORT & FCL_LED_NR;
		

	} else {
		//Berechnung
		//Calculation:
		//  tas_led_out_port = tas_led_out_port OR tas_led.led_nr
		FCV_TAS_LED_OUT_PORT = FCV_TAS_LED_OUT_PORT | FCL_LED_NR;
		

	}


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_tas_led_A:


	//wrx
	//Output: 1 -> C5
	trisc = trisc & 0xdf;
	if (1)
		portc = (portc & 0xdf) | 0x20;
	else
		portc = portc & 0xdf;


	//wr an
	//Output: 1 -> C6
	trisc = trisc & 0xbf;
	if (1)
		portc = (portc & 0xbf) | 0x40;
	else
		portc = portc & 0xbf;


	//daten
	//Output: tas_led_out_port -> PORT D
	trisd = 0x00;
	portd = FCV_TAS_LED_OUT_PORT;


	//cs1
	//Output: 1 -> PORT E
	trise = trise & 0xf8;
	porte = (porte & 0xf8) | (1 & 0x07);


	//cs0
	//Output: 0 -> PORT E
	trise = trise & 0xf8;
	porte = (porte & 0xf8) | (0 & 0x07);


}

void FCM_si_out(char FCL_SI_NR, char FCL_SI_AN_AUS)
{
	
	//Comment:
	//Wenn si_out_nr = 0
	//dann alles resetten


	//Entscheidung
	//Decision: si_out.si_nr = 0?
	if (FCL_SI_NR == 0)
	{
		//Berechnung
		//Calculation:
		//  si_out_port_1to8 = aus
		FCV_SI_OUT_PORT_1TO8 = FCV_AUS;
		

		//Output
		//Output: si_out_port_1to8 -> PORT D
		trisd = 0x00;
		portd = FCV_SI_OUT_PORT_1TO8;


		//Comment:
		//Kommentar


		//cs2 an
		//Output: 2 -> PORT E
		trise = trise & 0xf8;
		porte = (porte & 0xf8) | (2 & 0x07);


		//cs2 aus
		//Output: 0 -> PORT E
		trise = trise & 0xf8;
		porte = (porte & 0xf8) | (0 & 0x07);


		//Comment:
		//Kommentar


		//cs3 an
		//Output: 3 -> PORT E
		trise = trise & 0xf8;
		porte = (porte & 0xf8) | (3 & 0x07);


		//cs3 aus
		//Output: 0 -> PORT E
		trise = trise & 0xf8;
		porte = (porte & 0xf8) | (0 & 0x07);


	}


	//1 - 8 ?
	//Decision: ( si_out.si_nr >= 1 ) && ( si_out.si_nr <= 8 )?
	if (( FCL_SI_NR >= 1 ) && ( FCL_SI_NR <= 8 ))
	{
		//lob / hob ?
		//Decision: ( si_out.si_nr >= 1 ) && ( si_out.si_nr <= 4 )?
		if (( FCL_SI_NR >= 1 ) && ( FCL_SI_NR <= 4 ))
		{
			//rs1 ?
			//Decision: si_out.si_nr = 1?
			if (FCL_SI_NR == 1)
			{
				//an / aus
				//Decision: si_out.si_an_aus = aus?
				if (FCL_SI_AN_AUS == FCV_AUS)
				{
					//aus
					//Calculation:
					//  si_out_port_1to8 = si_out_port_1to8 AND 0b11111110
					FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 254;
					

				} else {
					//an
					//Calculation:
					//  si_out_port_1to8 = si_out_port_1to8 OR 0b00000001
					FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 1;
					

				}


			} else {
				//Entscheidung
				//Decision: si_out.si_nr = 2?
				if (FCL_SI_NR == 2)
				{
					//Entscheidung
					//Decision: si_out.si_an_aus = aus?
					if (FCL_SI_AN_AUS == FCV_AUS)
					{
						//aus
						//Calculation:
						//  si_out_port_1to8 = si_out_port_1to8 AND 0b11111101
						FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 253;
						

					} else {
						//an
						//Calculation:
						//  si_out_port_1to8 = si_out_port_1to8 OR 0b00000010
						FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 2;
						

					}


				} else {
					//Entscheidung
					//Decision: si_out.si_nr = 3?
					if (FCL_SI_NR == 3)
					{
						//Entscheidung
						//Decision: si_out.si_an_aus = aus?
						if (FCL_SI_AN_AUS == FCV_AUS)
						{
							//aus
							//Calculation:
							//  si_out_port_1to8 = si_out_port_1to8 AND 0b11111011
							FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 251;
							

						} else {
							//an
							//Calculation:
							//  si_out_port_1to8 = si_out_port_1to8 OR 0b00000100
							FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 4;
							

						}


					} else {
						//Entscheidung
						//Decision: si_out.si_nr = 4?
						if (FCL_SI_NR == 4)
						{
							//Entscheidung
							//Decision: si_out.si_an_aus = aus?
							if (FCL_SI_AN_AUS == FCV_AUS)
							{
								//aus
								//Calculation:
								//  si_out_port_1to8 = si_out_port_1to8 AND 0b11110111
								FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 247;
								

							} else {
								//an
								//Calculation:
								//  si_out_port_1to8 = si_out_port_1to8 OR 0b00001000
								FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 8;
								

							}


						}


					}


				}


			}


		} else {
			//Entscheidung
			//Decision: si_out.si_nr = 5?
			if (FCL_SI_NR == 5)
			{
				//Entscheidung
				//Decision: si_out.si_an_aus = aus?
				if (FCL_SI_AN_AUS == FCV_AUS)
				{
					//aus
					//Calculation:
					//  si_out_port_1to8 = si_out_port_1to8 AND 0b11101111
					FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 239;
					

				} else {
					//an
					//Calculation:
					//  si_out_port_1to8 = si_out_port_1to8 OR 0b00010000
					FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 16;
					

				}


			} else {
				//Entscheidung
				//Decision: si_out.si_nr = 6?
				if (FCL_SI_NR == 6)
				{
					//Entscheidung
					//Decision: si_out.si_an_aus = aus?
					if (FCL_SI_AN_AUS == FCV_AUS)
					{
						//aus
						//Calculation:
						//  si_out_port_1to8 = si_out_port_1to8 AND 0b11011111
						FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 223;
						

					} else {
						//an
						//Calculation:
						//  si_out_port_1to8 = si_out_port_1to8 OR 0b00100000
						FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 32;
						

					}


				} else {
					//Entscheidung
					//Decision: si_out.si_nr = 7?
					if (FCL_SI_NR == 7)
					{
						//Entscheidung
						//Decision: si_out.si_an_aus = aus?
						if (FCL_SI_AN_AUS == FCV_AUS)
						{
							//aus
							//Calculation:
							//  si_out_port_1to8 = si_out_port_1to8 AND 0b10111111
							FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 191;
							

						} else {
							//an
							//Calculation:
							//  si_out_port_1to8 = si_out_port_1to8 OR 0b01000000
							FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 64;
							

						}


					} else {
						//Entscheidung
						//Decision: si_out.si_nr = 8?
						if (FCL_SI_NR == 8)
						{
							//Entscheidung
							//Decision: si_out.si_an_aus = aus?
							if (FCL_SI_AN_AUS == FCV_AUS)
							{
								//aus
								//Calculation:
								//  si_out_port_1to8 = si_out_port_1to8 AND 0b01111111
								FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 & 127;
								

							} else {
								//an
								//Calculation:
								//  si_out_port_1to8 = si_out_port_1to8 OR 0b10000000
								FCV_SI_OUT_PORT_1TO8 = FCV_SI_OUT_PORT_1TO8 | 128;
								

							}


						}


					}


				}


			}


		}


	}


	//Comment:
	//ausgeben cs2


	//wrx 
	//Output: 1 -> C5
	trisc = trisc & 0xdf;
	if (1)
		portc = (portc & 0xdf) | 0x20;
	else
		portc = portc & 0xdf;


	//rd
	//Output: 1 -> C6
	trisc = trisc & 0xbf;
	if (1)
		portc = (portc & 0xbf) | 0x40;
	else
		portc = portc & 0xbf;


	//Output
	//Output: si_out_port_1to8 -> PORT D
	trisd = 0x00;
	portd = FCV_SI_OUT_PORT_1TO8;


	//cs2
	//Output: 2 -> PORT E
	trise = trise & 0xf8;
	porte = (porte & 0xf8) | (2 & 0x07);


	//cs0
	//Output: 0 -> PORT E
	trise = trise & 0xf8;
	porte = (porte & 0xf8) | (0 & 0x07);


}

void FCM_timer_int()
{
	
	//teiler des taktes
	//Decision: d_time_wert_[0] <> 2?
	if (FCV_D_TIME_WERT_[0] != 2)
	{
		//durch 2
		//Calculation:
		//  d_time_wert_[0] = d_time_wert_[0] + 1
		FCV_D_TIME_WERT_[0] = FCV_D_TIME_WERT_[0] + 1;
		

	} else {
		//Berechnung
		//Calculation:
		//  d_time_wert_[0] = 0
		//  int_war = ja
		FCV_D_TIME_WERT_[0] = 0;
		FCV_INT_WAR = FCV_JA;
		

	}


}

void FCM_eeprom_bearb()
{
	
	//Berechnung
	//Calculation:
	//  eprom_add = 0
	FCV_EPROM_ADD = 0;
	

	//Makro-Aufruf
	//Call Macro: tas
	FCM_tas();


	//Entscheidung
	//Decision: tas[5] = bet?
	if (FCV_TAS[5] == FCV_BET)
	{
		//Comment:
		//eeprom: 00
		// 


		//Aufruf Komponenten-Makro
		//Call Component Macro: EEPROM(0)::Write(eprom_add, 00)
		FCD_EEPROM0_WriteEEPROM(FCV_EPROM_ADD, 00);


		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_eeprom_bearb_A;


	}


	//Comment:
	//eeprom setzen
	//add 0x380 = 0


	//Aufruf Komponenten-Makro
	//Call Component Macro: testbit=EEPROM(0)::Read(eprom_add)
	FCV_TESTBIT = FCD_EEPROM0_EEPROMRead(FCV_EPROM_ADD);


	//Entscheidung
	//Decision: testbit = 0?
	if (FCV_TESTBIT == 0)
	{
		//Verbindungspunkt
		//Connection Point: [A]: A
FCC_eeprom_bearb_A:


		//Makro-Aufruf
		//Call Macro: anz_text("EEprom setzen  >>>", 0, 0, auto)
		FCM_anz_text("EEprom setzen  >>>", 0, 0, FCV_AUTO);


		//Bitte warten
		//Call Macro: anz_text(text_151, 0, 1, auto)
		FCM_anz_text(FCV_TEXT_151, 0, 1, FCV_AUTO);


		//Aufruf Komponenten-Makro
		//Call Component Macro: EEPROM(0)::Write(eprom_add, 0x88)
		FCD_EEPROM0_WriteEEPROM(FCV_EPROM_ADD, 0x88);


		//Warten
		//Delay: 3 s
		delay_s(3);


		//Berechnung
		//Calculation:
		//  eprom_add = 1
		//  count = 1
		FCV_EPROM_ADD = 1;
		FCV_COUNT = 1;
		

		//Verbindungspunkt
		//Connection Point: [B]: B
FCC_eeprom_bearb_B:


		//Aufruf Komponenten-Makro
		//Call Component Macro: EEPROM(0)::Write(eprom_add, d_time_wert_org_hob_[count])
		FCD_EEPROM0_WriteEEPROM(FCV_EPROM_ADD, FCV_D_TIME_WERT_ORG_HOB_[FCV_COUNT]);


		//Berechnung
		//Calculation:
		//  eprom_add = eprom_add + 1
		FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
		

		//Aufruf Komponenten-Makro
		//Call Component Macro: EEPROM(0)::Write(eprom_add, d_time_wert_org_lob_[count])
		FCD_EEPROM0_WriteEEPROM(FCV_EPROM_ADD, FCV_D_TIME_WERT_ORG_LOB_[FCV_COUNT]);


		//Entscheidung
		//Decision: count = 31?
		if (FCV_COUNT == 31)
		{
		} else {
			//Berechnung
			//Calculation:
			//  count = count + 1
			//  eprom_add = eprom_add + 1
			FCV_COUNT = FCV_COUNT + 1;
			FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
			

			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_eeprom_bearb_B;


		}


	}


	//Comment:
	//eeprom in ram lesen


	//Makro-Aufruf
	//Call Macro: anz_text("Ram einlesen >>> ", 0, 0, auto)
	FCM_anz_text("Ram einlesen >>> ", 0, 0, FCV_AUTO);


	//Makro-Aufruf
	//Call Macro: anz_text("bitte warten !", 0, 1, auto)
	FCM_anz_text("bitte warten !", 0, 1, FCV_AUTO);


	//Warten
	//Delay: 3 s
	delay_s(3);


	//Berechnung
	//Calculation:
	//  count = 0
	//  eprom_add = 0x0
	FCV_COUNT = 0;
	FCV_EPROM_ADD = 0x0;
	

	//0x88 nach 0
	//Call Component Macro: testbit_hob=EEPROM(0)::Read(eprom_add)
	FCV_TESTBIT_HOB = FCD_EEPROM0_EEPROMRead(FCV_EPROM_ADD);


	//Berechnung
	//Calculation:
	//  d_time_wert_org_[count] = testbit_hob
	//  count = count + 1
	//  eprom_add = eprom_add + 1
	FCV_D_TIME_WERT_ORG_[FCV_COUNT] = FCV_TESTBIT_HOB;
	FCV_COUNT = FCV_COUNT + 1;
	FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
	

	//Verbindungspunkt
	//Connection Point: [C]: C
FCC_eeprom_bearb_C:


	//Aufruf Komponenten-Makro
	//Call Component Macro: testbit_hob=EEPROM(0)::Read(eprom_add)
	FCV_TESTBIT_HOB = FCD_EEPROM0_EEPROMRead(FCV_EPROM_ADD);


	//Berechnung
	//Calculation:
	//  eprom_add = eprom_add + 1
	FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
	

	//Aufruf Komponenten-Makro
	//Call Component Macro: testbit_lob=EEPROM(0)::Read(eprom_add)
	FCV_TESTBIT_LOB = FCD_EEPROM0_EEPROMRead(FCV_EPROM_ADD);


	//Entscheidung
	//Decision: count = 31?
	if (FCV_COUNT == 31)
	{
	} else {
		//Berechnung
		//Calculation:
		//  d_time_wert_org_[count] = testbit_lob + ( testbit_hob * 100 )
		//  count = count + 1
		//  eprom_add = eprom_add + 1
		FCV_D_TIME_WERT_ORG_[FCV_COUNT] = FCV_TESTBIT_LOB + ( FCV_TESTBIT_HOB * 100 );
		FCV_COUNT = FCV_COUNT + 1;
		FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [C]: C
		goto FCC_eeprom_bearb_C;


	}


	//Makro-Aufruf
	//Call Macro: anz_clear(ja, ja, 0, 0, nein)
	FCM_anz_clear(FCV_JA, FCV_JA, 0, 0, FCV_NEIN);


}

void FCM_tas_bet(char FCL_TAS_NR)
{
	
	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_tas_bet_A:


	//Makro-Aufruf
	//Call Macro: tas
	FCM_tas();


	//Entscheidung
	//Decision: tas[tas_bet.Tas_nr] = bet?
	if (FCV_TAS[FCL_TAS_NR] == FCV_BET)
	{
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_tas_bet_A;


	}


}

void FCM_tas_bet_nbet(char FCL_TAS_NR)
{
	
	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_tas_bet_nbet_A:


	//Makro-Aufruf
	//Call Macro: tas
	FCM_tas();


	//Entscheidung
	//Decision: tas[tas_bet_nbet.tas_nr] = bet?
	if (FCV_TAS[FCL_TAS_NR] == FCV_BET)
	{
		//Verbindungspunkt
		//Connection Point: [B]: B
FCC_tas_bet_nbet_B:


		//Makro-Aufruf
		//Call Macro: tas
		FCM_tas();


		//Entscheidung
		//Decision: tas[tas_bet_nbet.tas_nr] = bet?
		if (FCV_TAS[FCL_TAS_NR] == FCV_BET)
		{
			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_tas_bet_nbet_B;


		}


	} else {
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_tas_bet_nbet_A;


	}


}

void FCM_ee_wert_test()
{
	
	//Berechnung
	//Calculation:
	//  eprom_add = 1
	//  count = 1
	FCV_EPROM_ADD = 1;
	FCV_COUNT = 1;
	

	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_ee_wert_test_A:


	//Aufruf Komponenten-Makro
	//Call Component Macro: 
	//No code generated because there is no macro name



	//Aufruf Komponenten-Makro
	//Call Component Macro: EEPROM(0)::Write(eprom_add, d_time_wert_org_hob_[count])
	FCD_EEPROM0_WriteEEPROM(FCV_EPROM_ADD, FCV_D_TIME_WERT_ORG_HOB_[FCV_COUNT]);


	//Berechnung
	//Calculation:
	//  eprom_add = eprom_add + 1
	FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
	

	//Aufruf Komponenten-Makro
	//Call Component Macro: EEPROM(0)::Write(eprom_add, d_time_wert_org_lob_[count])
	FCD_EEPROM0_WriteEEPROM(FCV_EPROM_ADD, FCV_D_TIME_WERT_ORG_LOB_[FCV_COUNT]);


	//Entscheidung
	//Decision: count = 31?
	if (FCV_COUNT == 31)
	{
	} else {
		//Berechnung
		//Calculation:
		//  count = count + 1
		//  eprom_add = eprom_add + 1
		FCV_COUNT = FCV_COUNT + 1;
		FCV_EPROM_ADD = FCV_EPROM_ADD + 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_ee_wert_test_A;


	}


}

void FCM_d_time(char FCL_NR, char FCL_AN_AUS, char FCL_NEUSTART)
{
	
	//Entscheidung
	//Decision: d_time_nr_[d_time.nr] = an?
	if (FCV_D_TIME_NR_[FCL_NR] == FCV_AN)
	{
		//digi timer 1 ok
		//Decision: d_time_wert_[d_time.nr] = aus?
		if (FCV_D_TIME_WERT_[FCL_NR] == FCV_AUS)
		{
			//zählerzustand
			//Calculation:
			//  d_time_ist_[d_time.nr] = 0
			FCV_D_TIME_IST_[FCL_NR] = 0;
			

		} else {
			//zählerzustand
			//Calculation:
			//  d_time_ist_[d_time.nr] = 1
			FCV_D_TIME_IST_[FCL_NR] = 1;
			

		}


	} else {
		//Berechnung
		//Calculation:
		//  d_time_nr_[d_time.nr] = an
		//  d_time_wert_[d_time.nr] = d_time_wert_org_[d_time.nr]
		FCV_D_TIME_NR_[FCL_NR] = FCV_AN;
		FCV_D_TIME_WERT_[FCL_NR] = FCV_D_TIME_WERT_ORG_[FCL_NR];
		

		//zählerzustand
		//Calculation:
		//  d_time_ist_[d_time.nr] = 2
		FCV_D_TIME_IST_[FCL_NR] = 2;
		

	}


}

void FCM_set_arbeit_d_time_03()
{
	
	//Comment:
	//muss enthalten sein !!!!!!!!


	//Berechnung
	//Calculation:
	//  d_time_ist_[3] = 1
	FCV_D_TIME_IST_[3] = 1;
	

	//Comment:
	//user code


	//Makro-Aufruf
	//Call Macro: si_out(2, an)
	FCM_si_out(2, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(4, an)
	FCM_si_out(4, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(6, an)
	FCM_si_out(6, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(8, an)
	FCM_si_out(8, FCV_AN);


	//Comment:
	//user code


	//Makro-Aufruf
	//Call Macro: si_out(1, aus)
	FCM_si_out(1, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(3, aus)
	FCM_si_out(3, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(5, aus)
	FCM_si_out(5, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(7, aus)
	FCM_si_out(7, FCV_AUS);


}

void FCM_set_arbeit_d_time_01()
{
	
	//Comment:
	//muss enthalten sein !!!!!!


	//Berechnung
	//Calculation:
	//  d_time_ist_[1] = 1
	FCV_D_TIME_IST_[1] = 1;
	

	//Comment:
	//user code


	//Makro-Aufruf
	//Call Macro: si_out(2, an)
	FCM_si_out(2, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(4, an)
	FCM_si_out(4, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(6, an)
	FCM_si_out(6, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(8, an)
	FCM_si_out(8, FCV_AN);


	//Comment:
	//user code


	//Makro-Aufruf
	//Call Macro: si_out(1, aus)
	FCM_si_out(1, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(3, aus)
	FCM_si_out(3, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(5, aus)
	FCM_si_out(5, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(7, aus)
	FCM_si_out(7, FCV_AUS);


}

void FCM_set_arbeit_d_time_02()
{
	
	//Comment:
	//muss enthalten sein !!!!!!


	//Berechnung
	//Calculation:
	//  d_time_ist_[2] = 1
	FCV_D_TIME_IST_[2] = 1;
	

	//Comment:
	//user code


	//Makro-Aufruf
	//Call Macro: si_out(2, aus)
	FCM_si_out(2, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(4, aus)
	FCM_si_out(4, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(6, aus)
	FCM_si_out(6, FCV_AUS);


	//Makro-Aufruf
	//Call Macro: si_out(8, aus)
	FCM_si_out(8, FCV_AUS);


	//Comment:
	//user code


	//Makro-Aufruf
	//Call Macro: si_out(1, an)
	FCM_si_out(1, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(3, an)
	FCM_si_out(3, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(5, an)
	FCM_si_out(5, FCV_AN);


	//Makro-Aufruf
	//Call Macro: si_out(7, an)
	FCM_si_out(7, FCV_AN);


}

void FCM_diag()
{
	
	//Local variable definitions
	char FCL_PROG_ART;
	char FCL_EINSPRUNG;

	//Berechnung
	//Calculation:
	//  diag.prog_art = 1
	FCL_PROG_ART = 1;
	

	//Makro-Aufruf
	//Call Macro: tas
	FCM_tas();


	//nach diag wechseln ?
	//Decision: tas[7] = bet?
	if (FCV_TAS[7] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: anz_text("Diag:", 0, 0, auto)
		FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


		//Makro-Aufruf
		//Call Macro: anz_text(text_101, 5, 0, auto)
		FCM_anz_text(FCV_TEXT_101, 5, 0, FCV_AUTO);


		//Makro-Aufruf
		//Call Macro: anz_number(tas[7], 0, 1, nein)
		FCM_anz_number(FCV_TAS[7], 0, 1, FCV_NEIN);


		//Makro-Aufruf
		//Call Macro: tas_bet(7)
		FCM_tas_bet(7);


		//Verbindungspunkt
		//Connection Point: [A]: A
FCC_diag_A:


		//Makro-Aufruf
		//Call Macro: tas
		FCM_tas();


		//Entscheidung
		//Decision: diag.prog_art = 1?
		if (FCL_PROG_ART == 1)
		{
		} else {
			//Entscheidung
			//Decision: diag.prog_art = 2?
			if (FCL_PROG_ART == 2)
			{
				//Entscheidung
				//Decision: tas[7] = bet?
				if (FCV_TAS[7] == FCV_BET)
				{
					//digi_time
					//Call Macro: digitime
					FCM_digitime();


				}


			} else {
				//Entscheidung
				//Decision: diag.prog_art = 3?
				if (FCL_PROG_ART == 3)
				{
					//Entscheidung
					//Decision: tas[7] = bet?
					if (FCV_TAS[7] == FCV_BET)
					{
						//si_out_diag
						//Call Macro: si_out_diag
						FCM_si_out_diag();


					}


				} else {
					//Entscheidung
					//Decision: diag.prog_art = 4?
					if (FCL_PROG_ART == 4)
					{
						//Entscheidung
						//Decision: tas[7] = bet?
						if (FCV_TAS[7] == FCV_BET)
						{
							//se_out_diag
							//Call Macro: se_out_diag
							FCM_se_out_diag();


						}


					} else {
						//Entscheidung
						//Decision: diag.prog_art = 5?
						if (FCL_PROG_ART == 5)
						{
							//Entscheidung
							//Decision: tas[7] = bet?
							if (FCV_TAS[7] == FCV_BET)
							{
								//n_c
								//Call Macro: n_c
								FCM_n_c();


							}


						} else {
							//Entscheidung
							//Decision: diag.prog_art = 6?
							if (FCL_PROG_ART == 6)
							{
								//Entscheidung
								//Decision: tas[7] = bet?
								if (FCV_TAS[7] == FCV_BET)
								{
									//n_c
									//Call Macro: n_c
									FCM_n_c();


								}


							} else {
								//Entscheidung
								//Decision: diag.prog_art = 7?
								if (FCL_PROG_ART == 7)
								{
									//Entscheidung
									//Decision: tas[7] = bet?
									if (FCV_TAS[7] == FCV_BET)
									{
										//n_c
										//Call Macro: n_c
										FCM_n_c();


									}


								} else {
									//Entscheidung
									//Decision: diag.prog_art = 8?
									if (FCL_PROG_ART == 8)
									{
										//Entscheidung
										//Decision: tas[7] = bet?
										if (FCV_TAS[7] == FCV_BET)
										{
											//n_c
											//Call Macro: n_c
											FCM_n_c();


										}


									} else {
										//Entscheidung
										//Decision: diag.prog_art = 9?
										if (FCL_PROG_ART == 9)
										{
											//Entscheidung
											//Decision: tas[7] = bet?
											if (FCV_TAS[7] == FCV_BET)
											{
												//n_c
												//Call Macro: n_c
												FCM_n_c();


											}


										}


									}


								}


							}


						}


					}


				}


			}


		}


		//Entscheidung
		//Decision: tas[3] = bet?
		if (FCV_TAS[3] == FCV_BET)
		{
			//Entscheidung
			//Decision: diag.prog_art = 9?
			if (FCL_PROG_ART == 9)
			{
				//Berechnung
				//Calculation:
				//  diag.prog_art = 1
				FCL_PROG_ART = 1;
				

			} else {
				//Berechnung
				//Calculation:
				//  diag.prog_art = diag.prog_art + 1
				FCL_PROG_ART = FCL_PROG_ART + 1;
				

			}


			//Verbindungspunkt
			//Connection Point: [B]: B
FCC_diag_B:


			//Entscheidung
			//Decision: diag.prog_art = 1?
			if (FCL_PROG_ART == 1)
			{
				//Makro-Aufruf
				//Call Macro: anz_text("Diag:", 0, 0, auto)
				FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


				//Makro-Aufruf
				//Call Macro: anz_text(text_101, 5, 0, auto)
				FCM_anz_text(FCV_TEXT_101, 5, 0, FCV_AUTO);


				//Makro-Aufruf
				//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
				FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


			} else {
				//Entscheidung
				//Decision: diag.prog_art = 2?
				if (FCL_PROG_ART == 2)
				{
					//Makro-Aufruf
					//Call Macro: anz_text("Diag:", 0, 0, auto)
					FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


					//Makro-Aufruf
					//Call Macro: anz_text(text_102, 5, 0, auto)
					FCM_anz_text(FCV_TEXT_102, 5, 0, FCV_AUTO);


					//Makro-Aufruf
					//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
					FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


				} else {
					//Entscheidung
					//Decision: diag.prog_art = 3?
					if (FCL_PROG_ART == 3)
					{
						//Makro-Aufruf
						//Call Macro: anz_text("Diag:", 0, 0, auto)
						FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


						//Makro-Aufruf
						//Call Macro: anz_text(text_103, 5, 0, auto)
						FCM_anz_text(FCV_TEXT_103, 5, 0, FCV_AUTO);


						//Makro-Aufruf
						//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
						FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


					} else {
						//Entscheidung
						//Decision: diag.prog_art = 4?
						if (FCL_PROG_ART == 4)
						{
							//Makro-Aufruf
							//Call Macro: anz_text("Diag:", 0, 0, auto)
							FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


							//Makro-Aufruf
							//Call Macro: anz_text(text_104, 5, 0, auto)
							FCM_anz_text(FCV_TEXT_104, 5, 0, FCV_AUTO);


							//Makro-Aufruf
							//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
							FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


						} else {
							//Entscheidung
							//Decision: diag.prog_art = 5?
							if (FCL_PROG_ART == 5)
							{
								//Makro-Aufruf
								//Call Macro: anz_text("Diag:", 0, 0, auto)
								FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


								//Makro-Aufruf
								//Call Macro: anz_text(text_105, 5, 0, auto)
								FCM_anz_text(FCV_TEXT_105, 5, 0, FCV_AUTO);


								//Makro-Aufruf
								//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
								FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


							} else {
								//Entscheidung
								//Decision: diag.prog_art = 6?
								if (FCL_PROG_ART == 6)
								{
									//Makro-Aufruf
									//Call Macro: anz_text("Diag:", 0, 0, auto)
									FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


									//Makro-Aufruf
									//Call Macro: anz_text(text_106, 5, 0, auto)
									FCM_anz_text(FCV_TEXT_106, 5, 0, FCV_AUTO);


									//Makro-Aufruf
									//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
									FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


								} else {
									//Entscheidung
									//Decision: diag.prog_art = 7?
									if (FCL_PROG_ART == 7)
									{
										//Makro-Aufruf
										//Call Macro: anz_text("Diag:", 0, 0, auto)
										FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


										//Makro-Aufruf
										//Call Macro: anz_text(text_107, 5, 0, auto)
										FCM_anz_text(FCV_TEXT_107, 5, 0, FCV_AUTO);


										//Makro-Aufruf
										//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
										FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


									} else {
										//Entscheidung
										//Decision: diag.prog_art = 8?
										if (FCL_PROG_ART == 8)
										{
											//Makro-Aufruf
											//Call Macro: anz_text("Diag:", 0, 0, auto)
											FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


											//Makro-Aufruf
											//Call Macro: anz_text(text_108, 5, 0, auto)
											FCM_anz_text(FCV_TEXT_108, 5, 0, FCV_AUTO);


											//Makro-Aufruf
											//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
											FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


										} else {
											//Entscheidung
											//Decision: diag.prog_art = 9?
											if (FCL_PROG_ART == 9)
											{
												//Makro-Aufruf
												//Call Macro: anz_text("Diag:", 0, 0, auto)
												FCM_anz_text("Diag:", 0, 0, FCV_AUTO);


												//Makro-Aufruf
												//Call Macro: anz_text(text_109, 5, 0, auto)
												FCM_anz_text(FCV_TEXT_109, 5, 0, FCV_AUTO);


												//Makro-Aufruf
												//Call Macro: anz_number(diag.prog_art, 0, 1, nein)
												FCM_anz_number(FCL_PROG_ART, 0, 1, FCV_NEIN);


											}


										}


									}


								}


							}


						}


					}


				}


			}


			//Makro-Aufruf
			//Call Macro: tas_bet(3)
			FCM_tas_bet(3);


			//Makro-Aufruf
			//Call Macro: tas_bet(8)
			FCM_tas_bet(8);


		} else {
			//Entscheidung
			//Decision: tas[8] = bet?
			if (FCV_TAS[8] == FCV_BET)
			{
				//Entscheidung
				//Decision: diag.prog_art = 1?
				if (FCL_PROG_ART == 1)
				{
					//Berechnung
					//Calculation:
					//  diag.prog_art = 9
					FCL_PROG_ART = 9;
					

				} else {
					//Berechnung
					//Calculation:
					//  diag.prog_art = diag.prog_art - 1
					FCL_PROG_ART = FCL_PROG_ART - 1;
					

				}


				//Gehe zum Verbindungspunkt
				//Goto Connection Point: [B]: B
				goto FCC_diag_B;


			}


		}


		//Entscheidung
		//Decision: tas[7] = bet?
		if (FCV_TAS[7] == FCV_BET)
		{
		} else {
			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_diag_A;


		}


	}


}

void FCM_tas()
{
	
	//Local variable definitions
	char FCL_IN_PORT;
	char FCL_TAS_NR;
	char FCL_TAS_IN_WERT;

	//wrx
	//Output: 1 -> C5
	trisc = trisc & 0xdf;
	if (1)
		portc = (portc & 0xdf) | 0x20;
	else
		portc = portc & 0xdf;


	//rd an
	//Output: 0 -> C6
	trisc = trisc & 0xbf;
	if (0)
		portc = (portc & 0xbf) | 0x40;
	else
		portc = portc & 0xbf;


	//cs1
	//Output: 1 -> PORT E
	trise = trise & 0xf8;
	porte = (porte & 0xf8) | (1 & 0x07);


	//Warten
	//Delay: 100 us
	delay_us(100);


	//tastatur lesen
	//Input: PORT D -> tas.in_port
	trisd = trisd | 0xff;
	FCL_IN_PORT = portd;


	//cs0
	//Output: 0 -> PORT E
	trise = trise & 0xfc;
	porte = (porte & 0xfc) | (0 & 0x03);


	//wr an
	//Output: 1 -> C6
	trisc = trisc & 0xbf;
	if (1)
		portc = (portc & 0xbf) | 0x40;
	else
		portc = portc & 0xbf;


	//Berechnung
	//Calculation:
	//  tas.in_port = tas.in_port XOR 0xff
	//  tas.tas_nr = 1
	FCL_IN_PORT = FCL_IN_PORT ^ 0xff;
	FCL_TAS_NR = 1;
	

	//Gehe zum Verbindungspunkt
	//Goto Connection Point: [B]: B
	goto FCC_tas_B;


	//Verbindungspunkt
	//Connection Point: [C]: C
FCC_tas_C:


	//Berechnung
	//Calculation:
	//  tas.in_port = tas.in_port >> 1
	FCL_IN_PORT = FCL_IN_PORT >> 1;
	

	//Verbindungspunkt
	//Connection Point: [B]: B
FCC_tas_B:


	//Berechnung
	//Calculation:
	//  tas.tas_in_wert = tas.in_port AND 0x01
	FCL_TAS_IN_WERT = FCL_IN_PORT & 0x01;
	

	//Entscheidung
	//Decision: tas.tas_in_wert = 0?
	if (FCL_TAS_IN_WERT == 0)
	{
		//Berechnung
		//Calculation:
		//  tas[tas.tas_nr] = n_bet
		//  ras_tas_an_aus[tas.tas_nr] = aus
		FCV_TAS[FCL_TAS_NR] = FCV_N_BET;
		FCV_RAS_TAS_AN_AUS[FCL_TAS_NR] = FCV_AUS;
		

	} else {
		//Berechnung
		//Calculation:
		//  tas[tas.tas_nr] = bet
		FCV_TAS[FCL_TAS_NR] = FCV_BET;
		

		//Entscheidung
		//Decision: ras_tas_an_aus[tas.tas_nr] = an?
		if (FCV_RAS_TAS_AN_AUS[FCL_TAS_NR] == FCV_AN)
		{
			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_tas_A;


		}


		//Entscheidung
		//Decision: ras_tas[tas.tas_nr] = an?
		if (FCV_RAS_TAS[FCL_TAS_NR] == FCV_AN)
		{
			//Berechnung
			//Calculation:
			//  ras_tas[tas.tas_nr] = aus
			FCV_RAS_TAS[FCL_TAS_NR] = FCV_AUS;
			

		} else {
			//Berechnung
			//Calculation:
			//  ras_tas[tas.tas_nr] = an
			FCV_RAS_TAS[FCL_TAS_NR] = FCV_AN;
			

		}


		//Berechnung
		//Calculation:
		//  ras_tas_an_aus[tas.tas_nr] = an
		FCV_RAS_TAS_AN_AUS[FCL_TAS_NR] = FCV_AN;
		

		//Verbindungspunkt
		//Connection Point: [A]: A
FCC_tas_A:


	}


	//Entscheidung
	//Decision: tas.tas_nr = 9?
	if (FCL_TAS_NR == 9)
	{
	} else {
		//Berechnung
		//Calculation:
		//  tas.tas_nr = tas.tas_nr + 1
		FCL_TAS_NR = FCL_TAS_NR + 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [C]: C
		goto FCC_tas_C;


	}


}

void FCM_digitime()
{
	
	//Makro-Aufruf
	//Call Macro: anz_text("nr:01  wert:", 0, 1, auto)
	FCM_anz_text("nr:01  wert:", 0, 1, FCV_AUTO);


	//Entscheidung
	//Decision: d_time_wert_org_hob_[1] > 0?
	if (FCV_D_TIME_WERT_ORG_HOB_[1] > 0)
	{
		//Makro-Aufruf
		//Call Macro: anz_number(d_time_wert_org_hob_[1], 12, 1, ja)
		FCM_anz_number(FCV_D_TIME_WERT_ORG_HOB_[1], 12, 1, FCV_JA);


	} else {
		//Makro-Aufruf
		//Call Macro: anz_text("00", 12, 1, auto)
		FCM_anz_text("00", 12, 1, FCV_AUTO);


	}


	//Makro-Aufruf
	//Call Macro: anz_number(d_time_wert_org_lob_[1], 14, 1, ja)
	FCM_anz_number(FCV_D_TIME_WERT_ORG_LOB_[1], 14, 1, FCV_JA);


	//Makro-Aufruf
	//Call Macro: anz_curpos(4, 1, an)
	FCM_anz_curpos(4, 1, FCV_AN);


	//Makro-Aufruf
	//Call Macro: tas_bet(7)
	FCM_tas_bet(7);


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_digitime_A:


	//Gehe zum Verbindungspunkt
	//Goto Connection Point: [A]: A
	goto FCC_digitime_A;


}

void FCM_se_out()
{
	
}

void FCM_si_out_diag()
{
	
	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::Cursor(0, 1)
	FCD_LCDDisplay0_Cursor(0, 1);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::PrintString("nr:01  ist:      ")
	FCD_LCDDisplay0_PrintString("nr:01  ist:      ",17);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::Cursor(13, 1)
	FCD_LCDDisplay0_Cursor(13, 1);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::PrintString("aus")
	FCD_LCDDisplay0_PrintString("aus",3);


	//cursor an
	//Call Component Macro: LCDDisplay(0)::Command(0x0f)
	FCD_LCDDisplay0_Command(0x0f);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::Cursor(4, 1)
	FCD_LCDDisplay0_Cursor(4, 1);


	//Makro-Aufruf
	//Call Macro: tas_bet(7)
	FCM_tas_bet(7);


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_si_out_diag_A:


	//Gehe zum Verbindungspunkt
	//Goto Connection Point: [A]: A
	goto FCC_si_out_diag_A;


}

void FCM_n_c()
{
	
}

void FCM_anz_eeprom()
{
	
}

void FCM_anz_ram_einlesen()
{
	
}

void FCM_se_out_diag()
{
	
	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::Cursor(0, 1)
	FCD_LCDDisplay0_Cursor(0, 1);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::PrintString("nr:01  ist:      ")
	FCD_LCDDisplay0_PrintString("nr:01  ist:      ",17);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::Cursor(13, 1)
	FCD_LCDDisplay0_Cursor(13, 1);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::PrintString("aus")
	FCD_LCDDisplay0_PrintString("aus",3);


	//cursor an
	//Call Component Macro: LCDDisplay(0)::Command(0x0f)
	FCD_LCDDisplay0_Command(0x0f);


	//Aufruf Komponenten-Makro
	//Call Component Macro: LCDDisplay(0)::Cursor(4, 1)
	FCD_LCDDisplay0_Cursor(4, 1);


	//Makro-Aufruf
	//Call Macro: tas_bet(7)
	FCM_tas_bet(7);


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_se_out_diag_A:


	//Gehe zum Verbindungspunkt
	//Goto Connection Point: [A]: A
	goto FCC_se_out_diag_A;


}

void FCM_takt4_5ms()
{
	
	//Berechnung
	//Calculation:
	//  zaehl = 10
	FCV_ZAEHL = 10;
	

	//Verbindungspunkt
	//Connection Point: [B]: B
FCC_takt4_5ms_B:


	//Berechnung
	//Calculation:
	//  nummer = 0xff
	FCV_NUMMER = 0xff;
	

	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_takt4_5ms_A:


	//Entscheidung
	//Decision: nummer <> 0?
	if (FCV_NUMMER != 0)
	{
		//Berechnung
		//Calculation:
		//  nummer = nummer - 1
		FCV_NUMMER = FCV_NUMMER - 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_takt4_5ms_A;


	} else {
		//Entscheidung
		//Decision: zaehl <> 0?
		if (FCV_ZAEHL != 0)
		{
			//Berechnung
			//Calculation:
			//  zaehl = zaehl - 1
			FCV_ZAEHL = FCV_ZAEHL - 1;
			

			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_takt4_5ms_B;


		}


	}


}

void FCM_write_ini()
{
	
	//Comment:
	//rs = 0


	//Output
	//Output: 0 -> A4
	trisa = trisa & 0xef;
	if (0)
		porta = (porta & 0xef) | 0x10;
	else
		porta = porta & 0xef;


	//Output
	//Output: 1 -> A5
	trisa = trisa & 0xdf;
	if (1)
		porta = (porta & 0xdf) | 0x20;
	else
		porta = porta & 0xdf;


	//Output
	//Output: 0 -> A5
	trisa = trisa & 0xdf;
	if (0)
		porta = (porta & 0xdf) | 0x20;
	else
		porta = porta & 0xdf;


	//Warten
	//Delay: 5 ms
	delay_ms(5);


}

void FCM_anz_start()
{
	
	//Output
	//Output: 0x03 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x03 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Output
	//Output: 0x03 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x03 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Output
	//Output: 0x03 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x03 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Comment:
	//1


	//Output
	//Output: 0x00 -> PORT A
	trisa = trisa & 0xc0;
	porta = (porta & 0xc0) | (0x00 & 0x3f);


	//Comment:
	//2
	//set 4 bit long


	//Output
	//Output: 0x02 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x02 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Comment:
	//3


	//Output
	//Output: 0x02 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x02 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Output
	//Output: 0x08 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x08 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Comment:
	//4


	//Output
	//Output: 0x00 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x00 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Output
	//Output: 0x0c -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x0c & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Comment:
	//5


	//Output
	//Output: 0x00 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x00 & 0x0f);


	//write ini
	//Call Macro: write_ini
	FCM_write_ini();


	//Output
	//Output: 0x06 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x06 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Comment:
	//clear


	//Output
	//Output: 0x00 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x00 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


	//Output
	//Output: 0x01 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x01 & 0x0f);


	//e
	//Call Macro: write_ini
	FCM_write_ini();


}

void FCM_anz_text(char* PFCL_TEXT_XYZ, char FCL_X, char FCL_Y, char FCL_BYTES)
{
	
	//Local variable definitions
	char FCL_TEXT_XYZ_WERT_L;
	char FCL_TEXT_XYZ_WERT_H;

	#define FC_ANZ_TEXT_SZ_TEXT_XYZ 16
	char FCL_TEXT_XYZ[FC_ANZ_TEXT_SZ_TEXT_XYZ];
	FCI_CONCATENATE(PFCL_TEXT_XYZ,FC_ANZ_TEXT_SZ_TEXT_XYZ,"",0,FCL_TEXT_XYZ,FC_ANZ_TEXT_SZ_TEXT_XYZ);
	//Entscheidung
	//Decision: anz_text.bytes = auto?
	if (FCL_BYTES == FCV_AUTO)
	{
		//String Manipulation
		//String Manipulation:
		//  anz_text.bytes = Length$(anz_text.text_xyz)
		FCL_BYTES = FCI_GETLENGTH(FCL_TEXT_XYZ,FC_ANZ_TEXT_SZ_TEXT_XYZ);
		

	}


	//Comment:
	//prüfsumme von orginal
	//text erstellen


	//Berechnung
	//Calculation:
	//  te_pr_sum = 0
	//  da_ad_n = anz_text.bytes - 1
	FCV_TE_PR_SUM = 0;
	FCV_DA_AD_N = FCL_BYTES - 1;
	

	//Verbindungspunkt
	//Connection Point: [C]: C
FCC_anz_text_C:


	//String Manipulation
	//String Manipulation:
	//  test_text = anz_text.text_xyz
	FCI_CONCATENATE(FCL_TEXT_XYZ,FC_ANZ_TEXT_SZ_TEXT_XYZ,"",0,FCV_TEST_TEXT,FCSZ_TEST_TEXT);
	

	//Berechnung
	//Calculation:
	//  te_pr_sum = te_pr_sum + anz_text.text_xyz[da_ad_n]
	FCV_TE_PR_SUM = FCV_TE_PR_SUM + FCL_TEXT_XYZ[FCV_DA_AD_N];
	

	//Entscheidung
	//Decision: da_ad_n = 0?
	if (FCV_DA_AD_N == 0)
	{
		//pr-summe von allem
		//Calculation:
		//  te_pr_sum = te_pr_sum + anz_text.x
		//  te_pr_sum = te_pr_sum + anz_text.y
		//  te_pr_sum = te_pr_sum + anz_text.bytes
		FCV_TE_PR_SUM = FCV_TE_PR_SUM + FCL_X;
		FCV_TE_PR_SUM = FCV_TE_PR_SUM + FCL_Y;
		FCV_TE_PR_SUM = FCV_TE_PR_SUM + FCL_BYTES;
		

	} else {
		//Berechnung
		//Calculation:
		//  da_ad_n = da_ad_n - 1
		FCV_DA_AD_N = FCV_DA_AD_N - 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [C]: C
		goto FCC_anz_text_C;


	}


	//Entscheidung
	//Decision: anz_text.y = 1?
	if (FCL_Y == 1)
	{
		//Entscheidung
		//Decision: text_nr_test_zeile1 = te_pr_sum?
		if (FCV_TEXT_NR_TEST_ZEILE1 == FCV_TE_PR_SUM)
		{
			//Comment:
			//gleicher text zeile 0
			//zum ende


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_anz_text_B;


		} else {
			//Berechnung
			//Calculation:
			//  text_nr_test_zeile1 = te_pr_sum
			FCV_TEXT_NR_TEST_ZEILE1 = FCV_TE_PR_SUM;
			

			//Makro-Aufruf
			//Call Macro: anz_curpos(anz_text.x, 1, nein)
			FCM_anz_curpos(FCL_X, 1, FCV_NEIN);


		}


	} else {
		//Entscheidung
		//Decision: anz_text.y = 0?
		if (FCL_Y == 0)
		{
		} else {
			//Comment:
			//falsche eingabe


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_anz_text_B;


		}


		//Entscheidung
		//Decision: text_nr_test_zeile0 = te_pr_sum?
		if (FCV_TEXT_NR_TEST_ZEILE0 == FCV_TE_PR_SUM)
		{
			//Comment:
			//gleicher text zeile 1
			//zum ende


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_anz_text_B;


		} else {
			//Berechnung
			//Calculation:
			//  text_nr_test_zeile0 = te_pr_sum
			FCV_TEXT_NR_TEST_ZEILE0 = FCV_TE_PR_SUM;
			

			//Makro-Aufruf
			//Call Macro: anz_curpos(anz_text.x, 0, nein)
			FCM_anz_curpos(FCL_X, 0, FCV_NEIN);


		}


	}


	//Verbindungspunkt
	//Connection Point: [D]: D
FCC_anz_text_D:


	//Berechnung
	//Calculation:
	//  spa_nr = 0
	FCV_SPA_NR = 0;
	

	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_anz_text_A:


	//symbol bilden
	//Calculation:
	//  anz_text.text_xyz_wert_h = test_text[spa_nr] >> 4
	//  anz_text.text_xyz_wert_l = test_text[spa_nr] AND 0x0f
	FCL_TEXT_XYZ_WERT_H = FCV_TEST_TEXT[FCV_SPA_NR] >> 4;
	FCL_TEXT_XYZ_WERT_L = FCV_TEST_TEXT[FCV_SPA_NR] & 0x0f;
	

	//Output
	//Output: anz_text.text_xyz_wert_h -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCL_TEXT_XYZ_WERT_H & 0x0f);


	//Makro-Aufruf
	//Call Macro: write
	FCM_write();


	//Output
	//Output: anz_text.text_xyz_wert_l -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCL_TEXT_XYZ_WERT_L & 0x0f);


	//Makro-Aufruf
	//Call Macro: write
	FCM_write();


	//Entscheidung
	//Decision: anz_text.bytes = 1?
	if (FCL_BYTES == 1)
	{
	} else {
		//Berechnung
		//Calculation:
		//  anz_text.bytes = anz_text.bytes - 1
		//  spa_nr = spa_nr + 1
		FCL_BYTES = FCL_BYTES - 1;
		FCV_SPA_NR = FCV_SPA_NR + 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_anz_text_A;


	}


	//Verbindungspunkt
	//Connection Point: [B]: B
FCC_anz_text_B:


}

void FCM_write()
{
	
	//Comment:
	//rs = 1


	//Output
	//Output: 1 -> A4
	trisa = trisa & 0xef;
	if (1)
		porta = (porta & 0xef) | 0x10;
	else
		porta = porta & 0xef;


	//Comment:
	//Kommentar


	//Output
	//Output: 1 -> A5
	trisa = trisa & 0xdf;
	if (1)
		porta = (porta & 0xdf) | 0x20;
	else
		porta = porta & 0xdf;


	//Output
	//Output: 0 -> A5
	trisa = trisa & 0xdf;
	if (0)
		porta = (porta & 0xdf) | 0x20;
	else
		porta = porta & 0xdf;


	//Warten
	//Delay: 100 us
	delay_us(100);


}

void FCM_write_com()
{
	
	//Output
	//Output: 0 -> A4
	trisa = trisa & 0xef;
	if (0)
		porta = (porta & 0xef) | 0x10;
	else
		porta = porta & 0xef;


	//Output
	//Output: 1 -> A5
	trisa = trisa & 0xdf;
	if (1)
		porta = (porta & 0xdf) | 0x20;
	else
		porta = porta & 0xdf;


	//Output
	//Output: 0 -> A5
	trisa = trisa & 0xdf;
	if (0)
		porta = (porta & 0xdf) | 0x20;
	else
		porta = porta & 0xdf;


	//Warten
	//Delay: 100 us
	delay_us(100);


}

void FCM_anz_curpos(char FCL_CUR_X, char FCL_CUR_Y, char FCL_CUR_AN_AUS)
{
	
	//Local variable definitions
	char FCL_CUR_XY_ARB_L;
	char FCL_CUR_XY_ARB_H;

	//Entscheidung
	//Decision: anz_curpos.cur_an_aus = nein?
	if (FCL_CUR_AN_AUS == FCV_NEIN)
	{
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_anz_curpos_A;


	}


	//Entscheidung
	//Decision: anz_curpos.cur_an_aus = an?
	if (FCL_CUR_AN_AUS == FCV_AN)
	{
		//Comment:
		//4
		//display on/of control


		//Output
		//Output: 0x00 -> PORT A
		trisa = trisa & 0xf0;
		porta = (porta & 0xf0) | (0x00 & 0x0f);


		//Makro-Aufruf
		//Call Macro: write_com
		FCM_write_com();


		//Output
		//Output: 0x0f -> PORT A
		trisa = trisa & 0xf0;
		porta = (porta & 0xf0) | (0x0f & 0x0f);


		//Makro-Aufruf
		//Call Macro: write_com
		FCM_write_com();


	} else {
		//Comment:
		//4
		//display on/of control


		//Output
		//Output: 0x00 -> PORT A
		trisa = trisa & 0xf0;
		porta = (porta & 0xf0) | (0x00 & 0x0f);


		//Makro-Aufruf
		//Call Macro: write_com
		FCM_write_com();


		//Output
		//Output: 0x0c -> PORT A
		trisa = trisa & 0xf0;
		porta = (porta & 0xf0) | (0x0c & 0x0f);


		//Makro-Aufruf
		//Call Macro: write_com
		FCM_write_com();


	}


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_anz_curpos_A:


	//Entscheidung
	//Decision: anz_curpos.cur_y = 0?
	if (FCL_CUR_Y == 0)
	{
		//Berechnung
		//Calculation:
		//  anz_curpos.cur_y = anz_curpos.cur_x + 0x80
		//  anz_curpos.cur_xy_arb_h = anz_curpos.cur_y >> 4
		//  anz_curpos.cur_xy_arb_l = anz_curpos.cur_y AND 0x0f
		FCL_CUR_Y = FCL_CUR_X + 0x80;
		FCL_CUR_XY_ARB_H = FCL_CUR_Y >> 4;
		FCL_CUR_XY_ARB_L = FCL_CUR_Y & 0x0f;
		

	} else {
		//Entscheidung
		//Decision: anz_curpos.cur_y = 1?
		if (FCL_CUR_Y == 1)
		{
			//Berechnung
			//Calculation:
			//  anz_curpos.cur_y = anz_curpos.cur_x + 0xc0
			//  anz_curpos.cur_xy_arb_h = anz_curpos.cur_y >> 4
			//  anz_curpos.cur_xy_arb_l = anz_curpos.cur_y AND 0x0f
			FCL_CUR_Y = FCL_CUR_X + 0xc0;
			FCL_CUR_XY_ARB_H = FCL_CUR_Y >> 4;
			FCL_CUR_XY_ARB_L = FCL_CUR_Y & 0x0f;
			

		}


	}


	//Output
	//Output: anz_curpos.cur_xy_arb_h -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCL_CUR_XY_ARB_H & 0x0f);


	//Makro-Aufruf
	//Call Macro: write_com
	FCM_write_com();


	//Output
	//Output: anz_curpos.cur_xy_arb_l -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCL_CUR_XY_ARB_L & 0x0f);


	//Makro-Aufruf
	//Call Macro: write_com
	FCM_write_com();


}

void FCM_symbol_ini()
{
	
	//werte für symbol 0
	//Calculation:
	//  symbol_0_[7] = 0x00
	//  symbol_0_[6] = 0x04
	//  symbol_0_[5] = 0x0e
	//  symbol_0_[4] = 0x04
	//  symbol_0_[3] = 0x0e
	//  symbol_0_[2] = 0x00
	//  symbol_0_[1] = 0x0a
	//  symbol_0_[0] = 0x1b
	FCV_SYMBOL_0_[7] = 0x00;
	FCV_SYMBOL_0_[6] = 0x04;
	FCV_SYMBOL_0_[5] = 0x0e;
	FCV_SYMBOL_0_[4] = 0x04;
	FCV_SYMBOL_0_[3] = 0x0e;
	FCV_SYMBOL_0_[2] = 0x00;
	FCV_SYMBOL_0_[1] = 0x0a;
	FCV_SYMBOL_0_[0] = 0x1b;
	

	//werte für symbol 1
	//Calculation:
	//  symbol_1_[7] = 0x00
	//  symbol_1_[6] = 0x00
	//  symbol_1_[5] = 0x04
	//  symbol_1_[4] = 0x0e
	//  symbol_1_[3] = 0x04
	//  symbol_1_[2] = 0x0e
	//  symbol_1_[1] = 0x0a
	//  symbol_1_[0] = 0x1b
	FCV_SYMBOL_1_[7] = 0x00;
	FCV_SYMBOL_1_[6] = 0x00;
	FCV_SYMBOL_1_[5] = 0x04;
	FCV_SYMBOL_1_[4] = 0x0e;
	FCV_SYMBOL_1_[3] = 0x04;
	FCV_SYMBOL_1_[2] = 0x0e;
	FCV_SYMBOL_1_[1] = 0x0a;
	FCV_SYMBOL_1_[0] = 0x1b;
	

	//werte für symbol 2
	//Calculation:
	//  symbol_2_[7] = 0x00
	//  symbol_2_[6] = 0x00
	//  symbol_2_[5] = 0x00
	//  symbol_2_[4] = 0x00
	//  symbol_2_[3] = 0x04
	//  symbol_2_[2] = 0x0e
	//  symbol_2_[1] = 0x15
	//  symbol_2_[0] = 0x15
	FCV_SYMBOL_2_[7] = 0x00;
	FCV_SYMBOL_2_[6] = 0x00;
	FCV_SYMBOL_2_[5] = 0x00;
	FCV_SYMBOL_2_[4] = 0x00;
	FCV_SYMBOL_2_[3] = 0x04;
	FCV_SYMBOL_2_[2] = 0x0e;
	FCV_SYMBOL_2_[1] = 0x15;
	FCV_SYMBOL_2_[0] = 0x15;
	

	//werte für symbol 3
	//Calculation:
	//  symbol_3_[7] = 0x11
	//  symbol_3_[6] = 0x0a
	//  symbol_3_[5] = 0x04
	//  symbol_3_[4] = 0x00
	//  symbol_3_[3] = 0x04
	//  symbol_3_[2] = 0x0e
	//  symbol_3_[1] = 0x15
	//  symbol_3_[0] = 0x15
	FCV_SYMBOL_3_[7] = 0x11;
	FCV_SYMBOL_3_[6] = 0x0a;
	FCV_SYMBOL_3_[5] = 0x04;
	FCV_SYMBOL_3_[4] = 0x00;
	FCV_SYMBOL_3_[3] = 0x04;
	FCV_SYMBOL_3_[2] = 0x0e;
	FCV_SYMBOL_3_[1] = 0x15;
	FCV_SYMBOL_3_[0] = 0x15;
	

	//werte für symbol 4
	//Calculation:
	//  symbol_4_[7] = 0x00
	//  symbol_4_[6] = 0x00
	//  symbol_4_[5] = 0x00
	//  symbol_4_[4] = 0x00
	//  symbol_4_[3] = 0x1f
	//  symbol_4_[2] = 0x00
	//  symbol_4_[1] = 0x00
	//  symbol_4_[0] = 0x00
	FCV_SYMBOL_4_[7] = 0x00;
	FCV_SYMBOL_4_[6] = 0x00;
	FCV_SYMBOL_4_[5] = 0x00;
	FCV_SYMBOL_4_[4] = 0x00;
	FCV_SYMBOL_4_[3] = 0x1f;
	FCV_SYMBOL_4_[2] = 0x00;
	FCV_SYMBOL_4_[1] = 0x00;
	FCV_SYMBOL_4_[0] = 0x00;
	

	//werte für symbol 5
	//Calculation:
	//  symbol_5_[7] = 0x00
	//  symbol_5_[6] = 0x00
	//  symbol_5_[5] = 0x00
	//  symbol_5_[4] = 0x00
	//  symbol_5_[3] = 0x00
	//  symbol_5_[2] = 0x1f
	//  symbol_5_[1] = 0x00
	//  symbol_5_[0] = 0x00
	FCV_SYMBOL_5_[7] = 0x00;
	FCV_SYMBOL_5_[6] = 0x00;
	FCV_SYMBOL_5_[5] = 0x00;
	FCV_SYMBOL_5_[4] = 0x00;
	FCV_SYMBOL_5_[3] = 0x00;
	FCV_SYMBOL_5_[2] = 0x1f;
	FCV_SYMBOL_5_[1] = 0x00;
	FCV_SYMBOL_5_[0] = 0x00;
	

	//werte für symbol 6
	//Calculation:
	//  symbol_6_[7] = 0x00
	//  symbol_6_[6] = 0x00
	//  symbol_6_[5] = 0x00
	//  symbol_6_[4] = 0x00
	//  symbol_6_[3] = 0x00
	//  symbol_6_[2] = 0x00
	//  symbol_6_[1] = 0x1f
	//  symbol_6_[0] = 0x00
	FCV_SYMBOL_6_[7] = 0x00;
	FCV_SYMBOL_6_[6] = 0x00;
	FCV_SYMBOL_6_[5] = 0x00;
	FCV_SYMBOL_6_[4] = 0x00;
	FCV_SYMBOL_6_[3] = 0x00;
	FCV_SYMBOL_6_[2] = 0x00;
	FCV_SYMBOL_6_[1] = 0x1f;
	FCV_SYMBOL_6_[0] = 0x00;
	

	//werte für symbol 7
	//Calculation:
	//  symbol_7_[0] = 0x00
	//  symbol_7_[1] = 0x00
	//  symbol_7_[2] = 0x00
	//  symbol_7_[3] = 0x00
	//  symbol_7_[4] = 0x00
	//  symbol_7_[5] = 0x00
	//  symbol_7_[6] = 0x00
	//  symbol_7_[7] = 0x1f
	FCV_SYMBOL_7_[0] = 0x00;
	FCV_SYMBOL_7_[1] = 0x00;
	FCV_SYMBOL_7_[2] = 0x00;
	FCV_SYMBOL_7_[3] = 0x00;
	FCV_SYMBOL_7_[4] = 0x00;
	FCV_SYMBOL_7_[5] = 0x00;
	FCV_SYMBOL_7_[6] = 0x00;
	FCV_SYMBOL_7_[7] = 0x1f;
	

}

void FCM_symbol_init()
{
	
	//Berechnung
	//Calculation:
	//  symbol = 0x04
	FCV_SYMBOL = 0x04;
	

	//Output
	//Output: symbol -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


	//anz_wr_busy
	//Call Macro: write_ini
	FCM_write_ini();


	//Berechnung
	//Calculation:
	//  symbol = 0x00
	FCV_SYMBOL = 0x00;
	

	//Output
	//Output: symbol -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


	//anz_wr_busy
	//Call Macro: write_ini
	FCM_write_ini();


	//Berechnung
	//Calculation:
	//  da_ad_n = 7
	FCV_DA_AD_N = 7;
	

	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_symbol_init_A:


	//Berechnung
	//Calculation:
	//  symbol = symbol_0_[da_ad_n] >> 4
	FCV_SYMBOL = FCV_SYMBOL_0_[FCV_DA_AD_N] >> 4;
	

	//Output
	//Output: symbol -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


	//Makro-Aufruf
	//Call Macro: write
	FCM_write();


	//Berechnung
	//Calculation:
	//  symbol = symbol_0_[da_ad_n] AND 0x0f
	FCV_SYMBOL = FCV_SYMBOL_0_[FCV_DA_AD_N] & 0x0f;
	

	//Output
	//Output: symbol -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


	//Makro-Aufruf
	//Call Macro: write
	FCM_write();


	//Entscheidung
	//Decision: da_ad_n = 0?
	if (FCV_DA_AD_N == 0)
	{
		//Berechnung
		//Calculation:
		//  da_ad_n = 7
		FCV_DA_AD_N = 7;
		

		//Verbindungspunkt
		//Connection Point: [B]: B
FCC_symbol_init_B:


		//Berechnung
		//Calculation:
		//  symbol = symbol_1_[da_ad_n] >> 4
		FCV_SYMBOL = FCV_SYMBOL_1_[FCV_DA_AD_N] >> 4;
		

		//Output
		//Output: symbol -> PORT A
		trisa = trisa & 0xf0;
		porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


		//Makro-Aufruf
		//Call Macro: write
		FCM_write();


		//Berechnung
		//Calculation:
		//  symbol = symbol_1_[da_ad_n] AND 0x0f
		FCV_SYMBOL = FCV_SYMBOL_1_[FCV_DA_AD_N] & 0x0f;
		

		//Output
		//Output: symbol -> PORT A
		trisa = trisa & 0xf0;
		porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


		//Makro-Aufruf
		//Call Macro: write
		FCM_write();


		//Entscheidung
		//Decision: da_ad_n = 0?
		if (FCV_DA_AD_N == 0)
		{
			//Berechnung
			//Calculation:
			//  da_ad_n = 7
			FCV_DA_AD_N = 7;
			

			//Verbindungspunkt
			//Connection Point: [C]: C
FCC_symbol_init_C:


			//Berechnung
			//Calculation:
			//  symbol = symbol_2_[da_ad_n] >> 4
			FCV_SYMBOL = FCV_SYMBOL_2_[FCV_DA_AD_N] >> 4;
			

			//Output
			//Output: symbol -> PORT A
			trisa = trisa & 0xf0;
			porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


			//Makro-Aufruf
			//Call Macro: write
			FCM_write();


			//Berechnung
			//Calculation:
			//  symbol = symbol_2_[da_ad_n] AND 0x0f
			FCV_SYMBOL = FCV_SYMBOL_2_[FCV_DA_AD_N] & 0x0f;
			

			//Output
			//Output: symbol -> PORT A
			trisa = trisa & 0xf0;
			porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


			//Makro-Aufruf
			//Call Macro: write
			FCM_write();


			//Entscheidung
			//Decision: da_ad_n = 0?
			if (FCV_DA_AD_N == 0)
			{
				//Berechnung
				//Calculation:
				//  da_ad_n = 7
				FCV_DA_AD_N = 7;
				

				//Verbindungspunkt
				//Connection Point: [D]: D
FCC_symbol_init_D:


				//Berechnung
				//Calculation:
				//  symbol = symbol_3_[da_ad_n] >> 4
				FCV_SYMBOL = FCV_SYMBOL_3_[FCV_DA_AD_N] >> 4;
				

				//Output
				//Output: symbol -> PORT A
				trisa = trisa & 0xf0;
				porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


				//Makro-Aufruf
				//Call Macro: write
				FCM_write();


				//Berechnung
				//Calculation:
				//  symbol = symbol_3_[da_ad_n] AND 0x0f
				FCV_SYMBOL = FCV_SYMBOL_3_[FCV_DA_AD_N] & 0x0f;
				

				//Output
				//Output: symbol -> PORT A
				trisa = trisa & 0xf0;
				porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


				//Makro-Aufruf
				//Call Macro: write
				FCM_write();


				//Entscheidung
				//Decision: da_ad_n = 0?
				if (FCV_DA_AD_N == 0)
				{
					//Berechnung
					//Calculation:
					//  da_ad_n = 7
					FCV_DA_AD_N = 7;
					

					//Verbindungspunkt
					//Connection Point: [E]: E
FCC_symbol_init_E:


					//Berechnung
					//Calculation:
					//  symbol = symbol_4_[da_ad_n] >> 4
					FCV_SYMBOL = FCV_SYMBOL_4_[FCV_DA_AD_N] >> 4;
					

					//Output
					//Output: symbol -> PORT A
					trisa = trisa & 0xf0;
					porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


					//Makro-Aufruf
					//Call Macro: write
					FCM_write();


					//Berechnung
					//Calculation:
					//  symbol = symbol_4_[da_ad_n] AND 0x0f
					FCV_SYMBOL = FCV_SYMBOL_4_[FCV_DA_AD_N] & 0x0f;
					

					//Output
					//Output: symbol -> PORT A
					trisa = trisa & 0xf0;
					porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


					//Makro-Aufruf
					//Call Macro: write
					FCM_write();


					//Entscheidung
					//Decision: da_ad_n = 0?
					if (FCV_DA_AD_N == 0)
					{
						//Berechnung
						//Calculation:
						//  da_ad_n = 7
						FCV_DA_AD_N = 7;
						

						//Verbindungspunkt
						//Connection Point: [F]: F
FCC_symbol_init_F:


						//Berechnung
						//Calculation:
						//  symbol = symbol_5_[da_ad_n] >> 4
						FCV_SYMBOL = FCV_SYMBOL_5_[FCV_DA_AD_N] >> 4;
						

						//Output
						//Output: symbol -> PORT A
						trisa = trisa & 0xf0;
						porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


						//Makro-Aufruf
						//Call Macro: write
						FCM_write();


						//Berechnung
						//Calculation:
						//  symbol = symbol_5_[da_ad_n] AND 0x0f
						FCV_SYMBOL = FCV_SYMBOL_5_[FCV_DA_AD_N] & 0x0f;
						

						//Output
						//Output: symbol -> PORT A
						trisa = trisa & 0xf0;
						porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


						//Makro-Aufruf
						//Call Macro: write
						FCM_write();


						//Entscheidung
						//Decision: da_ad_n = 0?
						if (FCV_DA_AD_N == 0)
						{
							//Berechnung
							//Calculation:
							//  da_ad_n = 7
							FCV_DA_AD_N = 7;
							

							//Verbindungspunkt
							//Connection Point: [G]: G
FCC_symbol_init_G:


							//Berechnung
							//Calculation:
							//  symbol = symbol_6_[da_ad_n] >> 4
							FCV_SYMBOL = FCV_SYMBOL_6_[FCV_DA_AD_N] >> 4;
							

							//Output
							//Output: symbol -> PORT A
							trisa = trisa & 0xf0;
							porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


							//Makro-Aufruf
							//Call Macro: write
							FCM_write();


							//Berechnung
							//Calculation:
							//  symbol = symbol_6_[da_ad_n] AND 0x0f
							FCV_SYMBOL = FCV_SYMBOL_6_[FCV_DA_AD_N] & 0x0f;
							

							//Output
							//Output: symbol -> PORT A
							trisa = trisa & 0xf0;
							porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


							//Makro-Aufruf
							//Call Macro: write
							FCM_write();


							//Entscheidung
							//Decision: da_ad_n = 0?
							if (FCV_DA_AD_N == 0)
							{
								//Berechnung
								//Calculation:
								//  da_ad_n = 7
								FCV_DA_AD_N = 7;
								

								//Verbindungspunkt
								//Connection Point: [H]: H
FCC_symbol_init_H:


								//Berechnung
								//Calculation:
								//  symbol = symbol_7_[da_ad_n] >> 4
								FCV_SYMBOL = FCV_SYMBOL_7_[FCV_DA_AD_N] >> 4;
								

								//Output
								//Output: symbol -> PORT A
								trisa = trisa & 0xf0;
								porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


								//Makro-Aufruf
								//Call Macro: write
								FCM_write();


								//Berechnung
								//Calculation:
								//  symbol = symbol_7_[da_ad_n] AND 0x0f
								FCV_SYMBOL = FCV_SYMBOL_7_[FCV_DA_AD_N] & 0x0f;
								

								//Output
								//Output: symbol -> PORT A
								trisa = trisa & 0xf0;
								porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


								//Makro-Aufruf
								//Call Macro: write
								FCM_write();


								//Entscheidung
								//Decision: da_ad_n = 0?
								if (FCV_DA_AD_N == 0)
								{
								} else {
									//Berechnung
									//Calculation:
									//  da_ad_n = da_ad_n - 1
									FCV_DA_AD_N = FCV_DA_AD_N - 1;
									

									//Gehe zum Verbindungspunkt
									//Goto Connection Point: [H]: H
									goto FCC_symbol_init_H;


								}


							} else {
								//Berechnung
								//Calculation:
								//  da_ad_n = da_ad_n - 1
								FCV_DA_AD_N = FCV_DA_AD_N - 1;
								

								//Gehe zum Verbindungspunkt
								//Goto Connection Point: [G]: G
								goto FCC_symbol_init_G;


							}


						} else {
							//Berechnung
							//Calculation:
							//  da_ad_n = da_ad_n - 1
							FCV_DA_AD_N = FCV_DA_AD_N - 1;
							

							//Gehe zum Verbindungspunkt
							//Goto Connection Point: [F]: F
							goto FCC_symbol_init_F;


						}


					} else {
						//Berechnung
						//Calculation:
						//  da_ad_n = da_ad_n - 1
						FCV_DA_AD_N = FCV_DA_AD_N - 1;
						

						//Gehe zum Verbindungspunkt
						//Goto Connection Point: [E]: E
						goto FCC_symbol_init_E;


					}


				} else {
					//Berechnung
					//Calculation:
					//  da_ad_n = da_ad_n - 1
					FCV_DA_AD_N = FCV_DA_AD_N - 1;
					

					//Gehe zum Verbindungspunkt
					//Goto Connection Point: [D]: D
					goto FCC_symbol_init_D;


				}


			} else {
				//Berechnung
				//Calculation:
				//  da_ad_n = da_ad_n - 1
				FCV_DA_AD_N = FCV_DA_AD_N - 1;
				

				//Gehe zum Verbindungspunkt
				//Goto Connection Point: [C]: C
				goto FCC_symbol_init_C;


			}


		} else {
			//Berechnung
			//Calculation:
			//  da_ad_n = da_ad_n - 1
			FCV_DA_AD_N = FCV_DA_AD_N - 1;
			

			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_symbol_init_B;


		}


	} else {
		//Berechnung
		//Calculation:
		//  da_ad_n = da_ad_n - 1
		FCV_DA_AD_N = FCV_DA_AD_N - 1;
		

		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_symbol_init_A;


	}


	//Berechnung
	//Calculation:
	//  symbol = 0x08
	FCV_SYMBOL = 0x08;
	

	//Output
	//Output: symbol -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


	//anz_wr_busy
	//Call Macro: write_ini
	FCM_write_ini();


	//Berechnung
	//Calculation:
	//  symbol = 0x00
	FCV_SYMBOL = 0x00;
	

	//Output
	//Output: symbol -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCV_SYMBOL & 0x0f);


	//anz_wr_busy
	//Call Macro: write_ini
	FCM_write_ini();


}

void FCM_anz_sym_x(char FCL_SYM_NR, char FCL_SYM_X, char FCL_SYM_Y)
{
	
	//Local variable definitions
	char FCL_SYM_L;
	char FCL_SYM_H;

	//Makro-Aufruf
	//Call Macro: anz_curpos(anz_sym_x.sym_x, anz_sym_x.sym_y, nein)
	FCM_anz_curpos(FCL_SYM_X, FCL_SYM_Y, FCV_NEIN);


	//Comment:
	//H


	//Berechnung
	//Calculation:
	//  anz_sym_x.sym_h = 0x00
	//  anz_sym_x.sym_l = anz_sym_x.sym_nr AND 0x0f
	FCL_SYM_H = 0x00;
	FCL_SYM_L = FCL_SYM_NR & 0x0f;
	

	//Output
	//Output: anz_sym_x.sym_h -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCL_SYM_H & 0x0f);


	//write
	//Call Macro: write
	FCM_write();


	//Output
	//Output: anz_sym_x.sym_l -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (FCL_SYM_L & 0x0f);


	//write
	//Call Macro: write
	FCM_write();


}

void FCM_anz_clear(char FCL_LINE_0, char FCL_LINE_1, char FCL_X, char FCL_Y, char FCL_CUR_AN_AUS)
{
	
	//Local variable definitions
	char FCL_ADR_L;
	char FCL_COUNT;

	//Berechnung
	//Calculation:
	//  anz_clear.adr_l = 0
	//  anz_clear.count = 16
	FCL_ADR_L = 0;
	FCL_COUNT = 16;
	

	//Entscheidung
	//Decision: anz_clear.line_0 =  ja?
	if (FCL_LINE_0 ==  FCV_JA)
	{
	} else {
		//Entscheidung
		//Decision: anz_clear.line_1 = ja?
		if (FCL_LINE_1 == FCV_JA)
		{
			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [B]: B
			goto FCC_anz_clear_B;


		} else {
			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [C]: C
			goto FCC_anz_clear_C;


		}


	}


	//Makro-Aufruf
	//Call Macro: anz_curpos(0, 0, nein)
	FCM_anz_curpos(0, 0, FCV_NEIN);


	//Comment:
	//Kommentar


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_anz_clear_A:


	//Output
	//Output: 0x02 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x02 & 0x0f);


	//Makro-Aufruf
	//Call Macro: write
	FCM_write();


	//Output
	//Output: 0x00 -> PORT A
	trisa = trisa & 0xf0;
	porta = (porta & 0xf0) | (0x00 & 0x0f);


	//Makro-Aufruf
	//Call Macro: write
	FCM_write();


	//Berechnung
	//Calculation:
	//  anz_clear.count = anz_clear.count - 1
	FCL_COUNT = FCL_COUNT - 1;
	

	//Entscheidung
	//Decision: anz_clear.count = 0?
	if (FCL_COUNT == 0)
	{
		//Verbindungspunkt
		//Connection Point: [B]: B
FCC_anz_clear_B:


		//Entscheidung
		//Decision: anz_clear.adr_l = 0?
		if (FCL_ADR_L == 0)
		{
			//Berechnung
			//Calculation:
			//  anz_clear.adr_l = 1
			//  anz_clear.count = 16
			FCL_ADR_L = 1;
			FCL_COUNT = 16;
			

			//Makro-Aufruf
			//Call Macro: anz_curpos(0, 1, nein)
			FCM_anz_curpos(0, 1, FCV_NEIN);


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_anz_clear_A;


		}


	} else {
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_anz_clear_A;


	}


	//Makro-Aufruf
	//Call Macro: anz_curpos(anz_clear.x, anz_clear.y, anz_clear.cur_an_aus)
	FCM_anz_curpos(FCL_X, FCL_Y, FCL_CUR_AN_AUS);


	//Verbindungspunkt
	//Connection Point: [C]: C
FCC_anz_clear_C:


}

void FCM_anz_number(short FCL_NUMB_WERT, char FCL_X, char FCL_Y, char FCL_R_B)
{
	
	//Local variable definitions
	#define FC_ANZ_NUMBER_SZ_WERT 17
	char FCL_WERT[FC_ANZ_NUMBER_SZ_WERT];
	char FCL_POS;

	//String wert holen
	//String Manipulation:
	//  anz_number.wert = ToString$(anz_number.numb_wert)
	FCI_TOSTRING(FCL_NUMB_WERT,FCL_WERT,FC_ANZ_NUMBER_SZ_WERT);
	

	//String Manipulation
	//String Manipulation:
	//  anz_number.pos = Length$(anz_number.wert)
	FCL_POS = FCI_GETLENGTH(FCL_WERT,FC_ANZ_NUMBER_SZ_WERT);
	

	//Entscheidung
	//Decision: anz_number.r_b = ja?
	if (FCL_R_B == FCV_JA)
	{
	} else {
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [B]: B
		goto FCC_anz_number_B;


	}


	//Switch (Icon für switch..case)
	//Switch: anz_number.pos?
	switch (FCL_POS)
	{
		case 1:
		{
			//Berechnung
			//Calculation:
			//  anz_number.x = anz_number.x + 3
			FCL_X = FCL_X + 3;
			

			break;
		}

		case 2:
		{
			//Berechnung
			//Calculation:
			//  anz_number.x = anz_number.x + 2
			FCL_X = FCL_X + 2;
			

			break;
		}

		case 3:
		{
			//Berechnung
			//Calculation:
			//  anz_number.x = anz_number.x + 1
			FCL_X = FCL_X + 1;
			

			break;
		}

		case 4:
		{
			break;
		}

		default:
		{
			//Makro-Aufruf
			//Call Macro: anz_text("----", anz_number.x, anz_number.y, auto)
			FCM_anz_text("----", FCL_X, FCL_Y, FCV_AUTO);


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_anz_number_A;


			//Verbindungspunkt
			//Connection Point: [B]: B
FCC_anz_number_B:


		}
	}


	//Makro-Aufruf
	//Call Macro: anz_text(anz_number.wert, anz_number.x, anz_number.y, anz_number.pos)
	FCM_anz_text(FCL_WERT, FCL_X, FCL_Y, FCL_POS);


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_anz_number_A:


}

void FCM_digitime_int()
{
	
	//Entscheidung
	//Decision: int_war = ja?
	if (FCV_INT_WAR == FCV_JA)
	{
		//Berechnung
		//Calculation:
		//  int_war = aus
		FCV_INT_WAR = FCV_AUS;
		

	} else {
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [B]: B
		goto FCC_digitime_int_B;


	}


	//Berechnung
	//Calculation:
	//  d_t_n = 1
	FCV_D_T_N = 1;
	

	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_digitime_int_A:


	//Entscheidung
	//Decision: d_time_wert_[d_t_n] = 0?
	if (FCV_D_TIME_WERT_[FCV_D_T_N] == 0)
	{
	} else {
		//Berechnung
		//Calculation:
		//  d_time_wert_[d_t_n] = d_time_wert_[d_t_n] - 1
		FCV_D_TIME_WERT_[FCV_D_T_N] = FCV_D_TIME_WERT_[FCV_D_T_N] - 1;
		

	}


	//Berechnung
	//Calculation:
	//  d_t_n = d_t_n + 1
	FCV_D_T_N = FCV_D_T_N + 1;
	

	//Entscheidung
	//Decision: d_t_n = ( d_time_anzahl + 1 )?
	if (FCV_D_T_N == ( FCV_D_TIME_ANZAHL + 1 ))
	{
	} else {
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_digitime_int_A;


	}


	//Verbindungspunkt
	//Connection Point: [B]: B
FCC_digitime_int_B:


}

void main()
{
	
	//Initialisation
	adcon1 = 0x0F;


	//Interrupt initialisation code
	


	//Comment:
	//Kommentar


	//i/o aus
	//Output: io_disable -> C0
	trisc = trisc & 0xfe;
	if (FCV_IO_DISABLE)
		portc = (portc & 0xfe) | 0x01;
	else
		portc = portc & 0xfe;


	//texte setzen
	//String Manipulation:
	//  text_000 = "0123456789123456"
	//  text_101 = " in`s Programm  "
	//  text_102 = " digitime       "
	//  text_103 = " si test        "
	//  text_104 = " se test        "
	//  text_105 = " n_c            "
	//  text_107 = " n_c            "
	//  text_108 = " n_c            "
	//  text_109 = " n_c            "
	//  text_106 = " n_c            "
	//  text_151 = "Bitte warten!   "
	FCI_CONCATENATE("0123456789123456",16,"",0,FCV_TEXT_000,FCSZ_TEXT_000);
	FCI_CONCATENATE(" in`s Programm  ",16,"",0,FCV_TEXT_101,FCSZ_TEXT_101);
	FCI_CONCATENATE(" digitime       ",16,"",0,FCV_TEXT_102,FCSZ_TEXT_102);
	FCI_CONCATENATE(" si test        ",16,"",0,FCV_TEXT_103,FCSZ_TEXT_103);
	FCI_CONCATENATE(" se test        ",16,"",0,FCV_TEXT_104,FCSZ_TEXT_104);
	FCI_CONCATENATE(" n_c            ",16,"",0,FCV_TEXT_105,FCSZ_TEXT_105);
	FCI_CONCATENATE(" n_c            ",16,"",0,FCV_TEXT_107,FCSZ_TEXT_107);
	FCI_CONCATENATE(" n_c            ",16,"",0,FCV_TEXT_108,FCSZ_TEXT_108);
	FCI_CONCATENATE(" n_c            ",16,"",0,FCV_TEXT_109,FCSZ_TEXT_109);
	FCI_CONCATENATE(" n_c            ",16,"",0,FCV_TEXT_106,FCSZ_TEXT_106);
	FCI_CONCATENATE("Bitte warten!   ",16,"",0,FCV_TEXT_151,FCSZ_TEXT_151);
	

	//Makro-Aufruf
	//Call Macro: symbol_ini
	FCM_symbol_ini();


	//init_var
	//Calculation:
	//  an = 1
	//  bet = 1
	//  ja = 1
	//  ok = 1
	//  io_disable = 1
	//  yes = 1
	//  auto = 11
	//  aus = 0
	//  n_bet = 0
	//  nein = 0
	//  zaehlt = 0
	//  io_enable = 0
	//  no = 0
	//  si_out_port_1to8 = 0b00000000
	//  si_out_port_9to16 = 0b00000000
	//  si_out_port_17to24 = 0b00000000
	//  testbit = 0
	//  text_nr_test_zeile0 = 0
	//  text_nr_test_zeile1 = 0
	FCV_AN = 1;
	FCV_BET = 1;
	FCV_JA = 1;
	FCV_OK = 1;
	FCV_IO_DISABLE = 1;
	FCV_YES = 1;
	FCV_AUTO = 11;
	FCV_AUS = 0;
	FCV_N_BET = 0;
	FCV_NEIN = 0;
	FCV_ZAEHLT = 0;
	FCV_IO_ENABLE = 0;
	FCV_NO = 0;
	FCV_SI_OUT_PORT_1TO8 = 0;
	FCV_SI_OUT_PORT_9TO16 = 0;
	FCV_SI_OUT_PORT_17TO24 = 0;
	FCV_TESTBIT = 0;
	FCV_TEXT_NR_TEST_ZEILE0 = 0;
	FCV_TEXT_NR_TEST_ZEILE1 = 0;
	

	//d_time_wert setzen
	//Calculation:
	//  d_time_anzahl = 5                  //von 1 bis 30
	//  d_t_n = 0
	//  d_time_wert_[0] = 0
	//  d_time_wert_org_hob_[1] = 00
	//  d_time_wert_org_lob_[1] = 10
	//  d_time_wert_org_hob_[2] = 00
	//  d_time_wert_org_lob_[2] = 10
	//  d_time_wert_org_hob_[3] = 00
	//  d_time_wert_org_lob_[3] = 30
	//  d_time_wert_org_hob_[4] = 00
	//  d_time_wert_org_lob_[4] = 10
	//  d_time_wert_org_hob_[5] = 00
	//  d_time_wert_org_lob_[5] = 10
	//  d_time_wert_org_hob_[6] = 00
	//  d_time_wert_org_lob_[6] = 10
	//  d_time_wert_org_hob_[7] = 00
	//  d_time_wert_org_lob_[7] = 10
	//  d_time_wert_org_hob_[8] = 00
	//  d_time_wert_org_lob_[8] = 10
	//  d_time_wert_org_hob_[9] = 00
	//  d_time_wert_org_lob_[9] = 10
	//  d_time_wert_org_hob_[10] = 00
	//  d_time_wert_org_lob_[10] = 10
	//  d_time_wert_org_hob_[11] = 00
	//  d_time_wert_org_lob_[11] = 10
	//  d_time_wert_org_hob_[12] = 00
	//  d_time_wert_org_lob_[12] = 10
	//  d_time_wert_org_hob_[13] = 00
	//  d_time_wert_org_lob_[13] = 10
	//  d_time_wert_org_hob_[14] = 00
	//  d_time_wert_org_lob_[14] = 10
	//  d_time_wert_org_hob_[15] = 00
	//  d_time_wert_org_lob_[15] = 10
	//  d_time_wert_org_hob_[16] = 00
	//  d_time_wert_org_lob_[16] = 10
	//  d_time_wert_org_hob_[17] = 00
	//  d_time_wert_org_lob_[17] = 10
	//  d_time_wert_org_hob_[18] = 00
	//  d_time_wert_org_lob_[18] = 10
	//  d_time_wert_org_hob_[19] = 00
	//  d_time_wert_org_lob_[19] = 10
	//  d_time_wert_org_hob_[20] = 00
	//  d_time_wert_org_lob_[20] = 10
	//  d_time_wert_org_hob_[21] = 00
	//  d_time_wert_org_lob_[21] = 10
	//  d_time_wert_org_hob_[22] = 00
	//  d_time_wert_org_lob_[22] = 10
	//  d_time_wert_org_hob_[23] = 00
	//  d_time_wert_org_lob_[23] = 10
	//  d_time_wert_org_hob_[24] = 00
	//  d_time_wert_org_lob_[24] = 10
	//  d_time_wert_org_hob_[25] = 00
	//  d_time_wert_org_lob_[25] = 10
	//  d_time_wert_org_hob_[26] = 00
	//  d_time_wert_org_lob_[26] = 10
	//  d_time_wert_org_hob_[27] = 00
	//  d_time_wert_org_lob_[27] = 10
	//  d_time_wert_org_hob_[28] = 00
	//  d_time_wert_org_lob_[28] = 10
	//  d_time_wert_org_hob_[29] = 00
	//  d_time_wert_org_lob_[29] = 10
	//  d_time_wert_org_hob_[30] = 00
	//  d_time_wert_org_lob_[30] = 10
	//  d_time_nr_[0] = 0
	//  d_time_nr_[1] = 0
	//  d_time_nr_[2] = 0
	//  d_time_nr_[3] = 0
	//  d_time_nr_[4] = 0
	//  d_time_nr_[5] = 0
	//  d_time_nr_[6] = 0
	//  d_time_nr_[7] = 0
	//  d_time_nr_[8] = 0
	//  d_time_nr_[9] = 0
	//  d_time_nr_[10] = 0
	//  d_time_nr_[11] = 0
	//  d_time_nr_[12] = 0
	//  d_time_nr_[13] = 0
	//  d_time_nr_[14] = 0
	//  d_time_nr_[15] = 0
	//  d_time_nr_[16] = 0
	//  d_time_nr_[17] = 0
	//  d_time_nr_[18] = 0
	//  d_time_nr_[19] = 0
	//  d_time_nr_[20] = 0
	//  d_time_nr_[21] = 0
	//  d_time_nr_[22] = 0
	//  d_time_nr_[23] = 0
	//  d_time_nr_[24] = 0
	//  d_time_nr_[25] = 0
	//  d_time_nr_[26] = 0
	//  d_time_nr_[27] = 0
	//  d_time_nr_[28] = 0
	//  d_time_nr_[29] = 0
	//  d_time_nr_[30] = 0
	FCV_D_TIME_ANZAHL = 5;                  //von 1 bis 30
	FCV_D_T_N = 0;
	FCV_D_TIME_WERT_[0] = 0;
	FCV_D_TIME_WERT_ORG_HOB_[1] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[1] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[2] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[2] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[3] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[3] = 30;
	FCV_D_TIME_WERT_ORG_HOB_[4] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[4] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[5] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[5] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[6] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[6] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[7] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[7] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[8] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[8] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[9] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[9] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[10] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[10] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[11] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[11] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[12] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[12] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[13] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[13] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[14] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[14] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[15] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[15] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[16] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[16] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[17] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[17] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[18] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[18] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[19] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[19] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[20] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[20] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[21] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[21] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[22] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[22] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[23] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[23] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[24] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[24] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[25] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[25] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[26] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[26] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[27] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[27] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[28] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[28] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[29] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[29] = 10;
	FCV_D_TIME_WERT_ORG_HOB_[30] = 00;
	FCV_D_TIME_WERT_ORG_LOB_[30] = 10;
	FCV_D_TIME_NR_[0] = 0;
	FCV_D_TIME_NR_[1] = 0;
	FCV_D_TIME_NR_[2] = 0;
	FCV_D_TIME_NR_[3] = 0;
	FCV_D_TIME_NR_[4] = 0;
	FCV_D_TIME_NR_[5] = 0;
	FCV_D_TIME_NR_[6] = 0;
	FCV_D_TIME_NR_[7] = 0;
	FCV_D_TIME_NR_[8] = 0;
	FCV_D_TIME_NR_[9] = 0;
	FCV_D_TIME_NR_[10] = 0;
	FCV_D_TIME_NR_[11] = 0;
	FCV_D_TIME_NR_[12] = 0;
	FCV_D_TIME_NR_[13] = 0;
	FCV_D_TIME_NR_[14] = 0;
	FCV_D_TIME_NR_[15] = 0;
	FCV_D_TIME_NR_[16] = 0;
	FCV_D_TIME_NR_[17] = 0;
	FCV_D_TIME_NR_[18] = 0;
	FCV_D_TIME_NR_[19] = 0;
	FCV_D_TIME_NR_[20] = 0;
	FCV_D_TIME_NR_[21] = 0;
	FCV_D_TIME_NR_[22] = 0;
	FCV_D_TIME_NR_[23] = 0;
	FCV_D_TIME_NR_[24] = 0;
	FCV_D_TIME_NR_[25] = 0;
	FCV_D_TIME_NR_[26] = 0;
	FCV_D_TIME_NR_[27] = 0;
	FCV_D_TIME_NR_[28] = 0;
	FCV_D_TIME_NR_[29] = 0;
	FCV_D_TIME_NR_[30] = 0;
	

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


	//Makro-Aufruf
	//Call Macro: anz_start
	FCM_anz_start();


	//Makro-Aufruf
	//Call Macro: symbol_init
	FCM_symbol_init();


	//Comment:
	//Steuerbit einzeln


	//display_on
	//Output: 1 -> B5
	trisb = trisb & 0xdf;
	if (1)
		portb = (portb & 0xdf) | 0x20;
	else
		portb = portb & 0xdf;


	//wrx an
	//Output: 1 -> C5
	trisc = trisc & 0xdf;
	if (1)
		portc = (portc & 0xdf) | 0x20;
	else
		portc = portc & 0xdf;


	//wr an
	//Output: 1 -> C6
	trisc = trisc & 0xbf;
	if (1)
		portc = (portc & 0xbf) | 0x40;
	else
		portc = portc & 0xbf;


	//lo/hi
	//Output: 1 -> C7
	trisc = trisc & 0x7f;
	if (1)
		portc = (portc & 0x7f) | 0x80;
	else
		portc = portc & 0x7f;


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


	//Comment:
	//Kommentar


	//alle ausg. intern aus
	//Call Macro: si_out(0, aus)
	FCM_si_out(0, FCV_AUS);


	//alle tas_led aus
	//Call Macro: tas_led(0, aus)
	FCM_tas_led(0, FCV_AUS);


	//EEPROM bearbeiten
	//Call Macro: eeprom_bearb
	FCM_eeprom_bearb();


	//diag
	//Call Macro: diag
	FCM_diag();


	//Comment:
	//Kommentar


	//i/o an
	//Output: io_enable -> C0
	trisc = trisc & 0xfe;
	if (FCV_IO_ENABLE)
		portc = (portc & 0xfe) | 0x01;
	else
		portc = portc & 0xfe;


	//Makro-Aufruf
	//Call Macro: anz_clear(ja, nein, 0, 0, auto)
	FCM_anz_clear(FCV_JA, FCV_NEIN, 0, 0, FCV_AUTO);


	//print(ASCII) Hallo
	//Call Macro: anz_text("Hallo", 0, 0, auto)
	FCM_anz_text("Hallo", 0, 0, FCV_AUTO);


	//Interrupt für digital Timer
	//Interrupt: Enable TMR0
	cr_bit(t0con, T0CS);
	cr_bit(t0con, T0SE);
	t0con = (t0con & 0xF0) | 0x06;
	st_bit(intcon, GIE);
	st_bit(intcon, TMR0IE);


	//Verbindungspunkt
	//Connection Point: [A]: A
FCC_Haupt_A:


	//digitime_int
	//Call Macro: digitime_int
	FCM_digitime_int();


	//tas
	//Call Macro: tas
	FCM_tas();


	//Entscheidung
	//Decision: tas[1] = bet?
	if (FCV_TAS[1] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: tas_led(6, an)
		FCM_tas_led(6, FCV_AN);


	} else {
		//Makro-Aufruf
		//Call Macro: tas_led(6, aus)
		FCM_tas_led(6, FCV_AUS);


	}


	//Comment:
	//Kommentar


	//Entscheidung
	//Decision: tas[2] = bet?
	if (FCV_TAS[2] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: tas_led(5, an)
		FCM_tas_led(5, FCV_AN);


	} else {
		//Makro-Aufruf
		//Call Macro: tas_led(5, aus)
		FCM_tas_led(5, FCV_AUS);


	}


	//Comment:
	//Kommentar


	//Entscheidung
	//Decision: tas[3] = bet?
	if (FCV_TAS[3] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: tas_led(4, an)
		FCM_tas_led(4, FCV_AN);


	} else {
		//Makro-Aufruf
		//Call Macro: tas_led(4, aus)
		FCM_tas_led(4, FCV_AUS);


	}


	//Comment:
	//Kommentar


	//Entscheidung
	//Decision: tas[4] = bet?
	if (FCV_TAS[4] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: tas_led(3, an)
		FCM_tas_led(3, FCV_AN);


	} else {
		//Makro-Aufruf
		//Call Macro: tas_led(3, aus)
		FCM_tas_led(3, FCV_AUS);


	}


	//Comment:
	//Kommentar


	//Entscheidung
	//Decision: tas[5] = bet?
	if (FCV_TAS[5] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: tas_led(2, an)
		FCM_tas_led(2, FCV_AN);


	} else {
		//Makro-Aufruf
		//Call Macro: tas_led(2, aus)
		FCM_tas_led(2, FCV_AUS);


	}


	//Comment:
	//Kommentar


	//Entscheidung
	//Decision: tas[6] = bet?
	if (FCV_TAS[6] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: tas_led(1, an)
		FCM_tas_led(1, FCV_AN);


	} else {
		//Makro-Aufruf
		//Call Macro: tas_led(1, aus)
		FCM_tas_led(1, FCV_AUS);


	}


	//Comment:
	//lange takt-dauer
	//bei betätigung von
	//tas[1]


	//takt
	//Decision: ras_tas[1] = bet?
	if (FCV_RAS_TAS[1] == FCV_BET)
	{
		//Makro-Aufruf
		//Call Macro: anz_number(d_time_wert_org_[3], 5, 1, ja)
		FCM_anz_number(FCV_D_TIME_WERT_ORG_[3], 5, 1, FCV_JA);


		//Makro-Aufruf
		//Call Macro: d_time(3, an, nein)
		FCM_d_time(3, FCV_AN, FCV_NEIN);


		//Entscheidung
		//Decision: d_time_ist_[3] = 1?
		if (FCV_D_TIME_IST_[3] == 1)
		{
			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_Haupt_A;


		} else {
			//Entscheidung
			//Decision: d_time_ist_[3] = 2?
			if (FCV_D_TIME_IST_[3] == 2)
			{
				//set_arbeit_d_time_03
				//Call Macro: set_arbeit_d_time_03
				FCM_set_arbeit_d_time_03();


				//Gehe zum Verbindungspunkt
				//Goto Connection Point: [A]: A
				goto FCC_Haupt_A;


			}


		}


		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [B]: B
		goto FCC_Haupt_B;


	} else {
		//Makro-Aufruf
		//Call Macro: anz_number(d_time_wert_org_[1], 5, 1, ja)
		FCM_anz_number(FCV_D_TIME_WERT_ORG_[1], 5, 1, FCV_JA);


	}


	//Comment:
	//Kommentar


	//Makro-Aufruf
	//Call Macro: d_time(1, an, nein)
	FCM_d_time(1, FCV_AN, FCV_NEIN);


	//Entscheidung
	//Decision: d_time_ist_[1] = 1?
	if (FCV_D_TIME_IST_[1] == 1)
	{
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_Haupt_A;


	} else {
		//Entscheidung
		//Decision: d_time_ist_[1] = 2?
		if (FCV_D_TIME_IST_[1] == 2)
		{
			//set_arbeit_d_time_01
			//Call Macro: set_arbeit_d_time_01
			FCM_set_arbeit_d_time_01();


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_Haupt_A;


		}


	}


	//Comment:
	//Kommentar


	//Verbindungspunkt
	//Connection Point: [B]: B
FCC_Haupt_B:


	//d_time_02
	//Call Macro: d_time(2, an, nein)
	FCM_d_time(2, FCV_AN, FCV_NEIN);


	//Entscheidung
	//Decision: d_time_ist_[2] = 1?
	if (FCV_D_TIME_IST_[2] == 1)
	{
		//Gehe zum Verbindungspunkt
		//Goto Connection Point: [A]: A
		goto FCC_Haupt_A;


	} else {
		//Entscheidung
		//Decision: d_time_ist_[2] = 2?
		if (FCV_D_TIME_IST_[2] == 2)
		{
			//set_arbeit_d_time_02
			//Call Macro: set_arbeit_d_time_02
			FCM_set_arbeit_d_time_02();


			//Gehe zum Verbindungspunkt
			//Goto Connection Point: [A]: A
			goto FCC_Haupt_A;


		}


	}


	//Comment:
	//Kommentar


	//zu Ende alles resetten
	//Calculation:
	//  d_time_nr_[1] = aus
	//  d_time_nr_[2] = aus
	//  d_time_nr_[3] = aus
	FCV_D_TIME_NR_[1] = FCV_AUS;
	FCV_D_TIME_NR_[2] = FCV_AUS;
	FCV_D_TIME_NR_[3] = FCV_AUS;
	

	//Gehe zum Verbindungspunkt
	//Goto Connection Point: [A]: A
	goto FCC_Haupt_A;


	mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
	//Handler code for [TMR0]
	if (ts_bit(intcon, TMR0IF) && ts_bit(intcon, TMR0IE))
	{
		FCM_timer_int();
		cr_bit(intcon, TMR0IF);
	}


}



