Site içi Arama

Ara

PIC16F84 Şifreli Kilit

Profahmet - 30.03.2008

Devrenin Özellikleri Şunlardır:

1- Şifreleyici devre PIC 16F84 ile yapılmıştır. Montajı kolay ve maliyeti düşüktür.

2- Bu devrede PIC 16F84’ün EEPROM hafızasını kullandım. Bundan dolayı yazdığımız şifre PIC 16F84’ün besleme enerjisi kesildiğinde kaybolmaz.

3- PIC 16F84’ü şebekeden gelebilecek parazitlerden korumak için filtre düzeneği son derece gereklidir. Aksi halde EEPROM hafızası bozulur veya PIC resetlenir.

ÖNEMLİ NOT: Devrenin +5v beslemesine anahtar bağlamayın. Çünkü anahtara basılma sırasında kontak sıçraması oluşur. Bu sıçrama PIC 16F84’ün EEPROM hafızasını etkiler.

4- Yazdığımız şifreyi defalarca değiştirebilir, 1 ile 10 haneli sayılar yazabiliriz.

5- Şifreyi sadece 3defa yanlış girme hakkımız var. 3. defa yanlış girersek devre kilitlenir ve pin 2 kodunun girilmesi gerekir. Pin 2 kodu girildikten sonra şifre tekrar yenilenir .

6- program açık unutulursa otomatik kapanır. (ayrıntılar kullanma kılavuzu madde 6‘da)

UYARI: PIC 16F84 ‘e en az 8MHZ kristal kullanınız.

KULLANMA KILAVUZU:

1- Filtre bobini ve kondansatörler mutlaka gereklidir. Bunların değerleri şunlar:
Kutusuz kondansatörler 100n 63v
Kutuplu elektrolit kondansatör 220mf 16v veya 470mf 16v
Filtre bobini 0,5mm izoleli telden halka biçimindeki Ferit nüveye 10 tur sarılmalı.

2- Devreye ilk enerji verildiğinde RB6 ‘ya bağlı LED2 kısa bir süre yanar ve söner.

3- PIC‘i ilk defa çalıştırıyorsanız RB7’ye bağlı yeni şifre yaz uyarı LED1 Yanar. Bu sırada kullanacağımız şifreyi yazarız. Yeni Şifreyi yazdıktan sonra “#” tuşuna basarız.

DİKKAT: PIC‘e sadece 1 ile 10 haneli bir sayı yazabiliriz. 10 haneli sayı tamamlanırsa buzzer sürekli ikaz verir. Bundan Sonra “#” tuşuna basıp şifre yazma işi tamamlanır.

4- Kilidi açmak için önce “*” tuşuna basarız. Sonra LED2 sürekli yanar. Bu sırada şifremizi gireriz. Son olarak “#” ye basarız. Şifre doğru girilmişse RB0 ‘a bağlı LED4 Yanar. Röle enerjilenir. Şifre yanlışsa RB5‘e bağlı LED3 yanar ve geri söner. 3 defa yanlış şifre girildiyse LED3 ile LED2 birlikte sürekli yanar. Bu durumda pin 2 kodu girilir.

5- kilidi kapatmak veya şifreyi yazmaktan vazgeçmek için “*” tuşuna basarız.

6- PIC başla işlemi yapıldıktan sonra 2 dakika çalışır, otomatik olarak ana programa döner. Başla işlemleri, LED2‘nin yandığı ve pın 2 kodunun şifre unutulduğunda kullanılacağı durumlarıdır. Program, hatalı şifre yazılımından dolayı kitlenmişse bu zamanlayıcı çalışmaz. Her türlü güvenlik önlemini aldım.

PIN 2 KODU:

PIN 2 Kodu 45 defa "1" tuşuna sonra “#” 10 defa “0” tuşuna ve “#” tuşuna basılıp tamamlanır. Bu kodu yanlış girerseniz Program açılmaz. Bu kodları sadece asm içinde değişir.

