Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

şifreli kilt için yardım

Başlatan lordangel, 22 Aralık 2005, 21:57:43

lordangel

merhabalar elimde bir şifreli kilt devresi var .Ancak bu devre asm ile programlanmış.Ben bunu pic basicte yazmak istiyorum yani asm yi pic basice çevirmek istiyorum. Ancak bunu yaparken bazı sorunlarla karşılaştım mesela kaydettiğim şifreyi pice kaydedemedim bunun için hangi komutu kullnamalıyım aşagıda bu devrenin asm kodunu görebilirsiniz bunu pic basice çevirmemde yardımcı olursanız çok sevinirim
TANIMLAMALAR:
   list      p=16F84A                ; DERLEYICIYE ISLEMCI TANITILIR
   #include <p16F84A.inc>            ; PIC16F84 TANIMLAMA DOSYASI

   KEYB_DATA   EQU   H'0010'
   KEYB_SCAN   EQU   H'0011'
   SOFT_INT_TIMER1   EQU   H'0012'
   FONKSIYON   EQU   H'0013'
   msb      EQU   H'0014'
   lsb      EQU   H'0015'
   SYSCON      EQU   H'0016'
   M_TEMP0      EQU   H'0017'
   KEYCOUNT   EQU   H'0018'   

   KEY_BUFFER1   EQU   H'0020'
   KEY_BUFFER2   EQU   H'0021'
   KEY_BUFFER3   EQU   H'0022'
   KEY_BUFFER4   EQU   H'0023'
   KEY_BUFFER5   EQU   H'0024'
   KEY_BUFFER6   EQU   H'0025'
   KEY_BUFFER7   EQU   H'0026'
   KEY_BUFFER8   EQU   H'0027'

   ; SIFRELI KILIT ICIN ISTEDIGINIZ 4 HANELI SIFREYI
   ; BURADA BELIRLEYIN
   ; SUAN SIFRE 1881 OLARAK TANIMLIDIR
   SIFRE1      EQU   D'1'
   SIFRE2      EQU   D'8'
   SIFRE3      EQU   D'8'
   SIFRE4      EQU   D'1'


;PORTB UCLARI
   KEY_SCAN0   EQU   H'0003'
   KEY_SCAN1   EQU   H'0002'
   KEY_SCAN2   EQU   H'0001'

;PORTA UCLARI
   IRCODE      EQU   H'0000'
   KIRMIZILED   EQU   H'0003'
   YESILLED   EQU   H'0002'
   ROLE      EQU   H'0001'
   BUZZER      EQU   H'0004'

;SYSCON UCLARI
   BUTON_BASILI   EQU   H'0000'
   SIFRE_GECERLI   EQU   H'0001'
   KILIT_DURUM   EQU   H'0002'


   __CONFIG   _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC


   ORG   H'0000'
   GOTO   BASLA

   ORG   H'0004'
   GOTO   INT_VECTOR

;****************************************************************************
;****************************************************************************
BEKLEME_DONGUSU:
   NOP
   clrwdt
   NOP
   GOTO   BEKLEME_DONGUSU   

;****************************************************************************
;****************************************************************************
   ORG   H'0010'   
INT_VECTOR
   ;TIMER0 INTERRUPTU ?
   ;BORTB KEYPRESS?
   GOTO   BEKLEME_DONGUSU

;****************************************************************************
;****************************************************************************
BASLA:
   CLRF   SYSCON
   CLRF   KEYCOUNT

   MOVLW   H'FF'
   MOVWF   KEYB_DATA
   MOVLW   B'11111110'
   MOVWF   SOFT_INT_TIMER1

   MOVLW   B'11111110'
   MOVWF   KEYB_SCAN
   CALL   PORTLARI_AYARLA

ALGORITMA:
   clrwdt
   NOP
   CALL   TUS_DEGERI_HESAPLA

;KILIT DURUMU KONTROLU
   BTFSC   SYSCON,KILIT_DURUM
   GOTO   KILITDURUM1
   GOTO   KILITDURUM2
