Basic zamanlama sorunu

Başlatan yerkirazi, 12 Ocak 2016, 13:17:57

ete

Burada yer alan son program ile istediğin röleyi açıp kapatamazsın. Mutlaka başka bir program kullanıyorsun burası kesin.
O programıda nasıl düzenlediğini ancak sen biliyorsun. Bu durumda kusur sende. Arayıp bulacaksın. Zira yazdığım kodlar çalışır.

Ete

yerkirazi

#16
Sayın ete hocam sitede fazla yer kaplamaması için tüm kodları yazmamıştım.
Özür dilerim,kusurabakmayın.
Kullandığım tüm kodlar aşağıdadır.
Defalarca denedim zamanlama olmuyor.
Saygılarımla.


PORTA=0:PORTB=0
TRISB=%00000000   'B portu tamamı çıkış yapıldı.
TRISA=%00111111   '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_ON         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, XT_OSC   'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
CMCON=7    '16F628A de komparatör pinleri iptal hepsi giriş çıkış
ON INTERRUPT GoTo KESME 'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10000101   'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000      'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0                                 
'-----------------------------------------------------------------
DEFINE OSC 4 'for 4 Mhz
SAYAC VAR BYTE
SURE   VAR word 'İŞLEM SÜRESİ BU SÜREDE HİÇ İŞLEM YAPILMAMIŞ İSE SİSTEM KAPANACAK
ZAMAN  VAR WORD
SURE1  VAR BYTE
SURE2  VAR BYTE
SAYI   VAR BYTE
DURUM  VAR BYTE
BIRLER VAR BYTE
ONLAR  VAR BYTE
YUZLER VAR BYTE
BINLER VAR BYTE
SN     VAR BYTE
DAK    VAR BYTE
SAAT   VAR BYTE
SAAT1  VAR BYTE
SAAT2  VAR BYTE
YAZ    VAR BIT
SYMBOL VALDAT=PORTA.0
SYMBOL CIKIS1=PORTB.1
SYMBOL CIKIS2=PORTB.2
SYMBOL BUZZER=PORTB.4
'-------------------------------------------------------------
PAUSE 200
CLEAR
read 0,SAYI:PAUSE 10

READ 0,BINLER
READ 1,YUZLER
READ 2,ONLAR
READ 3,BIRLER

READ 10,DURUM
IF DURUM=255 THEN
   DURUM=0
   GOSUB ROLEYAZ
ENDIF

PORTB=DURUM
'--------------------------------------ANA----------------------
BASLA: 
        SN=0
        DAK=0
        SAAT=0
        SAAT1=0
        SAAT2=0 
'--------------------------ROLEKONTROL-------------------
ROLEKONTROL: 
            IF YAZ=1 THEN GOSUB ROLEYAZ
            GOSUB ALBILGI
             IF CIK=1 THEN BITIR
            IF SAYI=12 THEN ACMA   '# tuşuna basılınca acma etiketine git
            IF SAYI=11 THEN KAPAT  '* tuşuna basılınca kapat etiketine git
            gosub SES1:GOSUB SES1

            IF SAAT1=SURE1 THEN
              PORTB=PORTB & %11111101
              SAAT1=0:SURE1=0
            ENDIF 

            IF SAAT2=SURE2 THEN
               PORTB=PORTB & %11111011
               SAAT2=0:SURE2=0
            ENDIF
               
            GOTO ROLEKONTROL
               
ACMA:
          GOSUB BILGI
          IF CIK=1 THEN BITIR             
           DURUM=PORTB
             
           IF SAYI=1 THEN
             IF durum.1=0 THEN
               GOSUB SES1
               PORTB=DURUM | %00000010 '#1 ,1 saat zamanlı 1 nolu röle açma
               YAZ=1 'elektrik kesildiğinde röle konumu eeprom'a yazılır             
               SURE1=1:SAAT1=0
               PAUSE 100
               GOTO ROLEKONTROL
             ENDIF
           ENDIF
                       
           IF SAYI=2 THEN
              IF durum.2=0 THEN
                GOSUB SES1
                PORTB=DURUM | %00000010 '#2  ,2 saat zamanlı 1 nolu röle açma
                YAZ=1
                SURE1=2:SAAT1=0               
                PAUSE 100
                GOTO ROLEKONTROL
                ENDIF
           ENDIF       
                 
           IF SAYI=3 THEN
             IF durum.3=0 THEN
                GOSUB SES1:GOSUB SES1
                PORTB=DURUM | %00000100 '#3 ,1 saat zamanlı 2 nolu röle açma
                YAZ=1 'elektrik kesildiğinde röle konumu eeproma yazılır               
                SURE2=1:SAAT2=0
                PAUSE 100
                GOTO ROLEKONTROL
              ENDIF   
           ENDIF

           IF SAYI=4 THEN
              IF durum.4=0 THEN
                 GOSUB SES1:GOSUB SES1
                 PORTB=DURUM | %00000100 '#3 ,2 saat zamanlı 2 nolu röle açma
                 YAZ=1
                 SURE2=2:SAAT2=0             
                 PAUSE 100
                 GOTO ROLEKONTROL
              ENDIF   
           ENDIF
               
           IF SAYI=8 THEN
            IF durum.1=0 THEN
             GOSUB SES1
            PORTB=DURUM | %00000010 '#8 zamansız 1 nolu röle açma
              YAZ=1
             goto ROLEKONTROL
              ENDIF   
           ENDIF

            IF SAYI=9 THEN
              IF durum.2=0 THEN
              GOSUB SES1:GOSUB SES1
               PORTB=DURUM | %00000100 '#9 zamansız 2 nolu röle açma
               YAZ=1
               goto ROLEKONTROL
             ENDIF   
           ENDIF
           
        GOTO ROLEKONTROL

