keypad ve lcd ile şifreleme sorunu

Başlatan thelastrap, 15 Ekim 2014, 15:04:27

thelastrap

16f877a ile Yangın otomasyonu yapıyorum birde şifreleme sistemi koymak istiyorum eğer şifreyi doğru girerseniz acil olarak sistemi durdurabilirsiniz. Farklı yollar denedim keypad ile lcd ekrana yazdırmış olduğum değerleri çekip bi diziye atadım ordanda asıl şifre olan dizi ile karşılaştırdım fakat olmadı bunu nasıl yapabilirim yardımcı olursanız sevinirim.

ziyaretci

Şifre kontrolü ile anahtar kontrol uygulaması yapmıştım. Fikir verebilir.

http://elektrocavus.com/?TR=0x011&Tr=52

M.Salim GÜLLÜCE

#2
Faydası olucaksa şifreli keypad girişli hırsız alarmı.
Şifresi değiştirilebilir. 628 üzerine kurulu.

sende 877 ye adapte edebilirsin.

//************************************************************************************
//**  
//**  File name:     C:\Users\Dede\Documents\FlowCode\Samples\Hirsiz Alarmi\Hirsiz Alarmi 001a.c
//**  Title:         H?rsiz Alarmi
//**  Description:   [C) Elk. Hab. Muh. Mehmet Salim GULLUCE
//**                 (C) End-El-San Ltd. Sti.
//**                 
//**                 Picli Ekransiz Sifreli Hirsiz Alarmi
//**  
//**  Generated by:  Flowcode v5.1.0.0
//**  Date:          Friday, June 01, 2012 23:18:42
//**  Licence:       Professional
//**  Registered to: Dede
//**  Licence key:   End-El-San
//**  
//**  
//**  http://www.matrixmultimedia.com
//**  
//************************************************************************************


#define MX_PIC

#define MX_USES_UINT8 1
#define MX_USES_SINT16 1
#define MX_USES_CHAR 0
#define MX_USES_FLOAT 0
#define MX_USES_SINT32 0
#define MX_USES_BOOL 1
#define MX_USES_UINT16 1
#define MX_USES_UINT32 0
//Mikrodenetleyici için tan?mlamalar
#define P16F628A
#define FC_CAL_PIC
#define MX_EE
#define MX_EE_SIZE 128
#define MX_UART_1
#define MX_UART_1_TX_PORT portb
#define MX_UART_1_TX_TRIS trisb
#define MX_UART_1_TX_PIN 2
#define MX_UART_1_RX_PORT portb
#define MX_UART_1_RX_TRIS trisb
#define MX_UART_1_RX_PIN 1
#define MX_PWM
#define MX_PWM_CNT 1
#define MX_PWM_PSCA1
#define MX_PWM_PSCA4
#define MX_PWM_PSCA16
#define MX_PWM_1_PORT portb
#define MX_PWM_1_TRIS trisb
#define MX_PWM_1_PIN 3

//Fonksiyonlar
#define MX_CLK_SPEED 4000000
#ifdef _BOOSTC
#include <system.h>
#endif
#ifdef HI_TECH_C
#include <pic.h>
#endif

//Dosya yap?land?rmas?
#ifdef _BOOSTC
#pragma DATA 0x2007, 0x1f19
#endif
#ifdef HI_TECH_C
__CONFIG(0x1f19);
#endif

//Dahili fonksiyonlar
#include "C:\Program Files (x86)\Flowcode\v5\FCD\internals.c"

//Makro fonksiyon bildirileri
MX_UINT8 FCM_KEY_AL();
MX_SINT16 FCM_YENI_SIFRE_GIR();
MX_SINT16 FCM_SIFRE_GIR();
MX_SINT16 FCM_ALARM_KARAR();
void FCM_ALARM_KUR();
void FCM_BUZZER_OK();
void FCM_BUZZER_INPUT();
void FCM_BUZZER_HATA();


//De?i?ken bildirileri
#define FCV_HANE (4) // Şifre Hanesi
#define FCV_SURE (10) // Süre Saniye
MX_UINT8 FCV_GIRDI; // Alarm Girdisi (A3)
MX_UINT16 FCV_SIFRE_G; // Girilen Şifre
MX_BOOL FCV_ALARM_OUT; // Alarm Çıktısı (A0)
MX_BOOL FCV_ACTIVE_LED; // Alarm Aktif Ledi (B7)
MX_BOOL FCV_RESET; // Alarm Sıfırlama
MX_UINT16 FCV_SAYAC_H; // Timer Sayacı High
MX_UINT8 FCV_TUS; // Basılan Tuş
MX_UINT16 FCV_SAYAC_L; // Timer Sayacı Low
MX_BOOL FCV_BUZZER; // Buzzer Çıktısı (A1)
MX_UINT16 FCV_SIFRE; // Mevcut Şifre