KILITDURUM1:
;KILITACIK
;KILIT ACIK KONUMDA ISE YESIL LED YAKILIR KIMIZI LED SONDURULUR
   BSF   PORTA,YESILLED
   BCF   PORTA,KIRMIZILED
   BSF   PORTA,ROLE
   GOTO   KILITDURUMSON
KILITDURUM2
;KILIT KAPALI:
;KILIT KAPALI KONUMDA ISE KIMIZI LED YAKILIR YESIL LED SONDURULUR
   BSF   PORTA,KIRMIZILED
   BCF   PORTA,YESILLED
   BCF   PORTA,ROLE
KILITDURUMSON:
;TEST ICIN

   CALL   SIFRE_KARSILASTIR

   MOVFW   KEYB_DATA
   MOVWF   M_TEMP0
   MOVF   M_TEMP0,W   ;karsilatirilacak degisken onceden MTEMP'e yuklenmistir
   XORLW   D'11'      ;W ile karsilastirilacak tamsayi xor'lanir
   BTFSC   STATUS,Z   ;IF W=M_TEMP
   CLRF   KEYCOUNT

   goto ALGORITMA

;****************************************************************************
;****************************************************************************
TUS_DEGERI_HESAPLA:
;   MOVLW   H'FF'
   MOVFW   KEYB_DATA
   MOVWF   M_TEMP0

;1.sutun 1,4,7,bk
   BCF   PORTB,KEY_SCAN0
   BSF   PORTB,KEY_SCAN1
   BSF   PORTB,KEY_SCAN2
   CALL   DLY_1MS      ; BUTON TEKPI SURESI ICIN 1mS BEKLENIR
T_D_H_1:
   BTFSC   PORTB,4
   GOTO   T_D_H_4
   MOVLW   D'1'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_4:
   BTFSC   PORTB,5
   GOTO   T_D_H_7
   MOVLW   D'4'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_7:
   BTFSC   PORTB,6
   GOTO   T_D_H_K
   MOVLW   D'7'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_K:
   BTFSC   PORTB,7
   GOTO   T_D_H_1SON
   MOVLW   D'10'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_1SON:
;2.sutun 2,5,8,0
   BSF   PORTB,KEY_SCAN0
   BCF   PORTB,KEY_SCAN1
   BSF   PORTB,KEY_SCAN2
   CALL   DLY_1MS      ; BUTON TEKPI SURESI ICIN 1mS BEKLENIR

T_D_H_2:
   BTFSC   PORTB,4
   GOTO   T_D_H_5
   MOVLW   D'2'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_5:
   BTFSC   PORTB,5
   GOTO   T_D_H_8
   MOVLW   D'5'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_8:
   BTFSC   PORTB,6
   GOTO   T_D_H_0
   MOVLW   D'8'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_0:
   BTFSC   PORTB,7
   GOTO   T_D_H_2SON
   MOVLW   D'0'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_2SON:
;3.sutun 3,6,9,ba
   BSF   PORTB,KEY_SCAN0
   BSF   PORTB,KEY_SCAN1
   BCF   PORTB,KEY_SCAN2
   CALL   DLY_1MS      ; BUTON TEKPI SURESI ICIN 1mS BEKLENIR
T_D_H_3:
   BTFSC   PORTB,4
   GOTO   T_D_H_6
   MOVLW   D'3'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_6:
   BTFSC   PORTB,5
   GOTO   T_D_H_9
   MOVLW   D'6'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_9:
   BTFSC   PORTB,6
   GOTO   T_D_H_A
   MOVLW   D'9'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI

T_D_H_A:
   BTFSC   PORTB,7
   GOTO   T_D_H_3SON
   MOVLW   D'11'
   MOVWF   KEYB_DATA
   GOTO   T_D_H_TUSABASILDI
T_D_H_3SON:


;BUTON BASILI KALDI ISE SON TUS HAFIZADA BEKLETILIR
;DEGILSE FF DEGERI VERILIR
T_D_H_BT0:
   BTFSC   SYSCON,BUTON_BASILI
   GOTO   T_D_H_BT1
   GOTO   T_D_H_BT2
