PIC16F84 Şifreli Kilit
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
Yorumlarınız
Bir yorum ekleyin
İzin verilen html etiketler (tag): <p><div><b><strong><i><u><del><hr><sup><sub><br>