pbp derleme hatası

TB5MAA

Üye
Katılım
29 Tem 2011
Mesajlar
15
Puanları
1
Yaş
44
Kod:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [A.T.A]                                           *
'*  Notice  : Copyright (c) 2011 ata]                           *
'*          : All Rights Reserved                               *
'*  Date    : 02.06.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
PORTA=0:PORTB=0
TRISB=%11111111   'PortB.0 giriş diğerleri çıkış yapıldı.
TRISA=%00000000   'A portu tamamı çıkış yapıldı.
'-----------------------------------------------------------------
@ DEVICE pic16F628A                      'işlemci 16F628                                
@ DEVICE pic16F628A, WDT_OFF              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'-----------------------------------------------------------------
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'-----------------------------------------------------------------
SIFRE  VAR WORD
RAKAM  var WORD
TEMP   VAR WORD
BASKA  VAR WORD
ZAMAN  VAR WORD
SURE   VAR word
SAYI   VAR BYTE
DURUM  VAR BYTE
BIRLER VAR BYTE
ONLAR  VAR BYTE
YUZLER VAR BYTE
BINLER VAR BYTE  
CIK    VAR BIT
SYMBOL CIKIS1=PORTA.1
SYMBOL CIKIS2=PORTA.2
SYMBOL CIKIS3=PORTA.3
symbol CIKIS4=PORTA.4
SYMBOL CIKIS5=PORTA.5
SYMBOL ISD =PORTA.6
SYMBOL ROLE=PORTB.7
SYMBOL VALDAT=PORTB.0
SYMBOL BUZZER=PORTA.7
'--------------------------------------------------------------------------
DATA @ 0,1,4,5,3
PAUSE 200
CLEAR
read 0,SAYI:PAUSE 10
IF SAYI=$FF THEN
   SIFRE=1453
   GOSUB SIFREYAZ
endIF 
READ 0,BINLER
READ 1,YUZLER
READ 2,ONLAR
READ 3,BIRLER
SIFRE=BINLER*1000+YUZLER*100+ONLAR*10+BIRLER
'--------------------------------------ANA--------------------------------------
BASLA:                                                                   
PASWORD:   RAKAM=0:GOSUB SIFREAL
           IF CIK=1 THEN BITIR
           IF RAKAM=7676 THEN
              SIFRE=1453
              GOSUB SES2
              GOSUB SES1
              GOSUB SES2:gosub ses1
              GOSUB SIFREYAZ
              GOTO  ROLEKONTROL
            ENDIF   
            IF RAKAM=SIFRE THEN
            GOSUB SES2:pause 50
            GOSUB SES1:pause 50
            GOSUB SES1:gosub ses1
            GOTO ROLEKONTROL
            ENDIF 
ROLEKONTROL:    GOSUB ALBILGI
                IF CIK=1 THEN BITIR
                IF SAYI=12 THEN ACMA  '#
                IF SAYI=11 THEN KAPAT '*
                gosub ses2
                GOTO BASLA
ACMA:     
          GOSUB ALBILGI
          IF CIk=1 THEN BITIR
          IF SAYI=0 THEN
          gosub ses3
          GOSUB EXIT
          GOTO BASLA
          ENDIF 
   
           DURUM=PORTA  
           
           IF SAYI=1 THEN
           IF durum.1=0 THEN 
           GOSUB SES1 
           PORTA=DURUM | %00000001
           goto ROLEKONTROL
           ENDIF
           ENDIF
           
           IF SAYI=2 THEN
           IF durum.2=0 THEN
           GOSUB SES1:GOSUB SES1
           PORTA=DURUM | %00000010
           goto ROLEKONTROL
           ENDIF  
           ENDIF      
                 
           IF SAYI=9 THEN        '#9
           GOSUB SIFREAL
           GOSUB SES1:gosub ses2
           IF CIK=1 THEN BITIR
           IF RAKAM=SIFRE THEN 
           GOSUB SES1:GOSUB SES1:GOSUB SES2
           GOSUB SIFREAL
           IF CIK=1 THEN BITIR
           SIFRE=RAKAM
           GOSUB SES1:gosub ses2
           gosub SIFREYAZ
           ENDIF
           ENDIF
           GOTO ROLEKONTROL    
        
                  
KAPAT:     GOSUB ALBILGI
           IF CIK=1 THEN BITIR
           durum=PORTA
           
           IF SAYI=0 THEN
           GOSUB SES3
           PORTA=DURUM & %11000000  '*0
           ENDIF   
 
           IF SAYI=1 THEN
           IF durum.1=1 THEN
           GOSUB SES2
           PORTA=DURUM & %11111110
           goto ROLEKONTROL
           ENDIF
           ENDIF   
              
           IF SAYI=2 THEN
           IF durum.2=1 THEN
           GOSUB SES2:GOSUB SES2
           PORTA=DURUM & %11111101
           goto ROLEKONTROL
           ENDIF
           ENDIF  
 
SIFREAL:  GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=SAYI*1000
          GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=RAKAM+SAYI*100
          GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=RAKAM+SAYI*10
          GOSUB ALBILGI
          IF CIK=1 THEN RETURN
          RAKAM=RAKAM+SAYI
          RETURN      