T_D_H_BT1:
   MOVFW   M_TEMP0
   MOVWF   KEYB_DATA
   GOTO   T_D_H_BT3
T_D_H_BT2:
   MOVLW   H'FF'
   MOVWF   KEYB_DATA
T_D_H_BT3:

T_D_H_TUSYOK:
   BCF   SYSCON,BUTON_BASILI
   BCF   PORTA,KIRMIZILED
   GOTO   T_D_H_SON

T_D_H_TUSABASILDI:
   BTFSS   SYSCON,BUTON_BASILI
   CALL   KEY_BUFFER_TAZELE
   NOP

   BSF   SYSCON,BUTON_BASILI
   BSF   PORTA,KIRMIZILED

T_D_H_SON:
;TUS TARAMA KAPALI
   BSF   PORTB,KEY_SCAN0
   BSF   PORTB,KEY_SCAN1
   BSF   PORTB,KEY_SCAN2
RETURN
;****************************************************************************
KEY_BUFFER_TAZELE:
   INCF   KEYCOUNT
   MOVFW   KEY_BUFFER2
   MOVWF   KEY_BUFFER1

   MOVFW   KEY_BUFFER3
   MOVWF   KEY_BUFFER2

   MOVFW   KEY_BUFFER4
   MOVWF   KEY_BUFFER3

   MOVFW   KEY_BUFFER5
   MOVWF   KEY_BUFFER4

   MOVFW   KEYB_DATA
   MOVWF   KEY_BUFFER5

RETURN
;****************************************************************************
;****************************************************************************
SIFRE_KARSILASTIR:
S_K1:
   MOVFW   KEY_BUFFER1
   MOVWF   M_TEMP0
   MOVF   M_TEMP0,W   ;karsilatirilacak degisken onceden MTEMP'e yuklenmistir
   XORLW   SIFRE1      ;W ile karsilastirilacak tamsayi xor'lanir
   BTFSS   STATUS,Z   ;IF W=M_TEMP
   GOTO   S_K_YANLIS   ;M_TEMP != 3 else SATIR_1 den sonraki islemler
S_K2:
   MOVFW   KEY_BUFFER2
   MOVWF   M_TEMP0
   MOVF   M_TEMP0,W
   XORLW   SIFRE2
   BTFSS   STATUS,Z
   GOTO   S_K_YANLIS
S_K3:
   MOVFW   KEY_BUFFER3
   MOVWF   M_TEMP0
   MOVF   M_TEMP0,W
   XORLW   SIFRE3
   BTFSS   STATUS,Z
   GOTO   S_K_YANLIS
S_K4:
   MOVFW   KEY_BUFFER4
   MOVWF   M_TEMP0
   MOVF   M_TEMP0,W
   XORLW   SIFRE4
   BTFSS   STATUS,Z
   GOTO   S_K_YANLIS
S_K5:
   MOVFW   KEY_BUFFER5
   MOVWF   M_TEMP0
   MOVF   M_TEMP0,W
   XORLW   D'11'
   BTFSS   STATUS,Z
   GOTO   S_K_YANLIS

S_K_DOGRU:
   BSF   SYSCON,KILIT_DURUM
   GOTO   S_K_SON
S_K_YANLIS:
   BCF   SYSCON,KILIT_DURUM

S_K_SON:   
RETURN
;****************************************************************************
;PIC0007 SIFRELI KILIT ICIN PORT AYARLARI
;****************************************************************************
PORTLARI_AYARLA:
   CLRF   PORTB         ; RESET portb
   CLRF   PORTA         ; RESET portA

   BSF   STATUS, RP0      ; BANK 1 GECILIR
   MOVLW   B'11110001'      ; RB0-7=CIKIS
   MOVWF   TRISB
   MOVLW   B'00010000'      ; RA0-5=GIRIS
   MOVWF   TRISA
       bcf     OPTION_REG,NOT_RBPU   ;PORTB pull-up
   BCF   STATUS, RP0      ; BANK 0 GECILIR
   RETURN