MX_UINT8 FCLV_LOOP1;
MX_UINT8 FCLV_LOOP2;



//KeyPad(0): //Defines:

/**** Macro Substitutions ****

a = Unique Reference
b = Key List (Numbers)
c = Key List (Characters)
d = Number of Columns
e = Column Port Letter
f = Column Pin Number 0
g = Column Pin Number 1
h = Column Pin Number 2
i = Column Pin Number 3
j = Number of Rows
k = Row Port Letter
l = Row Pin Number 0
m = Row Pin Number 1
n = Row Pin Number 2
o = Row Pin Number 3

******************************/

//Keypad Common Defines

#define Keypad_3_MX_KEYPAD_COL_NUM	3
#define Keypad_3_MX_KEYPAD_COL_PORT	portb
#define Keypad_3_MX_KEYPAD_COL_TRIS	trisb
#define Keypad_3_MX_KEYPAD_COL_PIN0	4
#define Keypad_3_MX_KEYPAD_COL_PIN1	5
#define Keypad_3_MX_KEYPAD_COL_PIN2	6
#define Keypad_3_MX_KEYPAD_COL_PIN3	0
#define Keypad_3_MX_KEYPAD_ROW_NUM	4
#define Keypad_3_MX_KEYPAD_ROW_PORT	portb
#define Keypad_3_MX_KEYPAD_ROW_TRIS	trisb
#define Keypad_3_MX_KEYPAD_ROW_PIN0	0
#define Keypad_3_MX_KEYPAD_ROW_PIN1	1
#define Keypad_3_MX_KEYPAD_ROW_PIN2	2
#define Keypad_3_MX_KEYPAD_ROW_PIN3	3

//Keypad Pin Arrays

ROMARRAY_S Keypad_3_MX_KEYPAD_COL ROMARRAY_E = {
	#if (Keypad_3_MX_KEYPAD_COL_NUM >= 1)
		Keypad_3_MX_KEYPAD_COL_PIN0
	#endif
	#if (Keypad_3_MX_KEYPAD_COL_NUM >= 2)
		,Keypad_3_MX_KEYPAD_COL_PIN1
	#endif
	#if (Keypad_3_MX_KEYPAD_COL_NUM >= 3)
		,Keypad_3_MX_KEYPAD_COL_PIN2
	#endif
	#if (Keypad_3_MX_KEYPAD_COL_NUM >= 4)
		,Keypad_3_MX_KEYPAD_COL_PIN3
	#endif
	};

ROMARRAY_S Keypad_3_MX_KEYPAD_ROW ROMARRAY_E = {
	#if (Keypad_3_MX_KEYPAD_ROW_NUM >= 1)
		Keypad_3_MX_KEYPAD_ROW_PIN0
	#endif
	#if (Keypad_3_MX_KEYPAD_ROW_NUM >= 2)
		,Keypad_3_MX_KEYPAD_ROW_PIN1
	#endif
	#if (Keypad_3_MX_KEYPAD_ROW_NUM >= 3)
		,Keypad_3_MX_KEYPAD_ROW_PIN2
	#endif
	#if (Keypad_3_MX_KEYPAD_ROW_NUM >= 4)
		,Keypad_3_MX_KEYPAD_ROW_PIN3
	#endif
	};

//Keypad Keypress Data Arrays

ROMARRAY_S Keypad_3_mtxKeysAsNumbers ROMARRAY_E = {1,4,7,10,2,5,8,0,3,6,9,11};
ROMARRAY_S Keypad_3_mtxKeysAsChars ROMARRAY_E = {'1','4','7','*','2','5','8','0','3','6','9','#'};




//KeyPad(0): //Makro fonksiyon bildirileri

MX_UINT8 FCD_KeyPad0_GetKeypadNumber();
MX_UINT8 FCD_KeyPad0_GetKeypadAscii();


//EEPROM(0): //Defines:

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

#ifndef MX_EEPROM_REF
	#define MX_EEPROM_REF

	extern MX_UINT8 FC_CAL_EE_Read (MX_UINT16 Address);
	extern void FC_CAL_EE_Write (MX_UINT16 Address, MX_UINT8 Data);

#endif




//EEPROM(0): //Makro fonksiyon bildirileri

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



//KeyPad(0): //Makro uygulamas?