ŞİFRE DEĞİŞTİRME:

Şifre değiştirmek için önce eski şifre girilir ve kilit açılır. Sonra RA4’e bağlı şifre değiştir butonuna basılır. RB7‘ye bağlı LED1 yanınca buton bırakılır. Yeni şifre yazılıp “#” tuşuna basılır ve LED1 söner.

ŞİFRE UNUTULURSA:

Şifre unutulduğu zaman açmanın sadece iki yolu vardır. Bunlar:

1- PIC 16F84‘ü programlama kartına takıp EEPROM veri kısmında şifre görülür ( EEADR 0......9 arası ) EEADR 11 de en son kaç haneli şifre girildiği görülür.

2- Şifre değiş butonu ile “5” tuşuna basılı tutulur. Bir süre sonra LED2 ve LED3 birlikte sürekli yanar. Pin 2 kodu girilir. Daha sonra LED 1 ışık verir ve diğer ledler söner. Yeni şifre yazılıp “#” tuşuna basılır.

NOT: PIN 2 KODUNU ASM DOSYASINDAN DEĞİŞTİREBİLİRSİNİZ (KILIT ETİKETİNDEN SONRASINI İNCELEYİN)

Devre şeması:

Devre ait tuş takımı şeması:

Devreye ait ek dosyalar:

Devre şemasını büyük görmek için tıklayınız.

Devrenin PROTEUS ISIS ile hazırlanmış şema dosyasını sıkıştırılmış zipli dosya olarak indirmek için tıklayınız.

Devrenin PROTEUS ARES ile hazırlanmış baskı devre dosyasını sıkıştırılmış zipli dosya olarak indirmek için tıklayınız.

PIC16F84 entegresi için kaynak ASM kodlarını indirmek için tıklayınız.

PIC16F84 entegresini programlamak için HEX kaynak kodlarını indirmek için tıklayınız.

Tamamlanmış devrenin çalışır şekildeki uygulama görüntü dosyasını bilgisayarınıza indirmek veya izlemek için tıklayınız.

Tamamlanmış devrenin çalışır şekildeki uygulama görüntü kaydını aşağıdaki playerden izleyebilirsiniz. (Görüntü internet bağlantı hızınızdan etkilenebilir)


Devrenin ASM kaynak kodları:

;www.profahmet.com.tr.tc  www.profahmet.tr.cx
	          LIST      P=16F84A
	#include    
	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
KOD1	EQU	H'0020'
KOD2	EQU	H'0021'
KOD3	EQU	H'0022'
KOD4	EQU	H'0023'
KOD5	EQU	H'0024'
KOD6	EQU	H'0025'
KOD7	EQU	H'0026'
KOD8	EQU	H'0027'
KOD9	EQU	H'0028'	
KOD10	EQU	H'0029'	
MSB	EQU	H'002A'
KONT	EQU	H'002B'
SAYAC	EQU	H'002C'
BINKOD	EQU	H'002D'
YAZKOD	EQU	H'002E'
SAYI	EQU	H'002F'
LSB	EQU	H'0030'
SAYAC2	EQU	H'0031'
SAYAC3	EQU	H'0032'
SONUC	EQU	H'0033'
SAYAC4	EQU	H'0034'
SAYAC1	EQU	H'0035'
	ORG 	H'0000'
	GOTO 	BASLA
BASLA                            
	CLRF	PORTB				
	BSF	STATUS, RP0		
	MOVLW	B'00000000'		
	MOVWF	TRISB
	MOVLW	B'00011111'		
	MOVWF	TRISA
	BCF	STATUS, RP0
	MOVLW	.150
	MOVWF	KOD1
	MOVWF	KOD2
	MOVWF	KOD3
	MOVWF	KOD4
	MOVWF	KOD5
	MOVWF	KOD6
	MOVWF	KOD7
	MOVWF	KOD8
	MOVWF	KOD9
	MOVWF	KOD10
	CLRF	KONT
	CLRF	BINKOD
	CLRF	YAZKOD
	CLRF	SAYAC
	CLRF	SAYAC1
	CLRF	SAYAC2
	CLRF	SAYAC3
	CLRF	SAYAC4
	CLRF	SONUC
	BSF	PORTB,6	;Gerilim sışraması için bele 
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	BCF	PORTB,6	;Bekleme tamamlandı
	CLRF	MSB
	CLRF	LSB
	GOTO	KONTROL	 