;****************************************************************************
;   4MHz CLOCK ICIN BEKLETME RUTINLERI
;   BU RUTIN CALL ILE FLIP_FLOP DONGUSUNDEN CAGIRILIR
;****************************************************************************
BEKLET_100MS:
   DLY_100MS      ;YAKLASIK 100 MILI SANIYE
      CLRWDT
           movlw   D'200'
          movwf   msb
      GOTO   DLY1
   DLY_10MS      ;YAKLASIK 10 MILI SANIYE
      CLRWDT
           movlw   D'20'
          movwf   msb
      GOTO   DLY1

   DLY_1MS         ;YAKLASIK 1 MILI SANIYE
      CLRWDT
           movlw   D'2'
          movwf   msb
      GOTO   DLY1
   DLY1
      movlw   D'168'
           movwf   lsb
   DLY2         ;YAKLASIK 3 MICRO SANIYE
      decfsz  lsb,F   ;1 INS
           goto    DLY2   ;2 INS
           decfsz  msb,F   ;1 INS
          goto    DLY1   ;2 INS
   RETURN


org   h'03ff'
end

Class

merhaba Lordangel eger devre şemasını buraya eklersen ben ve arkadaşlarımız sana daha iyi yardımda bulunabiliriz....

lordangel

Devre şemasını ekledim.Yardımlarınız için şimdiden sağol un...
Devre şeması için http://rapidshare.de/files/9697369/pic0007.GIF.html linkine bakabilirsiniz.

DumrulBey

Merhaba,

Öncelikle aramıza yeni katılan arkadaşımıza ufak bir mesaj:
Hoş geldin "lordangel" ;)

Böyle bir projeyi PIC Basic'e çevirmek yerine var olan PIC Basic projesi işini görür mü? Yüksek ihtimalle böyle bir proje vardır. Bulursam buraya naklederim. Ancak amacın öğrenmek ve PIC Basic'e hakim olmak ise sen bilirsin.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

lordangel

Karşılama için sağol "Hoşbulduk". Ben tüm siteyi araştırdım, sitede şifreli kilitle ilgili çalışan pic basic projeleri var ama benim yapabileceğim düzeyden çok üstte.Benim düzeyim için çok kompleks. Benim için lazım olan basit şifre girebileceğim ve röleyi sürebileceğim bir devre.Ayrıca pic basic için zorlandığım nokta şifreyi eproma keypadden girilen şifreyi eproma alıp gerçek ile karşılaştırmak.Keypadden girilen değerleri nasıl alacağımı bilmiyorum dolayısıyla da gerçek şifre ile karşılaştırma yapamıyorum.Bu konuda yardımcı olursanız sevinirim.Teşekkürler...

puzzle74



Arkadaşlar değiştirilebilir şifreli kilit uygulaması şeklini gönderdim. Şimdide nasıl çalıştığını anlatacağım. şifremiz 4 haneden oluşuyor ve şifre girildikten sonra # tuşuna basmanız gerekiyor. şifre doğru girildiyse röle çeker.  
Eğer şifreyi yanlış girerseniz porta.0 'a bağlı kırmızı led yanıp söner.
Tuşlara her basdığınızda buzzer dan ses gelmesi gerekir böylece tuşlara gerçekten basıp basmadığınızı anlarsınız. Gelelim şifre değiştirme işlemine ;
Şifre değiştirmek için 4 defa "*" tuşuna basmanız gerkiyor. Sonra  porta.2 ve Porta.3'e bağlı olan  ledler yanacaktır bu şifre  girişi için hazır olunduğu anlamına gelir. İlk önce eski şifreyi girip "#" tuşuna basmanız gerekiyor. Eğer şifre yanlış ise kırmızı led yanacaktır, siz doğru şifre girene kadar yeni şifre girme işlemi başlamaz. Eski şifre doğru girildiğinde porta.2'ye bağlı led göz kırpar ve yeni şifre girmeniz için bekler. Yeni 4 haneli şifreden sonra "#" tuşuna basılmalıdır. sonra yeni şifreyi tekrar doğru bir şekilde yinelemeniz istenir. Ledler söndüğünde şifre tanımlamanız başarılı oldu demektir. Unutmadan şifre değiştirme işleminin herhangi bir adımında "*" tuşuna basarsanız eski şifre korunarak şifre değiştirme işleminden çıkılır. İlk anda şifreniz 1-2-3-4 , kolay gelsin