MX_UINT8 FCD_KeyPad0_GetKeypadNumber()
{
	
		MX_UINT8 iCol, iRow, idx;

		for (iCol = 0; iCol < Keypad_3_MX_KEYPAD_COL_NUM; iCol++)
		{
			FC_CAL_Bit_High_DDR ( Keypad_3_MX_KEYPAD_COL_PORT, Keypad_3_MX_KEYPAD_COL_TRIS, Keypad_3_MX_KEYPAD_COL[iCol] ); 		//output the appropriate column high
			delay_us(10);																//delay to allow input to settle

			for (iRow = 0; iRow < Keypad_3_MX_KEYPAD_ROW_NUM; iRow++)
			{
				FC_CAL_Bit_In_DDR ( Keypad_3_MX_KEYPAD_ROW_PORT, Keypad_3_MX_KEYPAD_ROW_TRIS, Keypad_3_MX_KEYPAD_ROW[iRow] );
				if ( FC_CAL_Bit_In ( Keypad_3_MX_KEYPAD_ROW_PORT, Keypad_3_MX_KEYPAD_ROW[iRow] ))
				{
					idx = (iCol * Keypad_3_MX_KEYPAD_ROW_NUM) + iRow;
					FC_CAL_Bit_In_DDR ( Keypad_3_MX_KEYPAD_COL_PORT, Keypad_3_MX_KEYPAD_COL_TRIS, Keypad_3_MX_KEYPAD_COL[iCol] ); 	//Allow the column pin to float
					return (Keypad_3_mtxKeysAsNumbers[idx]);
				}
			}
			FC_CAL_Bit_In_DDR ( Keypad_3_MX_KEYPAD_COL_PORT, Keypad_3_MX_KEYPAD_COL_TRIS, Keypad_3_MX_KEYPAD_COL[iCol] ); 		//Allow the column pin to float
		}
		return (255);																	//if it gets here, it has not been found...

}

MX_UINT8 FCD_KeyPad0_GetKeypadAscii()
{
	
		MX_UINT8 iCol, iRow, idx;

		for (iCol = 0; iCol < Keypad_3_MX_KEYPAD_COL_NUM; iCol++)
		{
			FC_CAL_Bit_High_DDR ( Keypad_3_MX_KEYPAD_COL_PORT, Keypad_3_MX_KEYPAD_COL_TRIS, Keypad_3_MX_KEYPAD_COL[iCol] ); 		//output the appropriate column high
			delay_us(10);																//delay to allow input to settle

			for (iRow = 0; iRow < Keypad_3_MX_KEYPAD_ROW_NUM; iRow++)
			{
				FC_CAL_Bit_In_DDR ( Keypad_3_MX_KEYPAD_ROW_PORT, Keypad_3_MX_KEYPAD_ROW_TRIS, Keypad_3_MX_KEYPAD_ROW[iRow] );
				if ( FC_CAL_Bit_In ( Keypad_3_MX_KEYPAD_ROW_PORT, Keypad_3_MX_KEYPAD_ROW[iRow] ))
				{
					idx = (iCol * Keypad_3_MX_KEYPAD_ROW_NUM) + iRow;
					FC_CAL_Bit_In_DDR ( Keypad_3_MX_KEYPAD_COL_PORT, Keypad_3_MX_KEYPAD_COL_TRIS, Keypad_3_MX_KEYPAD_COL[iCol] ); 	//Allow the column pin to float
					return (Keypad_3_mtxKeysAsChars[idx]);
				}
			}
			FC_CAL_Bit_In_DDR ( Keypad_3_MX_KEYPAD_COL_PORT, Keypad_3_MX_KEYPAD_COL_TRIS, Keypad_3_MX_KEYPAD_COL[iCol] ); 		//Allow the column pin to float
		}
		return (255);																	//if it gets here, it has not been found...

}



//EEPROM(0): //Makro uygulamas?


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

}

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

}

#include "C:\Program Files (x86)\Flowcode\v5\CAL\includes.c"

//Makro uygulamas?

//KEYBOARD ALGILAMA 