;***************************
BEKLE
	MOVLW .255
	MOVWF LSB
	MOVWF SAYAC2
DL1
	MOVLW .255
	MOVWF MSB
DL2	
	DECFSZ  MSB,F
	GOTO DL2
	DECFSZ  LSB,F
	GOTO DL1
DL3
	DECFSZ  SAYAC1,F
	GOTO DL3
	RETURN
;***************************
KONTROL
	MOVLW	.0
	CALL	ONOKU
	MOVWF	MSB
	MOVLW	.255    ;H'FF'
	SUBWF	MSB,W       
	BTFSS	STATUS,Z
	GOTO	KONTROL2   
	GOTO	YENI	  ;yazılmamışsa yeni yaz
;---------------------------
KONTROL2
	MOVLW	.0    
	SUBWF	MSB,W       
	BTFSS	STATUS,Z
	GOTO	ANA	;şifre yazılmışsa ana programa git 
	GOTO	YENI	;yazılmamışsa yeni yaz
;*****************************
YENI
	CLRF	PORTB
	CLRF	MSB
	CLRF	KONT
	BSF	PORTB,7		;yeni şifre yaz ikazı
;----------------------------------
TARA1
	CALL	BUTARA		;butonları tara
	MOVLW	.1
	SUBWF	SAYI,W 		
	BTFSS	STATUS,C	;butondan değer girilmemişse 
	GOTO	TARA1		;tekrar tara
	MOVLW	.0		;değer girilmişse eeprom "0"a yaz
	CALL	ONYAZ
	MOVLW	.1
	MOVWF	KONT	;kontura 1basamak yükle
	GOTO	TARA2
;---------------------
TARA2
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA2
	MOVLW	.1
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.2
	MOVWF	KONT
	GOTO	TARA3
;-------------------------
TARA3
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA3
	MOVLW	.2
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.3
	MOVWF	KONT
	GOTO	TARA4
;------------------------
TARA4
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA4
	MOVLW	.3
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.4
	MOVWF	KONT
	GOTO	TARA5
;--------------------------
TARA5
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA5
	MOVLW	.4
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.5
	MOVWF	KONT
	GOTO	TARA6
;---------------------
TARA6
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA6
	MOVLW	.5
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.6
	MOVWF	KONT
	GOTO	TARA7
;-------------------------
TARA7
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA7
	MOVLW	.6
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.7
	MOVWF	KONT
	GOTO	TARA8
;------------------------
TARA8
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA8
	MOVLW	.7
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.8
	MOVWF	KONT
	GOTO	TARA9

;--------------------------
TARA9
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA9
	MOVLW	.8
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.9
	MOVWF	KONT
	GOTO	TARA10
;--------------------------
TARA10
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA10
	MOVLW	.9
	CALL	ONYAZ
	CLRF	KONT
	MOVLW	.10
	MOVWF	KONT
TEKRAR
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	ANA1
	GOTO	TEKRAR
;---------------------
ONYAZ
	MOVWF	EEADR
	MOVF	SAYI,W
	MOVWF	EEDATA
	CALL	EYAZ
	BSF	STATUS,5
DON
	BTFSS	EECON1,EEIF
	GOTO	DON
	BCF	STATUS,5
	RETURN
;---------------------------
ANA1
	MOVLW	.11
	MOVWF	EEADR
	MOVF	KONT,W	  ;konturu eeprom11e yaz
	MOVWF	EEDATA
	CALL	EYAZ
	BSF	STATUS,5
