;======================================= ; TUBITAK-MAM 20.07.2001 ; ORTEM ; GUVENLİK SİSTEMİ ; AFARUK-HALUK ;======================================= ;-------------------------------------------------------------------- ;RAM PAYLASIMI: ;-------------------------------------------------------------------- ;0H-20H Ozel saklayicilar ;20H-2FH Bit adreslenebilir bolge ;30H-39H Degiskenlerin oldugu alan... ;60H-66H Degiskenlerin oldugu alan... ;40H-59H Bos alan...................(6 byte) ;5BH-5FH Bos alan...................(6 byte) ;60H-7FH Yigin icin ayrilmis alan ;-------------------------------------------------------------------- ;--- SMART KARTTAN OKUNAN BILGILERIN AKTARILDIĞI HAFIZA ADRESLERİ --- ID_NO_H_ADRES EQU 030H ID_NO_L_ADRES EQU 031H SIFRE_H_ADRES EQU 032H SIFRE_L_ADRES EQU 033H GUVEN_PAR_H_ADRES EQU 034H GUVEN_PAR_L_ADRES EQU 035H SISTEM_NO_H DATA 021H SISTEM_NO_L DATA 022H ID_N0_TUT_H DATA 023H ID_N0_TUT_L DATA 024H IPTAL_EDILMIS_VARMI DATA 025H ID_NO_H DATA 030H ID_NO_L DATA 031H SIFRE_H DATA 032H SIFRE_L DATA 033H GUVEN_PAR_H DATA 034H GUVEN_PAR_L DATA 035H EEPROM_YAZ_VERI_H DATA 036H EEPROM_YAZ_VERI_L DATA 037H EEPROM_ADRES DATA 038H EEPROM_SECIMI DATA 039H SIFRE_DEGIS_BELIRLE DATA 060H HATA_KONTROL DATA 061H EEPROMDAN_GELEN_VERI_H DATA 062H EEPROMDAN_GELEN_VERI_L DATA 063H GUV_PAR_BUL_ADRES DATA 064H SIFRE_BUL_ADRES DATA 065H GIRILEN_KARAKTER_SAY DATA 066H KULLANICI_SAYISI DATA 067H SISTEM_KART_ONAY DATA 068H ;---------- SMART KARTTAKİ VERİLERİN ADRES BİLGİLERİ--------------- ID_NO_ADRES EQU 000H SIFRE_ADRES EQU 001H GUVEN_PAR_ADRES EQU 002H SISTEM_NO_ADRES_SMART EQU 03H ;-------- SMART KART VE DAHILI SERI EEPROM UN BAĞLANTILARI ---------- DIO BIT p1.6 CS_S BIT p1.5 ; SMART KART IN CS UCU CS_D BIT P1.7 ; DAHİLİ EEPROM CS UCU SK BIT p1.4 ;-------------------------------------------------------------------- SIFRE_BASLANGICI EQU 050H B_LED BIT P1.0 B_BUZZER BIT P1.1 B_ROLE BIT P1.2 B_KART_TAKILI_MI BIT P1.3 ;-------------------------------------------------------------------- GENEL_YER_ADRES EQU 040H KULLANICI_SAY_ADRES EQU 07H SISTEM_NO_ADRES_DAHILI EQU 06H CSEG AT 000H ;RESET VECTOR JMP PROGRAM_BAS CSEG AT 0016H PROGRAM_BAS: MOV SIFRE_DEGIS_BELIRLE,#0 CLR CS_S CLR CS_D SETB B_LED SETB B_BUZZER CLR B_ROLE DONGU_KART_VAR_MI: MOV C, B_KART_TAKILI_MI JC DONGU_KART_VAR_MI ; KART TAKILI MI? LCALL SISTEM_NO_KARSILASTIR ; SISTEM NO KONTROL EDILIR MOV R2,HATA_KONTROL CJNE R2, #001, HATA_KART ; KARSILASTIRMADA BIR HATA VAR MI? LCALL SMART_KART_OKU ; SMART KARTTAKI BILGILER OKUNUR MOV EEPROMDAN_GELEN_VERI_H, #040H ; DAHİLİ EEPROM DAN OKUNAN 7. ADRES MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_ADRES, #KULLANICI_SAY_ADRES ; KAYITLI SAYISININ KAYITLI OLDUGU ADRES MOV EEPROM_SECIMI,#001H ; DAHİLİ EEPROM CALL CHIP_OKU MOV EEPROM_ADRES,#008h ; ILK KULLANICININ KAYITLI OLDUĞU ADRES MOV KULLANICI_SAYISI,041H MOV R7,041H ; DONGU ICIN SAYAC KURULDU ( KULANICI SAYISI ). INC R7 DONGU_IDNO: MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV A,040H CLR C SUBB A, ID_NO_H JNZ DIGERI_IDNO ; OKUNAN ID_NO (MSB) İLE AYNI MI? MOV A,041H CLR C SUBB A, ID_NO_L JNZ DIGERI_IDNO ; OKUNAN ID_NO (LSB) İLE AYNI MI? ; DEĞİLSE DİĞER KULLANICININ ID_NO SUNA GEÇ JMP IDNO_DOGRU DIGERI_IDNO: INC EEPROM_ADRES ; İKİ KULLANICININ PARAMETRELERİ INC EEPROM_ADRES ; ARASINDAKİ UZAKLIK 3 ADRES INC EEPROM_ADRES DJNZ R7, DONGU_IDNO ;------------------------------------------------------------------- ; KARTTAKİ VERİLERDE BİR HATA OLDUĞUNDA BURASI İŞLER HATA_KART: DON_HATA_KART: CALL BUZZER CALL BEKLE CALL BUZZER CALL BUZZER CALL BEKLE CALL BUZZER MOV C, B_KART_TAKILI_MI ; kart çıkarıldı mı? JNC DON_HATA_KART JMP PROGRAM_BAS ;------------------------------------------------------------------- IDNO_DOGRU: INC EEPROM_ADRES ; BULUNAN KAYDIN GÜVENLİK PARAMETRESİ INC EEPROM_ADRES ; 2 ADRES SONRADIR. MOV GUV_PAR_BUL_ADRES,EEPROM_ADRES MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_SECIMI,#001H ; PARAMETRESİ 40H-41H ADRESİNE AKTARILDI. CALL CHIP_OKU ;------------------------------------------------------------------- MOV A,040H CLR C SUBB A,GUVEN_PAR_H JNZ HATA_KART ; GÜVEN_PAR (MSB) LAR AYNI MI? MOV A,041H CLR C SUBB A,GUVEN_PAR_L JNZ HATA_KART ; GÜVEN_PAR (LSB) LAR AYNI MI? ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;+ CHIP KARTTAKİ ŞİFRE İLE DAHİLİ EEPROM DAKİ ŞİFRE KONTROL EDİLİYOR + ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DEC EEPROM_ADRES ; YUKARIDA GUVENLIK PARAMETRESINDEKI MOV SIFRE_BUL_ADRES,EEPROM_ADRES ; B NIN İÇERİĞİNİN 1 AŞAĞISI ŞİFRE ADRESİDİR. MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H mov EEPROM_SECIMI,#001H CALL CHIP_OKU MOV A,040H CLR C SUBB A, SIFRE_H JNZ HATA_KART ; OKUNAN SIFRE (MSB) İLE AYNI MI? MOV A,041H CLR C SUBB A, SIFRE_L JNZ HATA_KART ; OKUNAN SIFRE (LSB) İLE AYNI MI? SIFRE_DOGRU: ;************************************************************** ; DAHİLİ EEPROM UM 0. BYTE INDAKİ 0.BİT KEYPAD KONTROL BİTİDİR. ;************************************************************** MOV EEPROM_ADRES,#00H MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV A,041H RRC A JC KEYPAD MOV C,B_KART_TAKILI_MI ; kart yerinde mı? JNC ASAGI_1 CALL BUZZER ;YERİNDE DEĞİLSE CALL BUZZER CALL BUZZER LJMP PROGRAM_BAS ASAGI_1: CALL ISLEM_YAP ; KEYPAD PASİF OLDUĞUNDAN ; İŞLEMLER YAPILIR. LCALL PROGRAM_BAS ;---------------------- KEYPAD ------------------------------ KEYPAD: MOV GIRILEN_KARAKTER_SAY, #0 ; KAÇHANE ŞİFRE GİRDİĞİNİ ANLAMAK İÇİN KEYPAD1: MOV EEPROM_ADRES, #SIFRE_BASLANGICI ; ŞİFRENİN SAKLANACAĞI HAFIZA ADRESİ KEYPAD_DON: MOV C, B_KART_TAKILI_MI ; kart yerinde mı? JNC ASAGI_2 CALL BUZZER ;YERİNDE DEĞİLSE CALL BUZZER CALL BUZZER LJMP PROGRAM_BAS ASAGI_2: ; 1. SATIR TARANIYOR CLR P3.0 SETB P3.1 SETB P3.2 SETB P3.3 JMP SATIR1 ; 2. SATIR TARANIYOR SAT2: SETB P3.0 CLR P3.1 SETB P3.2 SETB P3.3 JMP SATIR2 ; 3. SATIR TARANIYOR SAT3: SETB P3.0 SETB P3.1 CLR P3.2 SETB P3.3 JMP SATIR3 ; 4. SATIR TARANIYOR SAT4: SETB P3.0 SETB P3.1 SETB P3.2 CLR P3.3 JMP SATIR4 JMP KEYPAD_DON ;================================= ; SATIR 1 KONTROL EDİLİYOR ;================================= SATIR1: ; TUŞ 1 KONTROL MOV C, P3.4 ;0 JC TUS2 MOV C, P3.5 ;1 JNC TUS2 MOV C, P3.7 ;1 JNC TUS2 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #01h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY ;TUŞ 2 KONTROL TUS2: MOV C, P3.4 ; 1 JNC TUS3 MOV C, P3.5 ;0 JC TUS3 MOV C, P3.7 ;1 JNC TUS3 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #02h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY ;TUŞ 3 KONTROL TUS3: MOV C, P3.4 ; 1 JNC SAT2 MOV C, P3.5 ;1 JNC SAT2 MOV C, P3.7 ;0 JC SAT2 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #03h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY LJMP SAT2 ;================================= ; SATIR 2 KONTROL EDİLİYOR ;================================= SATIR2: ; TUŞ 4 KONTROL MOV C, P3.4 ; 0 JC TUS5 MOV C, P3.5 ;1 JNC TUS5 MOV C, P3.7 ;1 JNC TUS5 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #04h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY ;TUŞ 5 KONTROL TUS5: MOV C, P3.4 ; 1 JNC TUS6 MOV C, P3.5 ;0 JC TUS6 MOV C, P3.7 ;1 JNC TUS6 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #05h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY ;TUŞ 6 KONTROL TUS6: MOV C, P3.4 ; 1 JNC SAT_3 MOV C, P3.5 ;1 JNC SAT_3 MOV C, P3.7 ;0 JC SAT_3 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #06h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY SAT_3: LJMP SAT3 ;================================= ; SATIR 3 KONTROL EDİLİYOR ;================================= SATIR3: ; TUŞ 7 KONTROL MOV C, P3.4 ; 0 JC TUS8 MOV C, P3.5 ;1 JNC TUS8 MOV C, P3.7 ;1 JNC TUS8 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #07h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY ;TUŞ 8 KONTROL TUS8: MOV C, P3.4 ; 1 JNC TUS9 MOV C, P3.5 ;0 JC TUS9 MOV C, P3.7 ;1 JNC TUS9 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #08h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY ;TUŞ 9 KONTROL TUS9: MOV C, P3.4 ; 1 JNC SAT_4 MOV C, P3.5 ;1 JNC SAT_4 MOV C, P3.7 ;0 JC SAT_4 CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #09h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY SAT_4: LJMP SAT4 ;================================= ;= SATIR 4 KONTROL EDİLİYOR = ;================================= SATIR4: ;TUS * KONTROL TUSY: MOV C, P3.4 ; 0 JC TUS_0 MOV C, P3.5 ; 1 JNC TUS_0 MOV C, P3.7 ; 1 JNC TUS_0 JMP TUS_Y_ASAGI TUS_0: LJMP TUS0 TUS_Y_ASAGI: CALL BUZZER LCALL TUSBIRAKILDIMI MOV A,SISTEM_KART_ONAY CLR C SUBB A,#2 JNZ ASA LJMP KART_IPTAL_ET ASA: MOV A,SIFRE_DEGIS_BELIRLE CJNE A,#00H,TEKRAR__SIFRE_AL JMP ASA1 TEKRAR__SIFRE_AL: LJMP TEKRAR_SIFRE_AL ASA1: MOV A,GIRILEN_KARAKTER_SAY CLR C XRL A,#07H JZ SIFREDEGIS LJMP GIRILEN_SIFRE_HATALI SIFREDEGIS: MOV A,054H CLR C SUBB A,#00H JNZ GIRILEN_OPCODE_HATALI MOV A,055H CLR C SUBB A,#00H JNZ GIRILEN_OPCODE_HATALI JMP ASA2 GIRILEN_OPCODE_HATALI: LJMP GIRILEN_SIFRE_HATALI ASA2: MOV A,056H CLR C SUBB A,#00H JNZ DIGER_OPCODE_KONTROL JMP DOGRU_OPCODE DIGER_OPCODE_KONTROL: MOV A,056H CLR C SUBB A,#01H JNZ GIRILEN_OPCODE_HATALI CLR B_LED YENI_KART_DONGU: MOV C, B_KART_TAKILI_MI ; kart takılı mı? JNC YENI_KART_DONGU SETB B_LED YENI_KART_DONGU1: MOV C, B_KART_TAKILI_MI ; kart takılı mı? JC YENI_KART_DONGU1 CALL BEKLE MOV EEPROM_ADRES,#00Ch ; ILK KULLANICININ KAYITLI OLDUĞU ADRES MOV R7,KULLANICI_SAYISI ; DONGU ICIN SAYAC KURULDU ( KULANICI SAYISI ). MOV IPTAL_EDILMIS_VARMI,#01H YENI_KART_DONGU_SIFRE: MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV A,040H CLR C SUBB A, #0 JNZ YENI_KART_DONGU_SIFRE_DIGERI ; OKUNAN ID_NO (MSB) İLE AYNI MI? MOV A,041H CLR C SUBB A, #0 JNZ YENI_KART_DONGU_SIFRE_DIGERI ; OKUNAN ID_NO (LSB) İLE AYNI MI? ; DEĞİLSE DİĞER KULLANICININ ID_NO SUNA GEÇ JMP YENI_KART_DONGU_SIFRE_DOGRU YENI_KART_DONGU_SIFRE_DIGERI: INC EEPROM_ADRES ; İKİ KULLANICININ PARAMETRELERİ INC EEPROM_ADRES ; ARASINDAKİ UZAKLIK 3 ADRES INC EEPROM_ADRES DJNZ R7, YENI_KART_DONGU_SIFRE MOV IPTAL_EDILMIS_VARMI,#00H YENI_KART_DONGU_SIFRE_DOGRU: CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,#0B8H MOV EEPROM_YAZ_VERI_L,#0D4H MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A YENİ ŞİFRE YAZILIR INC EEPROM_ADRES CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,#0 MOV EEPROM_YAZ_VERI_L,#0 MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A GUVEN_PAR YAZILIR CLR C MOV A,IPTAL_EDILMIS_VARMI SUBB A,#01H JZ IPTAL_EDILMIS_VAR DEC EEPROM_ADRES DEC EEPROM_ADRES INC KULLANICI_SAYISI INC KULLANICI_SAYISI ; burada alt yordam çağrılacak dönüşüm ile ilgili CALL EE_EWEN CALL HEX_TO_DECIMAL ; MOV EEPROM_YAZ_VERI_H,#0 ; MOV EEPROM_YAZ_VERI_L,KULLANICI_SAYISI MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A ID_NO YAZILIR DEC KULLANICI_SAYISI DEC KULLANICI_SAYISI IPTAL_EDILMIS_VAR: CLR C MOV A,IPTAL_EDILMIS_VARMI SUBB A,#01H JNZ ID_NO_TAMAM DEC EEPROM_ADRES DEC EEPROM_ADRES MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV ID_N0_TUT_H,040H MOV ID_N0_TUT_L,041H ID_NO_TAMAM: CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,#0FFH MOV EEPROM_YAZ_VERI_L,#0FFH MOV EEPROM_ADRES,#09H MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KART EEPROM A CALL EE_EWEN ; CALL HEX_TO_DECIMAL MOV EEPROM_YAZ_VERI_H,ID_N0_TUT_H ;#00H MOV EEPROM_YAZ_VERI_L,ID_N0_TUT_L ;041H MOV EEPROM_ADRES,#00H MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KART EEPROM A ID_NO YAZILIR CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,#0B8H MOV EEPROM_YAZ_VERI_L,#0D4H MOV EEPROM_ADRES,#SIFRE_ADRES MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KART EEPROM A ŞİFRE YAZILIR CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,#00H MOV EEPROM_YAZ_VERI_L,#00H MOV EEPROM_ADRES,#GUVEN_PAR_ADRES MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KART EEPROM A GUVEN_PAR YAZILIR CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,SISTEM_NO_H MOV EEPROM_YAZ_VERI_L,SISTEM_NO_L MOV EEPROM_ADRES,#SISTEM_NO_ADRES_SMART MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KART EEPROM A SISTEM NO YAZILIR CLR C MOV A,IPTAL_EDILMIS_VARMI SUBB A,#01H JZ KULLANICI_SAYISI_ARTTIRMA INC KULLANICI_SAYISI CALL EE_EWEN MOV EEPROM_YAZ_VERI_H,#0 MOV EEPROM_YAZ_VERI_L,KULLANICI_SAYISI MOV EEPROM_ADRES,#KULLANICI_SAY_ADRES MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A KULLANICI SAYISI YAZILIR DEC KULLANICI_SAYISI KULLANICI_SAYISI_ARTTIRMA: CALL YESIL_LED_YAK LJMP PROGRAM_BAS ;---------------------------------- GIRILEN_SIFRE__HATALI: LJMP GIRILEN_SIFRE_HATALI DOGRU_OPCODE: CALL BUZZER CALL BUZZER CALL BUZZER CALL BUZZER CALL BUZZER MOV A,051h MOV B,A MOV A,050h CALL DONUSTUR XRL B,#0A9H MOV A,B CJNE A,SIFRE_H,SIFRE_DEGIS__HATA JMP DOGRU_OPCODE_ASAGI SIFRE_DEGIS__HATA: LJMP SIFRE_DEGIS_HATA DOGRU_OPCODE_ASAGI: MOV A,053h MOV B,A MOV A,052h CALL DONUSTUR XRL B,#0C5H MOV A,B CJNE A,SIFRE_L,SIFRE_DEGIS__HATA MOV A,SISTEM_KART_ONAY CLR C SUBB A,#1 JZ KART_IPTAL_NO_AL MOV SIFRE_DEGIS_BELIRLE,#001H LJMP KEYPAD KART_IPTAL_NO_AL: MOV SISTEM_KART_ONAY,#2 LJMP KEYPAD TEKRAR_SIFRE_AL: MOV A,SIFRE_DEGIS_BELIRLE CJNE A,#001H,YENI_SIFRE_ISLE MOV 040H,050H MOV 041H,051H MOV 042H,052H MOV 043H,053H CALL BUZZER CALL BUZZER MOV SIFRE_DEGIS_BELIRLE,#002H LJMP KEYPAD YENI_SIFRE_ISLE: MOV A,050H CJNE A,040H,SIFRE_DEGIS_HATA MOV A,051H CJNE A,041H,SIFRE_DEGIS_HATA MOV A,052H CJNE A,042H,SIFRE_DEGIS_HATA MOV A,053H CJNE A,043H,SIFRE_DEGIS_HATA CALL EE_EWEN MOV EEPROM_ADRES,SIFRE_BUL_ADRES MOV A,051h MOV B,A MOV A,050h CALL DONUSTUR XRL B,#0A9H MOV EEPROM_YAZ_VERI_H,B MOV A,053H MOV B,A MOV A,052h CALL DONUSTUR XRL B,#0C5H MOV EEPROM_YAZ_VERI_L,B MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A YENİ ŞİFRE YAZILIR CALL EE_EWEN MOV EEPROM_ADRES,#01H MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KARTA A YENİ ŞİFRE YAZILIR ; CLR B_LED ;YEŞİL LED YANAR ;SIFRE_DEGIS_DONGU: ; MOV C, B_KART_TAKILI_MI ; kart takılı mı? ; JNC SIFRE_DEGIS_DONGU ; SETB B_LED ;YEŞİL LED SÖNER CALL YESIL_LED_YAK LJMP PROGRAM_BAS SIFRE_DEGIS_HATA: CALL BUZZER LJMP KEYPAD KART_IPTAL_ET: MOV A,051h MOV B,A MOV A,050h CALL DONUSTUR MOV ID_NO_H,B MOV A,053h MOV B,A MOV A,052h CALL DONUSTUR MOV ID_NO_L,B MOV EEPROM_ADRES,#00Bh ; ILK KULLANICININ KAYITLI OLDUĞU ADRES MOV R7,KULLANICI_SAYISI ; DONGU ICIN SAYAC KURULDU ( KULANICI SAYISI ). KART_IPTAL_DONGU_IDNO: MOV EEPROMDAN_GELEN_VERI_H, #040H MOV EEPROMDAN_GELEN_VERI_L, #041H MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV A,040H CLR C SUBB A, ID_NO_H JNZ KART_IPTAL_DIGERI_IDNO ; OKUNAN ID_NO (MSB) İLE AYNI MI? MOV A,041H CLR C SUBB A, ID_NO_L JNZ KART_IPTAL_DIGERI_IDNO ; OKUNAN ID_NO (LSB) İLE AYNI MI? ; DEĞİLSE DİĞER KULLANICININ ID_NO SUNA GEÇ JMP KART_IPTAL_IDNO_DOGRU KART_IPTAL_DIGERI_IDNO: INC EEPROM_ADRES ; İKİ KULLANICININ PARAMETRELERİ INC EEPROM_ADRES ; ARASINDAKİ UZAKLIK 3 ADRES INC EEPROM_ADRES DJNZ R7, KART_IPTAL_DONGU_IDNO CALL BUZZER CALL BUZZER CALL BUZZER CALL BEKLE CALL BEKLE CALL BEKLE CALL BUZZER CALL BUZZER CALL BUZZER LJMP KEYPAD KART_IPTAL_IDNO_DOGRU: MOV 044H,EEPROM_ADRES MOV EEPROMDAN_GELEN_VERI_H, #042H MOV EEPROMDAN_GELEN_VERI_L, #043H MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV A,042H CLR C SUBB A, #0 JNZ KART_IPTAL_DEVAM MOV A,043H CLR C SUBB A, #0 JNZ KART_IPTAL_DEVAM KART_AKTIF_DONGU: CLR B_LED MOV C, B_KART_TAKILI_MI ; kart takılı mı? JNC KART_AKTIF_DONGU KART_AKTIF_DONGU1: SETB B_LED MOV C, B_KART_TAKILI_MI ; kart takılı mı? JC KART_AKTIF_DONGU1 MOV EEPROMDAN_GELEN_VERI_H,#ID_NO_H_ADRES MOV EEPROMDAN_GELEN_VERI_L,#ID_NO_L_ADRES ; SISTEM_NO AKTARILIR. MOV EEPROM_ADRES,#ID_NO_ADRES MOV EEPROM_SECIMI,#000H CALL CHIP_OKU ; ID_NO 030H VE 031h A AKATARILIR. MOV A,040H CLR C SUBB A,ID_NO_H JNZ KART_AKTIF_DONGU MOV A,041H CLR C SUBB A,ID_NO_L JNZ KART_AKTIF_DONGU CALL EE_EWEN MOV EEPROM_ADRES,044H MOV EEPROM_YAZ_VERI_H,#0B8H MOV EEPROM_YAZ_VERI_L,#0D4H MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A YENİ ŞİFRE YAZILIR CALL EE_EWEN MOV EEPROM_ADRES,#SIFRE_ADRES MOV EEPROM_YAZ_VERI_H,#0B8H MOV EEPROM_YAZ_VERI_L,#0D4H MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;DAHILI EEPROM A YENİ ŞİFRE YAZILIR CALL YESIL_LED_YAK LJMP PROGRAM_BAS KART_IPTAL_DEVAM: CALL EE_EWEN INC EEPROM_ADRES MOV EEPROM_YAZ_VERI_H,#0 MOV EEPROM_YAZ_VERI_L,#0 MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;DAHILI EEPROM A YENİ ŞİFRE YAZILIR CALL YESIL_LED_YAK ; CLR B_LED ;YEŞİL LED YANAR ;KART_IPTAL__DONGU: ; MOV C, B_KART_TAKILI_MI ; kart takılı mı? ; JNC KART_IPTAL__DONGU ; SETB B_LED ;YEŞİL LED SÖNER LJMP PROGRAM_BAS ;-------------------------- ;TUS 0 KONTROL TUS0: MOV C, P3.4 ; 1 JNC TUSD MOV C, P3.5 ; 0 JC TUSD MOV C, P3.7 ; 1 JNC TUSD CALL BUZZER LCALL TUSBIRAKILDIMI MOV R0,EEPROM_ADRES MOV @R0, #00h INC EEPROM_ADRES INC GIRILEN_KARAKTER_SAY LJMP KEYPAD_DON ;---------------------------------- TUSD: ; TUŞ # KONTROL MOV C, P3.4 ; 1 JNC KEYPAD__DON MOV C, P3.5 ;1 JNC KEYPAD__DON MOV C, P3.7 ;0 JC KEYPAD__DON JMP ASAGI_DIYEZ KEYPAD__DON : LJMP KEYPAD_DON ASAGI_DIYEZ: MOV A,SIFRE_DEGIS_BELIRLE CJNE A,#0,KEYPAD__DON MOV A,SISTEM_KART_ONAY CJNE A,#0,KEYPAD__DON CALL BUZZER LCALL TUSBIRAKILDIMI MOV C, B_KART_TAKILI_MI ; kart yerinde mı? JNC ASAGI_DIYEZ1 LJMP PROGRAM_BAS ASAGI_DIYEZ1: MOV A,GIRILEN_KARAKTER_SAY CJNE A,#4, GIRILEN_SIFRE_HATALI ; GİRİLEN ŞİFRE KARAKTERİ KONTROLÜ MOV A,051h MOV B,A MOV A,050h CALL DONUSTUR MOV A,SIFRE_H ; CHİP KARTTAKİ ŞİFRE BİLGİSİ XRL A,#0A9H ; CHİP KARTTA KRİPTOLANMIŞ ; ŞİFRE (MSB) DEKRİPTO YAPILIYOR CLR C SUBB A,B JNZ GIRILEN_SIFRE_HATALI MOV A,053h MOV B,A MOV A,052h CALL DONUSTUR MOV A,SIFRE_L ; CHİP KARTTAKİ ŞİFRE BİLGİSİ XRL A,#0C5H ; CHİP KARTTA KRİPTOLANMIŞ ; ŞİFRE (LSB) DEKRİPTO YAPILIYOR CLR C SUBB A,B JNZ GIRILEN_SIFRE_HATALI CALL EE_EWEN MOV EEPROM_ADRES,#02H ; VERİNİN SMART KARTTA YAZILACAĞI ADRES MOV A,GUVEN_PAR_L ; GUVENLIK PARAMETRESİ BU ADRESTE CLR C ADD A,#01H MOV EEPROM_YAZ_VERI_L,A MOV A,GUVEN_PAR_H ADDC A,#0H MOV EEPROM_YAZ_VERI_H,A MOV EEPROM_SECIMI,#000H CALL EE_WRITE ;SMART KARTA GUVEN_PAR YAZILIR CALL EE_EWEN MOV EEPROM_ADRES,GUV_PAR_BUL_ADRES ; VERİNİN DAHILI EEPROM A YAZILACAĞI ADRES MOV A,GUVEN_PAR_L ; GUVENLIK PARAMETRESİ BU ADRESTE CLR C ADD A,#01H MOV EEPROM_YAZ_VERI_L,A MOV A,GUVEN_PAR_H ADDC A,#0H MOV EEPROM_YAZ_VERI_H,A MOV EEPROM_SECIMI,#001H CALL EE_WRITE ;SMART KARTA GUVEN_PAR YAZILIR CALL ISLEM_YAP LJMP PROGRAM_BAS ;ŞİFRE YANLIŞ GİRİLDİĞİNDE BURAYASI İŞLENİR. GIRILEN_SIFRE_HATALI: CALL BUZZER CALL BEKLE CALL BUZZER CALL BUZZER CALL BEKLE CALL BUZZER LJMP KEYPAD ; TEKRAR YENİ ŞİFRE GİRİLMESİ İSTENİR ;--------------------------------------------------- ; *********************************** ; * ALT PROGRAMLAR * ; *********************************** ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : CHIP_OKU ; AMAÇ : SERI EEPROM DAN BILGI OKUMAK ; GIRISLER : 1- EEPROM_SECIMI ( 001H --> DAHILI SERI EEPROM SEÇİLİR ) ; ( 000H --> SMART KART SEÇİLİR ) ; 2- EEPROM_ADRES ( OKUNACAK VERININ ADRES ) ; 3- EEPROMDAN_GELEN_VERI_H ( OKUNAN VERININ MSB SININ AKTARILACAĞI ADRES ) ; 4- EEPROMDAN_GELEN_VERI_L ; ÇAĞRIMLAR : EE_EWEN, EE_READ ; DEĞİŞENLER : R2 ;---------------------------------------------------------------- CHIP_OKU: CALL EE_EWEN CALL EE_READ MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI1 CLR CS_D JMP ASAGI1 HARICI1: CLR CS_S ASAGI1: CLR DIO RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : SEND_EE ; AMAÇ : SERI EEPROM A VERI GONDERIR ; GIRISLER : - ; ÇAĞRIMLAR : - ; DEĞİŞENLER : A, R2, C ;---------------------------------------------------------------- SEND_EE: MOV R2,#8 SEND1: RLC A MOV DIO,C NOP SETB SK NOP CLR SK DJNZ R2,SEND1 RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : REC_EE ; AMAÇ : SERI EEPROM DAN SERI BILGIYI A REGISTERI UZERINE KAYDIRIR ; GIRISLER : - ; ÇAĞRIMLAR : - ; DEĞİŞENLER : A, R2, C ;---------------------------------------------------------------- REC_EE: MOV R2,#8 REC1: SETB SK NOP CLR SK MOV C,DIO RLC A DJNZ R2,REC1 RET ;----------------------------------------------------------------- TUSBIRAKILDIMI: KON1: ; TUŞ BIRAKILDI MI? KONTROLÜ YAPILIYOR MOV C, P3.4 JNC KON1 MOV C, P3.5 JNC KON1 MOV C, P3.7 JNC KON1 RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : EE_EWEN ; AMAÇ : SERI EEPROM U BIR ISLEM YAPMAYA HAZIR HALE GETIRMEK ; GIRISLER : 1- EEPROM_SECIMI ( 001H --> DAHILI SERI EEPROM SEÇİLİR ) ; ( 000H --> SMART KART SEÇİLİR ) ; ÇAĞRIMLAR : SEND_EE ; DEĞİŞENLER : A,R2 ;---------------------------------------------------------------- EE_EWEN: CLR SK MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI2 SETB CS_D JMP ASAGI2 HARICI2: SETB CS_S ASAGI2: MOV A,#00000001b ; Start bit CALL SEND_EE ; MOV A,#00110000b ; Wen OpCode CALL SEND_EE MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI3 CLR CS_D JMP ASAGI3 HARICI3: CLR CS_S ASAGI3: CLR DIO RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : EE_WRITE ; AMAÇ : SERI EEPROM A BILGI YAZNAK ; GIRISLER : 1- EEPROM_SECIMI ( 001H --> DAHILI SERI EEPROM SEÇİLİR ) ; ( 000H --> SMART KART SEÇİLİR ) ; 2- EEPROM_ADRES ( YAZILACAK ADRES ) ; 3- EEPROM_YAZ_VERI_H ( YAZILACAK VERININ MSB BOLUMU ) ; 4- EEPROM_YAZ_VERI_L ( YAZILACAK VERININ LSB BOLUMU ) ; ÇAĞRIMLAR : SEND_EE ; DEĞİŞENLER : A,R2 ;---------------------------------------------------------------- EE_WRITE: CLR SK MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI4 SETB CS_D JMP ASAGI4 HARICI4: SETB CS_S ASAGI4: MOV A,#00000001b ; Start CALL SEND_EE MOV A,#01000000b ; Write OpCode ORL A,EEPROM_ADRES ; Adresi al CALL SEND_EE MOV A,EEPROM_YAZ_VERI_H ; YAZILACAK VERİNİN YÜKSEK BYTE CALL SEND_EE MOV A,EEPROM_YAZ_VERI_L ; YAZILACAK VERİNİN DÜŞÜK BYTE CALL SEND_EE SETB DIO MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI5 CLR CS_D jmp ASAGI5 HARICI5: CLR CS_S ASAGI5: NOP MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI6 SETB CS_D JMP ASAGI6 HARICI6: SETB CS_S ASAGI6: NOP NOP NOP JNB DIO,$ ; 1 okuyana kadar bekle MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI7 CLR CS_D JMP ASAGI7 HARICI7: CLR CS_S ASAGI7: CLR DIO RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : EE_READ ; AMAÇ : SERI EEPROM DAN GELEN BILGILERI OKUMAK ; GIRISLER : 1- EEPROM_SECIMI ( 001H --> DAHILI SERI EEPROM SEÇİLİR ) ; ( 000H --> SMART KART SEÇİLİR ) ; 2- EEPROM_ADRES ( OKUNACAK VERININ ADRES ) ; 3- EEPROMDAN_GELEN_VERI_H ( OKUNAN VERININ MSB SININ AKTARILACAĞI ADRES ) ; 4- EEPROMDAN_GELEN_VERI_L ( OKUNAN VERININ LSB SININ AKTARILACAĞI ADRES ) ; ÇAĞRIMLAR : SEND_EE, REC_EE ; DEĞİŞENLER : A, R0, R2 ;---------------------------------------------------------------- EE_READ: CLR SK MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI8 SETB CS_D JMP ASAGI8 HARICI8: SETB CS_S ASAGI8: MOV A,#00000001b ; start CALL SEND_EE MOV A,#10000000b ; Read OpCode ORL A,EEPROM_ADRES ; Adresi al CALL SEND_EE SETB DIO JB DIO,$ ; 0 okuyana kadar bekle CALL REC_EE MOV R0, EEPROMDAN_GELEN_VERI_H MOV @R0, A ; D15...D8 CALL REC_EE MOV R0, EEPROMDAN_GELEN_VERI_L MOV @R0, A ; D7...D0 MOV R2,EEPROM_SECIMI CJNE R2, #001h, HARICI9 CLR CS_D JMP ASAGI9 HARICI9: CLR CS_S ASAGI9: CLR DIO RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : DONUSTUR ; AMAC : IKI HAFIZA BOLGESININ 4 BIT LSB KISMINDAKI VERILERI BIRLESTIRIR ; BIRLESTIRME ISLEMI A REGISTERINDEKI LSB 4 BIT B REGISTERININ ; MSB 4 BITINE AKTARILIR. ; GIRISLER : 1- A ; 2- B ; CIKISLAR : B ; CAGRIMLAR : - ; DEGISENLER : A, B, C ;---------------------------------------------------------------- DONUSTUR: RL A RL A RL A RL A CLR C ADD A,B MOV B,A RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : SISTEM_NO_KARSILASTIR ; AMAÇ : DAHILI EEPROM DAKI VE SMART KARTTAKI SISTEM_NO KARSILASTIRILIR ; EGER HATA VARSA HATA LABEL INA ATLANIR. ; GIRISLER : 1- SISTEM_NO_ADRES_DAHILI ; 2- SISTEM_NO_ADRES_SMART ; ÇIKIŞLAR : 1- HATA_KONTROL ( 000H --> HATA VAR, 001H --> KARSILASTIRMA DOGRU ) ; ÇAĞRIMLAR : CHIP_OKU ; DEĞİŞENLER : A, R2, C ;---------------------------------------------------------------- SISTEM_NO_KARSILASTIR: MOV HATA_KONTROL,#001H MOV EEPROMDAN_GELEN_VERI_H,#040H MOV EEPROMDAN_GELEN_VERI_L,#041H ; SISTEM_NO AKTARILIR. MOV EEPROM_ADRES,#SISTEM_NO_ADRES_DAHILI MOV EEPROM_SECIMI,#001H CALL CHIP_OKU MOV EEPROMDAN_GELEN_VERI_H,#042H MOV EEPROMDAN_GELEN_VERI_L,#043H MOV EEPROM_ADRES,#SISTEM_NO_ADRES_SMART ; SMART KARTIN 03H ADRESİNDEKİ SİSTEM_NO ALINIR. MOV EEPROM_SECIMI,#000H CALL CHIP_OKU ; VE SISTEM_NO HAFIZANIN 042H-043H A AKATARILIR. MOV SISTEM_NO_H,042H MOV SISTEM_NO_L,043H MOV R2, 040H ;DAHILI EEPROMDAN OKUNAN SISTEM_NO MSB MOV A, 042H ;SMART KARTDAN OKUNAN SISTEM_NO MSB CLR C SUBB A,R2 JNZ HATA_SIS_NO ; SISTEM_NO LARIN (MSB) LERI AYNI MI? MOV R2,041H ;DAHILI EEPROMDAN OKUNAN SISTEM_NO LSB MOV A,043H ;SMART KARTDAN OKUNAN SISTEM_NO LSB CLR C SUBB A,R2 JZ DOGRU_SIS_NO ; SISTEM_NO LARIN (LSB) LERI AYNI MI? HATA_SIS_NO : MOV HATA_KONTROL,#000H DOGRU_SIS_NO: RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : SMART_KART_OKU ; AMAÇ : SMART KARTTAKI ID_NO, SIFRE VE GUVEN_PAR HAFIZAYA AKTARILIR. ; GIRISLER : 1- ID_NO_H_ADRES ; 2- ID_NO_L_ADRES ; 3- ID_NO_ADRES ; 4- SIFRE_H_ADRES ; 5- SIFRE_L_ADRES ; 6- SIFRE_ADRES ; 7- GUVEN_PAR_H_ADRES ; 8- GUVEN_PAR_L_ADRES ; 8- GUVEN_PAR_ADRES ; ÇIKIŞLAR : - ; ÇAĞRIMLAR : CHIP_OKU ; DEĞİŞENLER : - ;---------------------------------------------------------------- SMART_KART_OKU: MOV EEPROMDAN_GELEN_VERI_H,#ID_NO_H_ADRES MOV EEPROMDAN_GELEN_VERI_L,#ID_NO_L_ADRES ; SISTEM_NO AKTARILIR. MOV EEPROM_ADRES,#ID_NO_ADRES MOV EEPROM_SECIMI,#000H CALL CHIP_OKU ; ID_NO 030H VE 031h A AKATARILIR. MOV EEPROMDAN_GELEN_VERI_H,#SIFRE_H_ADRES MOV EEPROMDAN_GELEN_VERI_L,#SIFRE_L_ADRES MOV EEPROM_ADRES,#SIFRE_ADRES MOV EEPROM_SECIMI,#000H CALL CHIP_OKU ; SIFRE 032H VE 033H A AKATARILIR. MOV EEPROMDAN_GELEN_VERI_H,#GUVEN_PAR_H_ADRES MOV EEPROMDAN_GELEN_VERI_L,#GUVEN_PAR_L_ADRES MOV EEPROM_ADRES,#GUVEN_PAR_ADRES MOV EEPROM_SECIMI,#000H CALL CHIP_OKU ; GUVEN_PAR 034H VE 035H A AKATARILIR. CALL SISTEM_KART_KARSILASTIR RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : ISLEM_YAP ; AMAÇ : SIFRENIN DOGRU GIRILMESI SONRASI ROLE BELLI BIR ZAMAN AKTIF OLUR, ; YESIL LED KART CIKARILANA KADAR YANAR. KIRMIZI LED ISE SONER. ; EGER KULLANICI KARTI 5 SN ICERISINDE YERINDEN ALMAZ ISE ; UYARI SESI VERILIR. ; GIRISLER : - ; ÇIKIŞLAR : - ; ÇAĞRIMLAR : BEKLE ; DEĞİŞENLER : R3, R4, C ;---------------------------------------------------------------- ISLEM_YAP: SETB B_ROLE ;RÖLE AKTİF CALL BEKLE CALL BEKLE CALL BEKLE CALL BEKLE CALL BEKLE CALL BEKLE CALL BEKLE CALL BEKLE CLR B_ROLE ;RÖLE PASİF CALL YESIL_LED_YAK JMP KART_UYARI RET ;------------------------------------------------------------- ; 1 SN LIK GECIKME SAĞLAR BEKLE: MOV A,R0 MOV B,R1 MOV R0,#028H BEKLE_DON: ; BU DONGU 1 ms LIK GECIKME SAĞLAR MOV R1,#0FAH BEK: NOP NOP DJNZ R1,BEK DJNZ R0,BEKLE_DON MOV R0,A MOV R1,B RET ;------------------------------------------------------------- BUZZER: CLR P1.1 CALL BEKLE SETB P1.1 RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : SISTEM_KART_KARSILASTIR ; AMAC : GIRILEN KARTIN SISTEM KARTI OLUP OLMADIGINI KONTROL EDER. ; EGER KART SISTEM KARTI ISE SISTEM_KART_ONAY 001H DEGERIYLE YUKLENILIR. ; GIRISLER : ID_NO_H,ID_NO_L ; CIKISLAR : SISTEM_KART_ONAY ; CAGRIMLAR : - ; DEGISENLER : A ;---------------------------------------------------------------- SISTEM_KART_KARSILASTIR: MOV SISTEM_KART_ONAY,#000H CLR C MOV A,ID_NO_H SUBB A,#00H JNZ SISTEM_KART_DEGIL CLR C MOV A,ID_NO_L SUBB A,#01H JNZ SISTEM_KART_DEGIL MOV SISTEM_KART_ONAY,#001H SISTEM_KART_DEGIL: RET ;---------------------------------------------------------------- ; ALT PROGRAM ; ADI : YESIL_LED_YAK ; AMAC : YESIL LED YANAR. 3SN SONRA BUZZER DA AKTIF OLUR. TAKI KART CIKARILANA KADAR ; GIRISLER : - ; CIKISLAR : - ; CAGRIMLAR : BUZZER,BEKLE ; DEGISENLER : C, R3, R4, R5 ;---------------------------------------------------------------- YESIL_LED_YAK: CLR B_LED ;YESIL LED YANAR MOV R3,#0FFH MOV R4,#0FFH MOV R5,#007H DONGU: NOP DJNZ R3,ISLEM_YAP_ASAGI MOV R3,#0FFH DJNZ R4,ISLEM_YAP_ASAGI MOV R4,#0FFH DJNZ R5,ISLEM_YAP_ASAGI JMP KART_UYARI ISLEM_YAP_ASAGI: MOV C, B_KART_TAKILI_MI ; kart takılı mı? JNC DONGU JMP ISLEM_YAP_SON KART_UYARI: CALL BUZZER CALL BEKLE CALL BEKLE MOV C, B_KART_TAKILI_MI ; kart takılı mı? JNC KART_UYARI ISLEM_YAP_SON: SETB B_LED ;YEŞİL LED SÖNER RET ;---------------------------------------------------------------- HEX_TO_DECIMAL: MOV R7,KULLANICI_SAYISI MOV R6,#0 ; BIRLER BASAMAGI MOV R5,#0 ; ONLAR BASAMAGI MOV R4,#0 ; YUZLE BASMAGI HEX_TO_DECIMAL_DONGU: INC R6 CJNE R6,#0AH,HEX_TO_DECIMAL_ASAGI MOV R6,#0 INC R5 HEX_TO_DECIMAL_ASAGI: CJNE R5,#0AH,HEX_TO_DECIMAL_ASAGI1 MOV R5,#0 INC R4 HEX_TO_DECIMAL_ASAGI1: DJNZ R7,HEX_TO_DECIMAL_DONGU MOV A,R5 MOV B,R6 CALL DONUSTUR MOV EEPROM_YAZ_VERI_H,R4 MOV EEPROM_YAZ_VERI_L,B MOV ID_N0_TUT_H,EEPROM_YAZ_VERI_H MOV ID_N0_TUT_L,EEPROM_YAZ_VERI_L RET ;---------------------------------------------------------------- END