MX_UINT8 FCM_KEY_AL()
{
	//Yerel de?i?ken tan?mlamalar?
	MX_UINT8 FCL_KEY_AL_TUS_TEMP; // Geçici Tu?


	MX_UINT8 FCR_RETVAL;

	//Basilan Tus Alamayi Cagir
	//Bile?en makrosunu ça??r: TUS=GetKeypadNumber()
	FCV_TUS = FCD_KeyPad0_GetKeypadNumber();

	//Karar  
	//Karar  : TUS <> 255?
	if (FCV_TUS != 255)
	{

		//Ic Dongu Baglanti noktasi
		//Ba?lant? noktas?: [A]: A
FCC_KEY_AL_A:
;

		//Basilan Tus Alamayi Cagir
		//Bile?en makrosunu ça??r: .TUS_TEMP=GetKeypadNumber()
		FCL_KEY_AL_TUS_TEMP = FCD_KeyPad0_GetKeypadNumber();

		//Bas?lan Tus B?rakildimi ?
		//Karar  : TUS <> .TUS_TEMP?
		if (FCV_TUS != FCL_KEY_AL_TUS_TEMP)
		{

			//Dongu
			//Döngü: Döngü 2 Kere
			for (FCLV_LOOP1=0; FCLV_LOOP1<2; FCLV_LOOP1++)
			{

				//Buzzer ON
				//Ç?kt?  : 0 -> A1
				trisa = trisa & 0xFD;
				if ((0))
					porta = (porta & 0xFD) | 0x02;
				else
					porta = porta & 0xFD;

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

				//Buzzer OFF
				//Ç?kt?  : 1 -> A1
				trisa = trisa & 0xFD;
				if ((1))
					porta = (porta & 0xFD) | 0x02;
				else
					porta = porta & 0xFD;

				//Gecikme   
				//Gecikme   : 50 ms
				delay_ms(50);


			}

		} else {

			//Ic Dongu Baglanti noktasina git
			//Ba?lant? noktas?na git: [A]: A
			goto FCC_KEY_AL_A;

		}

	// } else {

	}

	return (FCR_RETVAL);
}

//Yeni ?ifre giri?i

MX_SINT16 FCM_YENI_SIFRE_GIR()
{
	//Yerel de?i?ken tan?mlamalar?
	MX_UINT8 FCL_YENI_SIFRE_GIR_SAYAC; // Dongu Sayac?
	MX_UINT8 FCL_YENI_SIFRE_GIR_SIFRE_H;
	MX_UINT8 FCL_YENI_SIFRE_GIR_SIFRE_L;


	MX_SINT16 FCR_RETVAL;

	//Degiskenleri Sifirla
	//Hesaplama  :
	//  .SAYAC = 0
	//  SIFRE = 0
	FCL_YENI_SIFRE_GIR_SAYAC = 0;
	FCV_SIFRE = 0;

	//Giris Sesi Ureti Cagir
	//Makro ça??r  : BUZZER_INPUT()
	FCM_BUZZER_INPUT();

	//Hane Defa Don
	//Döngü: ?ken .SAYAC < HANE
	while (1)
	{

		//Ic Dongu Baglanti noktasi
		//Ba?lant? noktas?: [A]: A
FCC_YENI_SIFRE_GIR_A:
;

		//Basilan Tus Alamayi Cagir 
		//Makro ça??r  : KEY_AL()
		FCM_KEY_AL();

		//Rakam Tuslarina Basildimi
		//Karar  : TUS < 10?
		if (FCV_TUS < 10)
		{

			//Hane Sayaci 3 mu ?
			//Karar  : .SAYAC = 3?
			if (FCL_YENI_SIFRE_GIR_SAYAC == 3)
			{

				//Birler Hanesini ekle
				//Hesaplama  :
				//  SIFRE = SIFRE + TUS
				FCV_SIFRE = FCV_SIFRE + FCV_TUS;

			} else {

				//Hane Sayaci 2 mi ?
				//Karar  : .SAYAC = 2?
				if (FCL_YENI_SIFRE_GIR_SAYAC == 2)
				{

					//Onlar Hanesini Ekle
					//Hesaplama  :
					//  SIFRE = SIFRE + TUS * 10
					FCV_SIFRE = FCV_SIFRE + FCV_TUS * 10;

				} else {

					//Hane Sayaci 1 mi ?
					//Karar  : .SAYAC = 1?
					if (FCL_YENI_SIFRE_GIR_SAYAC == 1)
					{

						//Yuzler Hanesini Ekle
						//Hesaplama  :
						//  SIFRE = SIFRE + TUS * 100
						FCV_SIFRE = FCV_SIFRE + FCV_TUS * 100;

					} else {

						//Binler Hanesini Ekle
						//Hesaplama  :
						//  SIFRE = SIFRE + TUS * 1000
						FCV_SIFRE = FCV_SIFRE + FCV_TUS * 1000;

					}

				}

			}

			//Hane Sayacini Arttir
			//Hesaplama  :
			//  .SAYAC = .SAYAC + 1
			FCL_YENI_SIFRE_GIR_SAYAC = FCL_YENI_SIFRE_GIR_SAYAC + 1;

		} else {

			//Ic Dongu Baglanti Noktasina Git
			//Ba?lant? noktas?na git: [A]: A
			goto FCC_YENI_SIFRE_GIR_A;

		}


		if ((FCL_YENI_SIFRE_GIR_SAYAC < FCV_HANE) == 0) break;
	}

	//Girilen Sifreyi Baytlara Ayir
	//Hesaplama  :
	//  .SIFRE_H = (SIFRE / 256)
	//  .SIFRE_L = SIFRE - (.SIFRE_H * 256)
	FCL_YENI_SIFRE_GIR_SIFRE_H = (FCV_SIFRE / 256);
	FCL_YENI_SIFRE_GIR_SIFRE_L = FCV_SIFRE - (FCL_YENI_SIFRE_GIR_SIFRE_H * 256);

	//Sifre High Eproma Yaz
	//Bile?en makrosunu ça??r: Write(0000, .SIFRE_H)
	FCD_EEPROM0_WriteEEPROM(0000, FCL_YENI_SIFRE_GIR_SIFRE_H);

	//Sifre Low Eproma Yaz
	//Bile?en makrosunu ça??r: Write(0001, .SIFRE_L)
	FCD_EEPROM0_WriteEEPROM(0001, FCL_YENI_SIFRE_GIR_SIFRE_L);

	return (FCR_RETVAL);
}