aşağıda kodları veriyorum :

TRISB=%00001110
TRISA=%00000000 
 porta=0
k var byte
x1 var byte 
x2 var byte
x3 var byte
x4 var byte
x5 var byte
x6 var byte
x7 var byte
x8 var byte
x9 var byte
x10 var byte
x11 var byte
x12 var byte
 
zaman var byte
a var byte 
b var byte 
tus var byte 
tus1 var byte
tus2 var byte
tus3 var byte
tus4 var byte   
ytus1 var byte
ytus2 var byte
ytus3 var byte
ytus4 var byte      
şifre1 var byte
şifre2 var byte
şifre3 var byte
şifre4 var byte
sif var byte
onay var byte
  a=0
  b=0
  tus=15       
 

read 0,şifre1
read 1,şifre2
read 2,şifre3
read 3,şifre4
if şifre1>9 then şifre1=1 : write 0,şifre1 
if şifre2>9 then şifre2=2 : write 1,şifre2
if şifre3>9 then şifre3=3 : write 2,şifre3
if şifre4>9 then şifre4=4 : write 3,şifre4
 

   

 'Keypad satır taraması  
tarama:
tus=15
  zaman=zaman+1 'zaman
  if zaman=120 then
      a=0 '10 saniye geçmişse tuşları sıfırla
      zaman=0
  endif
'**********************1.satır taraması***************************************** 
  portb.4=0
  portb.5=1
  portb.6=1
  portb.7=1
  pause 20
 
  if portb.3=1  then x1=0 '1 basılı değilse x1=0 ata    
  if portb.2=1 then x2=0 '2 basılı değilse x2=0 ata
  if portb.1=1 then x3=0 '3 basılı değilse x3=0 ata
 
  
  if portb.3=0 then 
    if x1=0 then  '1 basılıysa 
     tus=1
     gosub secim  
    endif
  endif
 
  if portb.2=0 then
    if x2=0 then  '2 basılıysa 
     tus=2
     gosub secim 
    endif 
  endif
 
  if portb.1=0 then
    if x3=0 then  '3 basılıysa 
     tus=3
     gosub secim 
    endif
  endif


'************************** 2. satır taraması*********************************
portb.4=1
portb.5=0
portb.6=1
portb.7=1
pause 20 

  if portb.3=1 then x4=0 '4 basılı değilse x4=0 ata
  if portb.2=1 then x5=0 '5 basılı değilse x5=0 ata
  if portb.1=1 then x6=0 '6 basılı değilse x6=0 ata  
  
  if portb.3=0 then
    if x4=0 then  '4 basılıysa 
     tus=4
     gosub secim 
    endif
  endif
 
  if portb.2=0 then
    if x5=0 then  '5 basılıysa 
     tus=5
     gosub secim 
    endif
  endif
 
  if portb.1=0 then
    if x6=0 then  '6 basılıysa 
     tus=6
     gosub secim 
    endif
  endif
'****************************3. satır taraması ********************************
portb.4=1
portb.5=1
portb.6=0
portb.7=1
pause 20 
   
  if portb.3=1 then x7=0 '7 basılı değilse x7=0 ata
  if portb.2=1 then x8=0 '8 basılı değilse x8=0 ata
  if portb.1=1 then x9=0 '9 basılı değilse x9=0 ata
  
  if portb.3=0 then 
    if x7=0 then  '7 basılıysa 
      tus=7
      gosub secim 
    endif
  endif
 
  if portb.2=0 then
    if x8=0 then  '8 basılıysa 
      tus=8
      gosub secim 
    endif
  endif
 
  if portb.1=0 then
    if x9=0 then  '9 basılıysa 
      tus=9
      gosub secim 
    endif
  endif