DON0
	BTFSS	EECON1,EEIF
	GOTO	DON0
	BCF	STATUS,5
	GOTO	ANA
;*****************************
EYAZ
	BSF	STATUS,5
	BSF	EECON1,WREN
	MOVLW	.85
	MOVWF	EECON2
	MOVLW	.170
	MOVWF	EECON2
	BSF	EECON1,WR
	BCF	EECON1,WREN
	BCF	STATUS,5
	RETURN
;*****************************
ANA
	MOVLW	B'00001100'
	MOVWF	PORTB	
	BTFSS	PORTA,3	  ;"*" ı test et
	GOTO	GIRIS
	BTFSS	PORTA,4
	GOTO	FORMATLA
	GOTO	ANA
;*********************************************
FORMATLA
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	BSF	PORTB,1
	BCF	PORTB,2
	BTFSC	PORTA,1 ;5 Rakamı
	GOTO	ANA
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	BSF	PORTB,2
	BCF	PORTB,1
	BTFSS	PORTA,4
	GOTO	KODGIR
	GOTO	ANA
;*****************************
KODGIR
	MOVLW	B'01101110'
	MOVWF	PORTB
	CALL	ZAMAN_0
KILIT
	CLRF	YAZKOD
;---------------------------
BYD
	MOVLW	.3
	SUBWF	SAYAC4,W
	BTFSS	STATUS,Z
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,2
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,0	;"1"rakamı
	GOTO	ARTTIR
	BSF	PORTB,1
DEVAM
	BSF	PORTB,1	
	BCF	PORTB,2
	BTFSS	PORTA,3	;"0"rakamı
	GOTO	AZALT
	BSF	PORTB,2
DEVAM2
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	TESTET
	BSF	PORTB,3
	GOTO	BYD
;---------------------------
TESTET
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,3	
	GOTO	TESTET
	MOVLW	.45
	SUBWF	YAZKOD,W
	BTFSS	STATUS,Z
	GOTO	KILIT
	GOTO	BYDZ_0
;---------------------------
BYDZ_0
	CALL	ZAMAN_0
BYD2
	MOVLW	.3
	SUBWF	SAYAC4,W
	BTFSS	STATUS,Z
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,2
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,0	;"1"rakamı
	GOTO	ARTTIR2
	BSF	PORTB,1
DEVAM3
	BSF	PORTB,1
	BCF	PORTB,2
	BTFSS	PORTA,3	;"0"rakamı
	GOTO	AZALT2
	BSF	PORTB,2
DEVAM4
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3	;"#"onayla
	GOTO	TEST2
	BSF	PORTB,3
	GOTO	BYD2
;---------------------------
TEST2
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,3
	GOTO	TEST2
	MOVLW	.35
	SUBWF	YAZKOD,W
	BTFSS	STATUS,Z
	GOTO	KILIT	
	BSF	PORTB,3
	GOTO	YENI
;---------------------------
ANADON
	CALL	BEKLE
	BTFSS	PORTA,3
	GOTO	ANADON
	GOTO	ANA
;****************************************************
ARTTIR
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,0
	GOTO	ARTTIR
	INCF	YAZKOD,F
	GOTO	DEVAM
;---------------------------
AZALT
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,3
	GOTO	AZALT
	DECF	YAZKOD,F
	GOTO	DEVAM2
;***************************
ARTTIR2
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,0
	GOTO	ARTTIR2
	INCF	YAZKOD,F
	GOTO	DEVAM3
;---------------------------
AZALT2
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,3
	GOTO	AZALT2
	DECF	YAZKOD,F
	GOTO	DEVAM4	  
;*****************************
GIRIS
	CALL	BEKLE	;kontak sışramasını önle
	BTFSS	PORTA,3
	GOTO	GIRIS
;----------------------
	BSF	PORTB,6   ;şifreyi yaz uyarısı ledi yak	