ALBILGI: 
         SURE=0:ZAMAN=0
         WHILE VALDAT=0
         SURE=SURE+1
         PAUSEus 270
         IF SURE=65500 THEN
         CIK=1:RETURN
         ENDIF
         WEND       
               
SAYIAL: SAYI=0
        WHILE VALDAT=1
        SAYI.0=PORTA.4
        SAYI.1=PORTA.3
        SAYI.2=PORTA.2
        SAYI.3=PORTA.1
        WEND
        IF SAYI=10 THEN SAYI=0
        RETURN

SIFREYAZ:TEMP=SIFRE          
         BINLER=TEMP DIG 3
         YUZLER=TEMP DIG 2
         ONLAR =TEMP DIG 1
         BIRLER=TEMP DIG 0
         WRITE 0,BINLER:PAUSE 10 
         WRITE 1,YUZLER:PAUSE 10
         WRITE 2,ONLAR :PAUSE 10
         WRITE 3,BIRLER:PAUSE 10
         RETURN
          
SES1: SOUND BUZZER,[110,12]:pause 30:RETURN
SES2: SOUND BUZZER,[95,12] :pause 30:RETURN
SES3: SOUND BUZZER,[85,25] :Pause 30:RETURN         
BITIR:  GOSUB EXIT:GOTO BASLA:RETURN          
EXIT :  SURE=0        
        CIK=0        
        RAKAM=0
        LOW ROLE
        LOW ISD
        gosub ses2
        gosub ses2
        GOSUB SES3
        GOSUB SES3
        RETURN      
End

Bu yazılıma son halini verdiğimde algoritmanın şu şekilde
1453 ilk açma şifresi 1numaralı röle için
1071 ilk kapama şifresi 1numaralı röle için
1453#yeni şifre 1numaralı röle için açma şifresi değişti
1071#yeni şifre 1numaralı röle için kapama şifresi değişti
aynı işlemi 2numaralı röle içinde farklı şifrelerle yapmak istiyorum.
Yardımcı olacak arkadaşlara teşekkürler.

sistemin çalışma algoritması
bir numaralı röleyi açmak için 1453 şifresi tuşlanır.
bir numaralı röleyi kapatmak için 1076 şifresi tuşlanır.
iki numaralı röleyi açmak için 1571 şifresi tuşlanır.
iki numaralı röleyi kapatmak için 1929 şifresi tuşlanır.
sistem ilk programlandığında yukarıdaki şifre değerleriyle çalışmaktadır. Siz bu şifreleri aşağıdaki şekilde değiştirebilirsiniz.
bir numaralı rölenin açma şifresini 1453#yeni bir şifre
bir numaralı rölenin kapama şifresini 1071#
yeni bir şifrer=#000000
iki numaralı rölenin açma şifresini 1571#yeni bir şifre
iki numaralı röleninb kapama şifresini 1929#yeni bir şifre
yani kısaca eski şifreyi girip kare tuşuna bastığımızda sistem bizden yeni şifreyi bekler yeni şifrenin geçerli süre zarfında girilmesiyle sistemin şifresi değişir. Birdahaki şifre değiştirme işlemi enson sizin belirlemiş olduğunuz şifrenin sonuna # simgesi eklenerek yapılır. örneğin 1453#6666 girdiniz ve 1453 olan şifreyi 6666 olarak değiştirdiniz. Bir daha şifre değiştirmek isterseniz 6666#yeni bir şifre şeklinde değiştirirsiniz.
sistemin şifreleriyle ilgili bir unutma problemi yaşadığınızda 7676* olarak belirlenmiş olan bir master şifre vardır. Bu şifreyi girmenizle sistem de yaptığınız tüm değişiklikler sıfırlanarak bizden almış olduğunuz ilk değerlere döner. Buradan hareketle tekrar istediğiniz değişiklikleri yapabilirsiniz.
sistemde yapılan tüm işlemler size bir sesli uyarı ile bildirilir.
örneğin 1 numaralı rölenin şifresini tuşladık şifre doğru ise röle çeker ve beep sesi çıkar eğer şifre yanlış ise kalın bir beep sesiyle sizi uyarır. şifre değiştirme menüsüne gelindiğinde bir meleodi üretir ve yeni şifrenin girilmesine mütakiben şifre değişme işleminin başarılı olması durumunda onay sesi üretir. Başarısız olması durumunda kalın bir sesle uyarı verir.

Bu kodları yazdım çalıştıramadım hata verdi microcodestdio....bu yazılımda hata var ama bulamadım ....
 
Moderatör tarafında düzenlendi:
628a yerıne 628 kullan. ben derledım kod hatasız.yapmanız gereken ;

'----------------------------------------------------------------- @ DEVICE pic16F628A 'işlemci 16F628 @ DEVICE pic16F628A, WDT_OFF 'Watch Dog timer açık @ DEVICE pic16F628A, PWRT_ON 'Power on timer açık @ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapalı @ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullanılıyor. @ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak '-----------------------------------------------------------------
satırını ıptal etmek.
yada,
view menüsünden-->options--->mpasm ıkonunu ıptal etmek.
ıptal ettıgınız zaman yukarıda ıptal edılen satırları kullanabılırsınız.kolay gelsın
 

Yeni mesajlar

Forum istatistikleri

Konular
127,965
Mesajlar
913,961
Kullanıcılar
449,611
Son üye
ramazansanli@

Yeni konular

Geri
Üst