//Mevcut ?ifre Giri?i

MX_SINT16 FCM_SIFRE_GIR()
{
	//Yerel de?i?ken tan?mlamalar?
	MX_UINT8 FCL_SIFRE_GIR_SAYAC;


	MX_SINT16 FCR_RETVAL;

	//Degiskenleri Sifirla
	//Hesaplama  :
	//  SIFRE_G = 0
	//  .SAYAC = 0
	FCV_SIFRE_G = 0;
	FCL_SIFRE_GIR_SAYAC = 0;

	//Giris Sesi Ureti Cagir
	//Makro ça??r  : BUZZER_INPUT()
	FCM_BUZZER_INPUT();

	//Hane Defa Don
	//Döngü: ?ken .SAYAC < HANE
	while (1)
	{

		//Ic Dongu Baglanti noktasi
		//Ba?lant? noktas?: [A]: A
FCC_SIFRE_GIR_A:
;

		//Basilan Tus Alamayi Cagir 
		//Makro ça??r  : KEY_AL()
		FCM_KEY_AL();

		//Rakam Tuslarina Basildimi
		//Karar  : TUS < 10?
		if (FCV_TUS < 10)
		{

			//Hane Sayaci 3 mu ?
			//Karar  : .SAYAC = 3?
			if (FCL_SIFRE_GIR_SAYAC == 3)
			{

				//Birler Hanesini ekle
				//Hesaplama  :
				//  SIFRE_G = SIFRE_G + TUS
				FCV_SIFRE_G = FCV_SIFRE_G + FCV_TUS;

			} else {

				//Hane Sayaci 2 mi ?
				//Karar  : .SAYAC = 2?
				if (FCL_SIFRE_GIR_SAYAC == 2)
				{

					//Onlar Hanesini ekle
					//Hesaplama  :
					//  SIFRE_G = SIFRE_G + TUS * 10
					FCV_SIFRE_G = FCV_SIFRE_G + FCV_TUS * 10;

				} else {

					//Hane Sayaci 1 mi ?
					//Karar  : .SAYAC = 1?
					if (FCL_SIFRE_GIR_SAYAC == 1)
					{

						//Yüzler Hanesini ekle
						//Hesaplama  :
						//  SIFRE_G = SIFRE_G + TUS * 100
						FCV_SIFRE_G = FCV_SIFRE_G + FCV_TUS * 100;

					} else {

						//Binler Hanesini ekle
						//Hesaplama  :
						//  SIFRE_G = SIFRE_G + TUS * 1000
						FCV_SIFRE_G = FCV_SIFRE_G + FCV_TUS * 1000;

					}

				}

			}

			//Hane Sayacini Arttir
			//Hesaplama  :
			//  .SAYAC = .SAYAC + 1
			FCL_SIFRE_GIR_SAYAC = FCL_SIFRE_GIR_SAYAC + 1;

		} else {

			//Ic Dongu Baglanti Noktasina Git
			//Ba?lant? noktas?na git: [A]: A
			goto FCC_SIFRE_GIR_A;

		}


		if ((FCL_SIFRE_GIR_SAYAC < FCV_HANE) == 0) break;
	}

	return (FCR_RETVAL);
}

//Alarm Uygulamas? Check