'*************************4. satır taraması  ***********************************
portb.4=1
portb.5=1
portb.6=1
portb.7=0
pause 20   

  if portb.3=1 then x10=0 '10 basılı değilse x10=0 ata
  if portb.2=1 then x11=0 '11 basılı değilse x11=0 ata
  if portb.1=1 then x12=0 '12 basılı değilse x12=0 ata

  if portb.3=0 then
    if x10=0 then  '4 kez * basılmışsa şifre değiştirme 
      sif=sif+1  
      tus=11 
      gosub şifre
    endif
  endif
 
  if portb.2=0 then 
    if x11=0 then  '0 basılıysa 
      tus=10
      gosub secim        
    endif
  endif
 
  if portb.1=0 then
    if x12=0 then  '# basılıysa 
      tus=12
      gosub secim 
    endif
  endif

goto tarama

'****************** ATAMA  ALT PROGRAMI*************************************
atama:
 zaman=0
 x1=1:x2=1:x3=1:x4=1:x5=1:x6=1:x7=1:x8=1:x9=1:x10=1:x11=1:x12=1
    
 if tus>=1 then
    if tus<=12 then
        if a=1 then tus1=tus
        if a=2 then tus2=tus
        if a=3 then tus3=tus
        if a=4 then tus4=tus
        if tus=12 then a=5
    endif
 endif
          
 if a=5 then
   if tus1=şifre1 then
     if tus2=şifre2 then
       if tus3=şifre3 then
         if tus4=şifre4 then 
           if tus=12 then 
               gosub aktif            
           endif
         endif
       endif
     endif
   endif                   
 endif
 if tus=12 then 
     if tus1<>şifre1 or tus2<>şifre2 or tus3<>şifre3 or tus4<>şifre4 then 
        gosub hata 
     endif 
 endif   
 if a>=5 then  a=0 
     
return

'********************ŞİFRE ALT PROGRAMI ****************************
şifre: 
   k=1
   
   zaman=0
   x1=1:x2=1:x3=1:x4=1:x5=1:x6=1:x7=1:x8=1:x9=1:x10=1:x11=1:x12=1 
if sif>4 then 
   a=0
   b=0
   sif=0
   porta.3=0
   porta.2=0
endif
if sif=4 then
     
      porta.3=1 'Yeşil led yan
      
      if b=0 then Gosub eski_şifre  'Eski  şifreyi gir            
      
      if b=1 then gosub yeni_şifre    
      
      if b=2 then gosub tekrar_gir    
    
    if b=3 then
       if tus1=ytus1 then
          if tus2=ytus2 then    
              if tus3=ytus3 then
                if tus4=ytus4 then
                     şifre1=ytus1
                     şifre2=ytus2
                     şifre3=ytus3
                     şifre4=ytus4
                     sif=0
                     a=0
                     b=0
                     porta.3=0
                     porta.2=0
                     write 0,şifre1
                     write 1,şifre2
                     write 2,şifre3
                     write 3,şifre4
                endif
              endif
          endif
       endif
    endif
endif
'***************** eğer 4 şifre girilip # basıldıysa şifre değiştir.**********      
       
       
return '************ŞİFRE ALT PROGRAM SONU************************************

'********************YENİ ŞİFRE ALT PROGRAMI************************
yeni_şifre:
    porta.2=0 'sarı len sön
    pause 250
     porta.2=1 'sarı len yan
   
if tus>=1 then
   if tus<=12 then
     
     if a=1 then ytus1=tus
     if a=2 then ytus2=tus
     if a=3 then ytus3=tus
     if a=4 then ytus4=tus 
     if a=5 then
        if  tus=12 then 
          a=0 
          b=2
          tus=0
        endif 
     endif
       
  endif 
endif
return
'******************** ŞİFRE TEKRAR ALT PROGRAMI***********************
tekrar_gir:
     porta.2=0 'Sarı led sön
     pause 250
     porta.2=1 'Sarı led yan
    
  if tus>=1 then
    if  tus<=12 then
     
     if a=1 then tus1=tus
     if a=2 then tus2=tus
     if a=3 then tus3=tus
     if a=4 then tus4=tus 
     
     if a=5 then 
      if tus=12 then   
         if tus1=ytus1 then
            if tus2=ytus2 then
               if tus3=ytus3 then
                  if tus4=ytus4 then 
                      b=3
                      a=0
                      
                  endif                   
               endif
            endif
        endif    
      endif
     endif
    
        if tus=12 then
           if b<>3 then 
              gosub hata
              b=2
              a=0
           endif   
        endif
 
     
  endif
