;=======================================
; 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
               (
geocities.com/haluk61)