;----------------------
	CLRF	KONT
	MOVLW	.11
	MOVWF	EEADR
	BSF	STATUS,5
	BSF	EECON1,RD
	BCF	STATUS,5
	MOVF	EEDATA,W    ;eeprom "10"ı oku
	MOVWF	KONT
	CALL	ZAMAN_0
	GOTO	TARA11
;----------------------
TARA11
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C	;butondan değer girilmemişse 
	GOTO	TARA11		;tekrar tara
	MOVF	SAYI,W		;girilmişse
	MOVWF	KOD1		;kod1'e yaz
	MOVLW	.1
	SUBWF	KONT,W
	BTFSS	STATUS,C	;basamak sayısını test et
	GOTO	SIFIRLA		;fazla yazıldıysa sıfırla
	CALL	ZAMAN_0		;eksikse diğerinin yazılmasına izin ver
TARA22
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA22
	MOVF	SAYI,W
	MOVWF	KOD2
	MOVLW	.2
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA33
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA33
	MOVF	SAYI,W
	MOVWF	KOD3
	MOVLW	.3
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA44
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA44
	MOVF	SAYI,W
	MOVWF	KOD4
	MOVLW	.4
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA55
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA55
	MOVF	SAYI,W
	MOVWF	KOD5
	MOVLW	.5
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA66
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA66
	MOVF	SAYI,W
	MOVWF	KOD6
	MOVLW	.6
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA77
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA77
	MOVF	SAYI,W
	MOVWF	KOD7
	MOVLW	.7
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA88
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA88
	MOVF	SAYI,W
	MOVWF	KOD8
	MOVLW	.8
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA99
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA99
	MOVF	SAYI,W
	MOVWF	KOD9
	MOVLW	.9
	SUBWF	KONT,W
	BTFSS	STATUS,C
	GOTO	SIFIRLA
	CALL	ZAMAN_0
TARA00
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	BSF	PORTB,1
	CALL	BUTARA
	MOVLW	.1
	SUBWF	SAYI,W 
	BTFSS	STATUS,C
	GOTO	TARA00
	MOVF	SAYI,W
	MOVWF	KOD10
	MOVLW	.10
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	SIFIRLA	
	GOTO	ONAY1
;*************************
ONAY1
	CALL	ZAMAN_0
ONAY
	CALL	ZAMANSAY
	MOVLW	.255
	SUBWF	SONUC,W
	BTFSC	STATUS,Z
	GOTO	ANA
	CALL	BUTARA
	BSF	PORTB,6
	BSF	PORTB,1
	BSF	PORTB,2
	BCF	PORTB,3
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BSF	PORTB,3
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	GOTO	ONAY
;**************************
SIFIRLA
	MOVLW	.150
	MOVWF	KOD1
	MOVWF	KOD2
	MOVWF	KOD3
	MOVWF	KOD4
	MOVWF	KOD5
	MOVWF	KOD6
	MOVWF	KOD7
	MOVWF	KOD8
	MOVWF	KOD9
	MOVWF	KOD10
	GOTO	ONAY1
;**************************
VAZGEC
	CALL	BEKLE	;kontak sışramasını önle
	BCF	PORTB,6
	BSF	PORTB,1
	BSF	PORTB,2
	BSF	PORTB,3
	BCF	PORTB,0  
	BTFSS	PORTA,3
	GOTO	VAZGEC
KLT0
	MOVLW	.150
	MOVWF	KOD1
	MOVWF	KOD2
	MOVWF	KOD3
	MOVWF	KOD4
	MOVWF	KOD5
	MOVWF	KOD6
	MOVWF	KOD7
	MOVWF	KOD8
	MOVWF	KOD9
	MOVWF	KOD10
	BCF	PORTB,0   ;kontrol çıkışını 0 yap   
	BSF	PORTB,4	  ;kilit uyarısı verme
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	BCF	PORTB,4	  ;kilit uyarısı verme
	GOTO	ANA
;***************************
INCELE
	BTFSS	PORTA,3   ; "#"i test et
	GOTO	INCELE
	BCF	PORTB,6