endif
     
return

'**************ESKİ ŞİFRE GİRİŞİ*******************************
eski_şifre:
   porta.2=0 'Sarı led sön
     pause 250
     porta.2=1 'Sarı led yan
  if tus>=1 then 
   if tus<=12 then
     
     if a=1 then tus1=tus
     if a=2 then tus2=tus
     if a=3 then tus3=tus
     if a=4 then tus4=tus 
     
     if tus=12 then
       if a=5 then 
         if tus1=şifre1 then
            if tus2=şifre2 then
               if tus3=şifre3 then
                  if tus4=şifre4 then 
                      b=1
                      a=0
                      onay=1
                  
                  endif                   
               endif
            endif
        endif 
      endif        
     endif 
     
    if tus=12 then
       if b<>1 then
          gosub hata
              b=0
              a=0
              
        endif   
      '     if b<>1 then 
      '        gosub hata
      '        b=0
      '        a=0
    endif   
    '    endif
   endif
       
      
  endif 
return        
 
'*************** TUSLARIN DALLANACAĞI ALT  PROGRAMLAR***************
secim:
  a=a+1
  gosub ses
      if sif=4 then 
        gosub şifre
      else 
        gosub atama
      endif
return
'************ ŞİFRE DOĞRU GİRİLİR VE # BASILIRSA ********************
aktif:
     porta.1=1 'röle aktif
      gosub ses
     'porta.0=1 'buzzer aktif
     pause 500
     porta.1=0  'röle pasif
     'porta.0=0  'buzzer pasif
     a=0
return
'*********** ŞİFRE HATALI GİRİLİRSE****************************
hata:
    porta.0=1 'kırmızı led yak
    pause 500
    porta.0=0  'söndür
return

ses:
Sound portb.0,[50,10]
return

puzzle74

Hadi arkadaşlar uygulayın ve cevap yazın

tmr01

tebrik ederim
tamda bu günlerde düşünüyordum buna benzer bişey yapmayı.
ama lcd li yapacağım için 16f84 yetmez diyordum kendi kendime.
gördüm ki lcd olmadan da gayet güzel yazılıyormuş

Class

Ben proteusda calıstıramadım calıstırabilen varmı??

+isisdeki simulasyon dosyalarını buraya koyarmısınız?

tmr01

ben devreyi proteusta kurdum
röle çekmedi ama
röle yerine led koyduğumda yakıyor.
sanırım röleyi yanlış seçtim.

puzzle74

similasyonda tabiki tam sonuç alamayabilirsiniz. mesela şifre değiştirme işlemi bittikten sonra yeşil led yanık kalıyo similasyonda ama uygulamada böyle bişey söz konusu değil.Ayrıca röle eğer çekmemişse gerilimini 5V'a coil resistans değerinide 500'e ayarla çekecektir. ayrıca kristal 4Mhz ayarlanmalı. Kolay gelsin

puzzle74

isis similasyon dosyasını buradan alabilirsiniz. buzzer yerine mavi led koydum, ama uygulamada siz buzzer koyun.
http://rapidshare.de/files/10001974/şifreson.zip.html

Class

genede calısmadı dediklerinizi de denedim ama olmadı

puzzle74

Arkadaşlar bu devre çalışıyor. hem similasyonunu hemde devresini defalarca yaptım hiç bir sorun yok. Lütfen biraz uğraşsanız olur.

puzzle74

Arkadaşlar halen üzerinde çalıştığım Grafik LCD'li şifreli kilit yakında bitiyor. Sıcaklık bilgisini gösterebiliyor ve Bmp formatındaki 3-4 resminizide yükleyebileceğiniz bir çalışma olacak bir kaç rütuş kaldı onlarda bitince burda herşeyiyle yayınlayacağım bekleyin.