KAPAT:
           GOSUB BILGI
           IF CIK=1 THEN BITIR             
           durum=PORTB
           
           IF SAYI=0 THEN
              GOSUB SES3
              PORTB=DURUM & %10000001  '*0 tüm röleler kapanır
              YAZ=1:SAAT1=0:SAAT2=0:SURE1=0:SURE2=0
              GOTO ROLEKONTROL
           ENDIF   

           IF SAYI=8 THEN
            IF durum.1=1 THEN
             GOSUB SES1
             PORTB=DURUM & %11111101'*8 bir nolu röle kapanır
             YAZ=1:SAAT1=0:SURE1=0
             goto ROLEKONTROL
              ENDIF
           ENDIF   
             
           IF SAYI=9 THEN
             IF durum.2=1 THEN
             GOSUB SES1:GOSUB SES1
             PORTB=DURUM & %11111011'*9 iki nolu röle kapanır
             YAZ=1:SAAT2=0:SURE2=0
             goto ROLEKONTROL
             ENDIF
           ENDIF

             GOTO ROLEKONTROL

ROLEKAPAT:
   
                PAUSE 200
                PORTB=DURUM & %11111101
                YAZ=1

                GOTO ROLEKONTROL
                 
ROLEKAPAT1:
   
                PAUSE 200
                PORTB=DURUM & %11111011
                YAZ=1

                GOTO ROLEKONTROL

BILGI:                                          'bu bölümde cep telefonundan sayı alınıyor
         SURE=0:ZAMAN=0                   'sayı henüz gelmemiş ise bekle
         WHILE VALDAT=0                   'Ancak zaman aşımı sayacını çalıştır
          SURE=SURE+1
          PAUSEus 270
            IF SURE=65500 THEN            'zaman aşımı oldu ise
              CIK=1:RETURN                'zaman aşımı işareti=1 yap
            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   

ROLEYAZ:
        DURUM=PORTB & %11111111
        WRITE 10,DURUM
        YAZ=0
        RETURN       
               
SES1: SOUND BUZZER,[83,15,30]:pause 80:RETURN

BITIR:  GOSUB CIKIS:GOTO BASLA:RETURN
CIKIS :       
        SAYAC=0
        SN=0
        SAAT=0
        DAK=0     
        GOSUB SES1
        RETURN     

DISABLE
KESME:
  SAYAC=SAYAC+1'kesme sayacı 1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
   IF SAYAC=61 then'61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
     SAYAC=0  'sayaç sıfırlanıyor
     SN=SN+1  'saniye değeri bir artırılıyor
     IF SN=60 THEN 'saniye 60 olmuş ise 1 dakika süre geçti o halde
       SN=0    ' saniye sıfırlanıyor
       DAK=DAK+1  ' dakika değeri bir artırılıyor
       IF DAK=60 THEN 'dakika 60 olmuş ise 1 saat süre geçti
         DAK=0      ' dakika sıfırlanıyor
         SAAT=SAAT+1' saat değeri bir artırılıyor
         IF SAAT=24 THEN SAAT=0'saat 24 olmuş ise 1 gün geçti
         IF PORTB.1=1 THEN SAAT1=SAAT1+1 '1 NOLU RÖLE AKTİF İSE SAAT DEĞERİNİ ARTIR   
         IF PORTB.2=1 THEN SAAT2=SAAT2+1 '2 NOLU RÖLE AKTİF İSE SAAT DEĞERİNİ ARTIR         
       ENDIF
     ENDIF
   ENDIF
   INTCON.2=0 'TMR0 Kesme bayrağı sıfırlanıyor
   RESUME
   ENABLE
     
End

ete

Yer kaplama ile alakası yok bu işin.
Hala tam kodları vermedin.Önce derleme yap bakalım derliyormu. Sonra ver kodları
Ete

İlyas KAYA

#18
Alıntı yapılan: ete - 19 Şubat 2016, 15:40:18
Yer kaplama ile alakası yok bu işin.
Hala tam kodları vermedin.Önce derleme yap bakalım derliyormu. Sonra ver kodları
Ete

Birebir aynı şeyi ben söyleyecektim.

Eğer bu kodların tamamı ise ve derleme yapabiliyorsan ben bu işi bırakıyorum diyecektim...

Tam kodları kontrol edeyim derken bakıyorum gosub bilmem nere denmiş. Telefondan bide zor bela bakarken öyle bir etiket yok. baştan aşağı tüm kodları kontrol ettim gene yok.

Bir de pc de bakayım dedim ve işte manzara...
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

ete

Bu program tehlikeli bir program. Kötü amaçlar için kullanılabilir. Bu nedenle bu konuyu kilitliyorum.
RF konularında ve DTMF konularında daha dikkatli olacağız bundan sonra.

Ete

Powered by EzPortal