;-------------------------1
INC1
	MOVLW	.0
	CALL	ONOKU	   ;eeprom "0"ı oku
	SUBWF	KOD1,W     ;kod1'le girilen sayıyı karşılaştır  
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.1
	SUBWF	KONT,W	    ;Girilen basamak sayısı kadar incele
	BTFSS	STATUS,Z
	GOTO	INC2
	GOTO	SDOGRU			   
;------------------------2
INC2  
	MOVLW	.1
	CALL	ONOKU
	SUBWF	KOD2,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.2
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC3
	GOTO	SDOGRU	
;-------------------------3
INC3
	MOVLW	.2
	CALL	ONOKU
	SUBWF	KOD3,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.3
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC4
	GOTO	SDOGRU	
;-------------------------4
INC4
	MOVLW	.3
	CALL	ONOKU
	SUBWF	KOD4,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.4
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC5
	GOTO	SDOGRU	
;-------------------------5
INC5
	MOVLW	.4
	CALL	ONOKU
	SUBWF	KOD5,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.5
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC6
	GOTO	SDOGRU	
;;-------------------------6
INC6
	MOVLW	.5
	CALL	ONOKU
	SUBWF	KOD6,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.6
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC7
	GOTO	SDOGRU	
;-------------------------7
INC7
	MOVLW	.6
	CALL	ONOKU
	SUBWF	KOD7,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.7
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC8
	GOTO	SDOGRU	
;-------------------------8
INC8
	MOVLW	.7
	CALL	ONOKU
	SUBWF	KOD8,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.8
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC9
	GOTO	SDOGRU	
;-------------------------9
INC9
	MOVLW	.8
	CALL	ONOKU
	SUBWF	KOD9,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	MOVLW	.9
	SUBWF	KONT,W
	BTFSS	STATUS,Z
	GOTO	INC10
	GOTO	SDOGRU	
;-------------------------10
INC10
	MOVLW	.9
	CALL	ONOKU
	SUBWF	KOD10,W       
	BTFSS	STATUS,Z
	GOTO	HATALI
	GOTO	SDOGRU	;hepsi doğruysa
ONOKU
	MOVWF	EEADR
	BSF	STATUS,5
	BSF	EECON1,RD
	BCF	STATUS,5
	MOVF	EEDATA,W
	RETURN 
;**************************
SDOGRU
	CLRF	SAYAC4
	BCF	PORTB,6	 ;şifreyi yaz uyarısı ledi söndür
	BSF	PORTB,0  ; çıkış [1]
	CALL	BEKLE
	CALL	BEKLE
	BTFSS	PORTA,4	  ;şifre değiş butonu test et
	GOTO	YENI	  ;basılmışsa yeni yaz
	CALL	BEKLE
	CALL	BEKLE
	BSF	PORTB,3
	BSF	PORTB,2
	BCF	PORTB,1
	BTFSS	PORTA,3   ; "*"ı test et
	GOTO	VAZGEC
	GOTO	SDOGRU	
;***************************
HATALI
	BCF	PORTB,6
	BSF	PORTB,5  ;hata ikazı
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	CALL	BEKLE
	INCF	SAYAC4,F
	MOVLW	.3
	SUBWF	SAYAC4,W
	BTFSC	STATUS,Z
	GOTO	KILIT
	BSF	PORTB,5
	GOTO	VAZGEC
;****************************
ZAMAN_0
	CLRF	SAYAC
	CLRF	SAYAC2
	MOVLW	.200
	MOVWF	SAYAC3
	CLRF	SONUC
	RETURN
ZAMANSAY
	MOVLW	.1
	ADDWF	SAYAC,F
	BTFSS	STATUS,C
	RETURN
	CLRF	SAYAC
	MOVLW	.1
	ADDWF	SAYAC2,F
	BTFSS	STATUS,C
	RETURN	
	CLRF	SAYAC2
	MOVLW	.1
	ADDWF	SAYAC3,F
	BTFSS	STATUS,C
	RETURN
	MOVLW	.255
	MOVWF	SONUC
	RETURN