MX_SINT16 FCM_ALARM_KARAR()
{

	MX_SINT16 FCR_RETVAL;

	//Alarm Aktifmi
	//Karar  : ACTIVE_LED = 1?
	if (FCV_ACTIVE_LED == 1)
	{

		//Alarrm ?hlali Varmi ?
		//Karar  : GIRDI = 1 AND ALARM_OUT = 1?
		if (FCV_GIRDI == 1 & FCV_ALARM_OUT == 1)
		{

			//Sayac Low 62 oldumu (62 = 1 Sn) ?
			//Karar  : SAYAC_L = 62?
			if (FCV_SAYAC_L == 62)
			{

				//Sayaç High Arttir
				//Hesaplama  :
				//  SAYAC_L = 0
				//  SAYAC_H = SAYAC_H + 1
				FCV_SAYAC_L = 0;
				FCV_SAYAC_H = FCV_SAYAC_H + 1;

			} else {

				//Sayac Low Arttir
				//Hesaplama  :
				//  SAYAC_L = SAYAC_L + 1
				FCV_SAYAC_L = FCV_SAYAC_L + 1;

			}

			//Sayac High Sureye Esitmi ?
			//Karar  : SAYAC_H >= SURE?
			if (FCV_SAYAC_H >= FCV_SURE)
			{

				//Alarm C?kisi Ver
				//Hesaplama  :
				//  ALARM_OUT = 0
				FCV_ALARM_OUT = 0;

			} else {

				//Alarm C?kisi Verme
				//Hesaplama  :
				//  ALARM_OUT = 1
				FCV_ALARM_OUT = 1;

			}

		} else {

			//Sure Sayaclarini Sifirla
			//Hesaplama  :
			//  SAYAC_L = 0
			//  SAYAC_H = 0
			FCV_SAYAC_L = 0;
			FCV_SAYAC_H = 0;

		}

	} else {

		//Alarm Cikisi Kapat
		//Hesaplama  :
		//  ALARM_OUT = 1
		FCV_ALARM_OUT = 1;

		//Sure Sayaclarini Sifirla
		//Hesaplama  :
		//  SAYAC_L = 0
		//  SAYAC_H = 0
		FCV_SAYAC_L = 0;
		FCV_SAYAC_H = 0;

	}

	return (FCR_RETVAL);
}

//Alarm Kurulup Kurulmamas? Key ay?klamas?

void FCM_ALARM_KUR()
{

	//* a basildimi ?
	//Karar  : TUS = 10 AND (ALARM_OUT = 1 OR ACTIVE_LED = 0) AND (ALARM_OUT = 0 OR ACTIVE_LED = 1)?
	if (FCV_TUS == 10 & (FCV_ALARM_OUT == 1 | FCV_ACTIVE_LED == 0) & (FCV_ALARM_OUT == 0 | FCV_ACTIVE_LED == 1))
	{

		//Sifre Gir
		//Makro ça??r  : SIFRE_GIR()
		FCM_SIFRE_GIR();

		//Girilen Sifre Dogrumu ?
		//Karar  : SIFRE_G = SIFRE?
		if (FCV_SIFRE_G == FCV_SIFRE)
		{

			//Alarm Aktif
			//Hesaplama  :
			//  ACTIVE_LED = 0
			FCV_ACTIVE_LED = 0;

			//OK Sesi Ver
			//Makro ça??r  : BUZZER_OK()
			FCM_BUZZER_OK();

		} else {

			//Hatali Giris Sesi Ver
			//Makro ça??r  : BUZZER_HATA()
			FCM_BUZZER_HATA();

		}

	} else {

		//# ye basildimi ?
		//Karar  : TUS = 11 AND ACTIVE_LED = 0?
		if (FCV_TUS == 11 & FCV_ACTIVE_LED == 0)
		{

			//Sifre Gir
			//Makro ça??r  : SIFRE_GIR()
			FCM_SIFRE_GIR();

			//Girilen Sifre Dogrumu ?
			//Karar  : SIFRE_G = SIFRE?
			if (FCV_SIFRE_G == FCV_SIFRE)
			{

				//Alarm Pasif
				//Hesaplama  :
				//  ACTIVE_LED = 1
				FCV_ACTIVE_LED = 1;

				//OK Sesi Ver
				//Makro ça??r  : BUZZER_OK()
				FCM_BUZZER_OK();

			} else {

				//Hatali Giris Sesi Ver
				//Makro ça??r  : BUZZER_HATA()
				FCM_BUZZER_HATA();

			}

		// } else {

		}

	}

}

//Dogru Giris (OOO-KEY)  Sesi URETIR

void FCM_BUZZER_OK()
{

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

	//Buzzer ON
	//Ç?kt?  : 0 -> A1
	trisa = trisa & 0xFD;
	if ((0))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Gecikme   
	//Gecikme   : 700 ms
	delay_ms(255);
	delay_ms(255);
	delay_ms(190);

	//Buzzer OFF
	//Ç?kt?  : 1 -> A1
	trisa = trisa & 0xFD;
	if ((1))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Gecikme   
	//Gecikme   : 50 ms
	delay_ms(50);

	//Buzzer ON
	//Ç?kt?  : 0 -> A1
	trisa = trisa & 0xFD;
	if ((0))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

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

	//Buzzer OFF
	//Ç?kt?  : 1 -> A1
	trisa = trisa & 0xFD;
	if ((1))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

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

}

//4 Haneli Sifre Girdisi Icin Giri? Sesi URETIR

