Programın Adı : 3x4 Taramalı Keypad ile sabit şifreli, şifreli kilit programı ve LCD'den takip
Not : Şifre=3546 (Aynı rakamları peş peşe kullanma)
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
SAYI VAR BYTE
SAYIAL VAR BYTE
SAYISAY VAR BYTE
TRISB = $F0 : TRISC=$00
PORTB = $00
SIFRE1 CON 3 :SIFRE2 CON 5
SIFRE3 CON 4 :SIFRE4 CON 6
ANA_PROGRAM:
SAYISAY=0
TEKRAR:
SAYI = 0 : PORTC=$00
LCDOUT $FE,1," SIFREYI GIRIN"
GOSUB GECIKME :GOSUB BUTONTARA
IF SAYI=0 THEN GOTO TEKRAR
SAYIAL=SAYI
IF SIFRE1=SAYIAL THEN
LCDOUT $FE,$C0, DEC SAYIAL
GOSUB GECIKME:PORTC=$01
ELSE
GOTO HATA
ENDIF
TEKRAR1:
GOSUB BUTONTARA
IF SAYIAL=SAYI THEN GOTO TEKRAR1
SAYIAL=SAYI
IF SIFRE2=SAYIAL THEN
LCDOUT DEC SAYIAL
GOSUB GECIKME:PORTC=$03
ELSE
GOTO HATA
ENDIF
TEKRAR2:
GOSUB BUTONTARA
IF SAYIAL=SAYI THEN GOTO TEKRAR2
SAYIAL=SAYI
IF SIFRE3=SAYIAL THEN
LCDOUT DEC SAYIAL
GOSUB GECIKME:PORTC=$07
ELSE
GOTO HATA
ENDIF
TEKRAR3:
GOSUB BUTONTARA
IF SAYIAL=SAYI THEN GOTO TEKRAR3
SAYIAL=SAYI
IF SIFRE4=SAYIAL THEN
LCDOUT DEC SAYIAL," KAPI ACILDI" : GOSUB GECIKME
PORTC=$0F : GOSUB GECIKME
PORTC=$00 : GOSUB GECIKME
PORTC=$1F : PAUSE 3000
GOTO ANA_PROGRAM
ELSE
GOTO HATA
ENDIF
GOTO ANA_PROGRAM
END
HATA :
SAYISAY=SAYISAY+1
LCDOUT $FE,1,"HATALI SIFRE",DEC SAYISAY
PORTC=$0F : GOSUB GECIKME
PORTC=$00 : GOSUB GECIKME
IF SAYISAY=3 THEN
HATA_ICI_DON:
LCDOUT $FE,1,"HATA KILIDI"
PORTC=$0F
AUSE 5000
GOSUB BUTONTARA
IF SAYI=12 THEN
GOTO TEKRAR
ELSE
GOTO HATA_ICI_DON
ENDIF
ENDIF
GOTO TEKRAR
BUTONTARA :
PORTB = $01
IF PORTB.4 = 1 THEN SAYI = 1
IF PORTB.5 = 1 THEN SAYI = 4
IF PORTB.6 = 1 THEN SAYI = 7
IF PORTB.7 = 1 THEN SAYI = 10
PORTB = $02
IF PORTB.4 = 1 THEN SAYI = 2
IF PORTB.5 = 1 THEN SAYI = 5
IF PORTB.6 = 1 THEN SAYI = 8
IF PORTB.7 = 1 THEN SAYI = 11
PORTB = $04
IF PORTB.4 = 1 THEN SAYI = 3
IF PORTB.5 = 1 THEN SAYI = 6
IF PORTB.6 = 1 THEN SAYI = 9
IF PORTB.7 = 1 THEN SAYI = 12
RETURN
GECIKME :
PAUSE 200
RETURN