;****************************
BUTARA	
	BSF	PORTB,1
	BSF	PORTB,2
	BSF	PORTB,3
	CLRF	SAYI
;-----------------------
	BCF	PORTB,1	   ; 1.süton aktif
;-----------------------
	BTFSC	PORTA,0	   ; "1"rakamını test et
	GOTO	T1
DO1
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,0
	GOTO	DO1
	BCF	PORTB,4
	MOVLW	.1
	MOVWF	SAYI
	BSF	PORTB,1	 
	RETURN
T1	
	BTFSC	PORTA,1	   ; "4"rakamını test et
	GOTO	T2
DO2
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,1
	GOTO	DO2
	BCF	PORTB,4
	MOVLW	.4
	MOVWF	SAYI
	BSF	PORTB,1
	RETURN
T2	
	BTFSC	PORTA,2	   ; "7"rakamını test et
	GOTO	BUTARA2
DO3
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,2
	GOTO	DO3
	BCF	PORTB,4
	MOVLW	.7
	MOVWF	SAYI
	BSF	PORTB,1 
	RETURN
BUTARA2
	BSF	PORTB,1    ; 1.süton pasif
;------------------------
	BCF	PORTB,2    ; 2.süton aktif
;------------------------
	BTFSC	PORTA,0	   ; "2"rakamını test et
	GOTO	T11
DO4
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,0
	GOTO	DO4
	BCF	PORTB,4
	MOVLW	.2
	MOVWF	SAYI
	BSF	PORTB,2
	RETURN
T11	
	BTFSC	PORTA,1	   ; "5"rakamını test et
	GOTO	T22
DO5
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,1
	GOTO	DO5
	BCF	PORTB,4
	MOVLW	.5
	MOVWF	SAYI
	BSF	PORTB,2
	RETURN
T22	
	BTFSC	PORTA,2	   ; "8"rakamını test et
	GOTO	T33
DO6
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,2
	GOTO	DO6
	BCF	PORTB,4
	MOVLW	.8
	MOVWF	SAYI
	BSF	PORTB,2
	RETURN
T33	
	BTFSC	PORTA,3	   ; "0"rakamını test et
	GOTO	BUTARA3
DO7
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4	
	BTFSS	PORTA,3
	GOTO	DO7
	BCF	PORTB,4
	MOVLW	.10
	MOVWF	SAYI
	BSF	PORTB,2
	RETURN
BUTARA3
	BSF	PORTB,2
;-------------------------
	BCF	PORTB,3    ;3.süton aktif
;-------------------------
	BTFSC	PORTA,0
	GOTO	T111
DO8
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,0	   ; "3"rakamını test et
	GOTO	DO8
	BCF	PORTB,4
	MOVLW	.3
	MOVWF	SAYI
	BSF	PORTB,3
	RETURN
T111	
	BTFSC	PORTA,1	   ; "6"rakamını test et
	GOTO	T222
DO9
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,1
	GOTO	DO9
	BCF	PORTB,4
	MOVLW	.6
	MOVWF	SAYI
	BSF	PORTB,3
	RETURN
T222	
	BTFSC	PORTA,2	   ; "9"rakamını test et
	GOTO	TSON
DO10
	CALL	BEKLE	;kontak sışramasını önle
	BSF	PORTB,4
	BTFSS	PORTA,2
	GOTO	DO10
	BCF	PORTB,4
	MOVLW	.9
	MOVWF	SAYI
	BSF	PORTB,3
	RETURN
TSON
	BSF	PORTB,3
	BSF	PORTB,2
	BSF	PORTB,1
	CLRF	SAYI
	RETURN
;**********************
;
	END


E-posta: profahmet@hotmail.com
Sayfa Etiketleri:16F84 (9) Pic Asm (13)
İçerik Yan Blok
Konular
Tasarım: Teknimer Teknoloji
Yukarı