void FCM_BUZZER_INPUT()
{

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

	//Dongu
	//Döngü: Döngü 10 Kere
	for (FCLV_LOOP2=0; FCLV_LOOP2<10; FCLV_LOOP2++)
	{

		//Buzzer ON
		//Ç?kt?  : 0 -> A1
		trisa = trisa & 0xFD;
		if ((0))
			porta = (porta & 0xFD) | 0x02;
		else
			porta = porta & 0xFD;

		//Gecikme   
		//Gecikme   : 50 ms
		delay_ms(50);

		//Buzzer OFF
		//Ç?kt?  : 1 -> A1
		trisa = trisa & 0xFD;
		if ((1))
			porta = (porta & 0xFD) | 0x02;
		else
			porta = porta & 0xFD;

		//Gecikme   
		//Gecikme   : 50 ms
		delay_ms(50);


	}

}

//Hatali Giris (HA-TAAA)  Sesi URETIR

void FCM_BUZZER_HATA()
{

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

	//Buzzer ON
	//Ç?kt?  : 0 -> A1
	trisa = trisa & 0xFD;
	if ((0))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

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

	//Buzzer OFF
	//Ç?kt?  : 1 -> A1
	trisa = trisa & 0xFD;
	if ((1))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

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

	//Buzzer ON
	//Ç?kt?  : 0 -> A1
	trisa = trisa & 0xFD;
	if ((0))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Gecikme   
	//Gecikme   : 700 ms
	delay_ms(255);
	delay_ms(255);
	delay_ms(190);

	//Buzzer OFF
	//Ç?kt?  : 1 -> A1
	trisa = trisa & 0xFD;
	if ((1))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

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

}



void main()
{
	//Yerel de?i?ken tan?mlamalar?
	MX_UINT8 FCL_MAIN_SIFRE_H; // ?ifre Yüksek BAYT
	MX_UINT8 FCL_MAIN_SIFRE_L; // ?ifre Alçak BAYT
	MX_UINT8 FCL_MAIN_RUNNING; // Ye?il Led Ç?kt?s? (A2)

	//Initialization
	cmcon = 0x07;


	//Interrupt initialization code
	option_reg = 0xC0;


	//Hesaplama  
	//Hesaplama  :
	//  SIFRE = 0
	//  TUS = 0
	//  ALARM_OUT = 1
	//  ACTIVE_LED = 0
	//  BUZZER = 1
	//  .RUNNING = 0
	FCV_SIFRE = 0;
	FCV_TUS = 0;
	FCV_ALARM_OUT = 1;
	FCV_ACTIVE_LED = 0;
	FCV_BUZZER = 1;
	FCL_MAIN_RUNNING = 0;

	//Sifre High Epromdan
	//Bile?en makrosunu ça??r: .SIFRE_H=Read(0000)
	FCL_MAIN_SIFRE_H = FCD_EEPROM0_EEPROMRead(0000);

	//Sifre Low Epromdan
	//Bile?en makrosunu ça??r: .SIFRE_L=Read(0001)
	FCL_MAIN_SIFRE_L = FCD_EEPROM0_EEPROMRead(0001);

	//Sifre Topla
	//Hesaplama  :
	//  SIFRE = .SIFRE_L + .SIFRE_H * 256
	FCV_SIFRE = FCL_MAIN_SIFRE_L + FCL_MAIN_SIFRE_H * 256;

	//Sifre Bozuk mu?
	//Karar  : SIFRE > 9999?
	if (FCV_SIFRE > 9999)
	{

		//Sifre Sifirla
		//Hesaplama  :
		//  .SIFRE_H = 0
		//  .SIFRE_L = 0
		//  SIFRE = 0
		FCL_MAIN_SIFRE_H = 0;
		FCL_MAIN_SIFRE_L = 0;
		FCV_SIFRE = 0;

		//Sifre High Eproma yaz
		//Bile?en makrosunu ça??r: Write(0000, SAYAC_H)
		FCD_EEPROM0_WriteEEPROM(0000, FCV_SAYAC_H);

		//Sifre Low Eproma Yaz
		//Bile?en makrosunu ça??r: Write(0001, .SIFRE_L)
		FCD_EEPROM0_WriteEEPROM(0001, FCL_MAIN_SIFRE_L);

	// } else {

	}

	//Ana Dongu Baglant? Noktasi
	//Ba?lant? noktas?: [A]: A
FCC_Main_A:
;

	//Tus Okumaya Git
	//Makro ça??r  : KEY_AL()
	FCM_KEY_AL();

	//RESET Butonu Oku
	//Girdi: A4 -> RESET
	trisa = trisa | 0x10;
	FCV_RESET = ((porta & 0x10) == 0x10);

	//(Alarm Sustur) Reset + * + Alarm OUT mi?
	//Karar  : RESET = 0 AND ALARM_OUT = 0 AND TUS = 10?
	if (FCV_RESET == 0 & FCV_ALARM_OUT == 0 & FCV_TUS == 10)
	{

		//Sifre Gir
		//Makro ça??r  : SIFRE_GIR()
		FCM_SIFRE_GIR();

		//Girilen Sifre Dogrumu ?
		//Karar  : SIFRE_G = SIFRE?
		if (FCV_SIFRE_G == FCV_SIFRE)
		{

			//Alarm Kapa
			//Hesaplama  :
			//  ALARM_OUT = 1
			//  ACTIVE_LED = 0
			FCV_ALARM_OUT = 1;
			FCV_ACTIVE_LED = 0;

			//OK Sesi Ver
			//Makro ça??r  : BUZZER_OK()
			FCM_BUZZER_OK();

		} else {

			//Hatali Giris Sesi Ver
			//Makro ça??r  : BUZZER_HATA()
			FCM_BUZZER_HATA();

		}

	} else {

		//Sifre Degistirsinmi ?
		//Karar  : RESET = 0 AND ALARM_OUT = 1 AND TUS = 0?
		if (FCV_RESET == 0 & FCV_ALARM_OUT == 1 & FCV_TUS == 0)
		{

			//Sifre Gir
			//Makro ça??r  : SIFRE_GIR()
			FCM_SIFRE_GIR();

			//Girilen Sifre Dogrumu ?
			//Karar  : SIFRE = SIFRE_G?
			if (FCV_SIFRE == FCV_SIFRE_G)
			{

				//Yeni Sifre Gir
				//Makro ça??r  : YENI_SIFRE_GIR()
				FCM_YENI_SIFRE_GIR();

				//OK Sesi Ver
				//Makro ça??r  : BUZZER_OK()
				FCM_BUZZER_OK();

			} else {

				//Hatali Giris Sesi Ver
				//Makro ça??r  : BUZZER_HATA()
				FCM_BUZZER_HATA();

			}

		// } else {

		}

	}

	//Tu? * veya # mi?
	//Karar  : TUS = 10 OR TUS = 11?
	if (FCV_TUS == 10 | FCV_TUS == 11)
	{

		//Alarm Kurmaya Git
		//Makro ça??r  : ALARM_KUR()
		FCM_ALARM_KUR();

	// } else {

	}

	//Girdi
	//Girdi: A3 -> GIRDI
	trisa = trisa | 0x08;
	FCV_GIRDI = ((porta & 0x08) == 0x08);

	//Alarm Karara Git
	//Makro ça??r  : ALARM_KARAR()
	FCM_ALARM_KARAR();

	//200 Dongude Aktif Ledini Yak
	//Karar  : .RUNNING >= 200?
	if (FCL_MAIN_RUNNING >= 200)
	{

		//Donguyu Calisma Ledine Cik
		//Ç?kt?  : .RUNNING -> PORTA
		trisa = trisa & 0xFB;
		porta = (porta & 0xFB) | ((FCL_MAIN_RUNNING) & 0x04);

		//Alarm Durumunu Lede Cik
		//Ç?kt?  : ACTIVE_LED -> B7
		trisb = trisb & 0x7F;
		if ((FCV_ACTIVE_LED))
			portb = (portb & 0x7F) | 0x80;
		else
			portb = portb & 0x7F;

	} else {

		//Calisma Ledini Sifirla
		//Ç?kt?  : 0 -> A2
		trisa = trisa & 0xFB;
		if ((0))
			porta = (porta & 0xFB) | 0x04;
		else
			porta = porta & 0xFB;

	}

	//Running Dongu Sayacini Arttir
	//Hesaplama  :
	//  .RUNNING = .RUNNING + 1
	FCL_MAIN_RUNNING = FCL_MAIN_RUNNING + 1;

	//Alarmi Cik
	//Ç?kt?  : ALARM_OUT -> A0
	trisa = trisa & 0xFE;
	if ((FCV_ALARM_OUT))
		porta = (porta & 0xFE) | 0x01;
	else
		porta = porta & 0xFE;

	//Buzzeri C?k
	//Ç?kt?  : BUZZER -> A1
	trisa = trisa & 0xFD;
	if ((FCV_BUZZER))
		porta = (porta & 0xFD) | 0x02;
	else
		porta = porta & 0xFD;

	//Gecikme   
	//Gecikme   : 10 ms
	delay_ms(10);

	//Ana Dongu Baglanti Noktasina Git
	//Ba?lant? noktas?na git: [A]: A
	goto FCC_Main_A;

	mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
}
[/b]

Flowcode da hazırlandı.
Dilersen flow dosyasınıda ekleyebilirim.

thelastrap