Şifrem

Başlatan Şahin35, 19 Mart 2014, 17:19:56

Şahin35

TrisB=%00111001
SYMBOL BUTON =PORTB.5
tus takımının hemen altında yazdım hocam ..
goto basla dedıkten sonra  ıf lı komut dızısını yazdım..

Şahin35

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 20.03.2014                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
PortA=0
TrisA=%10000000
PortB=0
TrisB=%00111001
    CMCON=7
    OPTION_REG.7=0
SYMBOL BUZZER =PORTA.4
SYMBOL BUTON =PORTB.5
SYMBOL ROLE =PORTB.6
  SYMBOL YATAY_A =PORTA.0
  SYMBOL YATAY_B =PORTA.1
  SYMBOL YATAY_C =PORTA.2
  SYMBOL YATAY_D =PORTA.3
    SYMBOL DIKEY_1=PORTB.0
    SYMBOL DIKEY_2=PORTB.3
    SYMBOL DIKEY_3=PORTB.4
HANE VAR BYTE
TUS1 VAR BYTE
   
   SIFRE VAR WORD
   TUS VAR BYTE
     
       ANA_MENU:

SIFRE=0
TUS=0
   ROLE=0
   BUZZER=1
BUTON =0
         PAUSE 300
         LOW buzzer
         pause 2000
         HIGH buzzer
    BASLA:
      READ 02,SIFRE.BYTE0
      READ 03,SIFRE.BYTE1
  IF SIFRE=>65000 THEN
  SIFRE=12352
  DEG:
      WRITE 02,SIFRE.BYTE0
      WRITE 03,SIFRE.BYTE1
  GOTO DEG
              ENDIF
  BASLA1:
       tus=255
       YATAY_A=0
       IF DIKEY_1=0 THEN
         TUS=1
         LOW buzzer
         pause 750
         HIGH buzzer
         WHILE DIKEY_1=0:WEND
       ENDIF
       
         IF DIKEY_2=0 THEN
           TUS=2
           low buzzer
           pause 750
           high buzzer
           WHILE DIKEY_2=0:WEND
         ENDIF
         
       IF DIKEY_3=0 THEN
         TUS=3
         low buzzer
         pause 750
         high buzzer
         WHILE DIKEY_3=0:WEND
       ENDIF
       
            HIGH YATAY_A
       
              YATAY_B=0
       IF DIKEY_1=0 THEN
         TUS=4
         low buzzer
         pause 750
         high buzzer
         WHILE DIKEY_1=0:WEND
       ENDIF
       
       IF DIKEY_2=0 THEN
         TUS=5
         low buzzer
         pause 750
         high buzzer
         WHILE DIKEY_2=0:WEND
       ENDIF
       
       IF DIKEY_3=0 THEN
           TUS=6
           low buzzer
           pause 750
           high buzzer
           WHILE DIKEY_3=0:WEND
       ENDIF
       
             HIGH YATAY_B
       
             YATAY_C=0
        IF DIKEY_1=0 THEN
          low buzzer
          pause 750
          high buzzer
          TUS=7
          WHILE DIKEY_1=0:WEND
        ENDIF
       
          IF DIKEY_2=0 THEN
            TUS=8
            low buzzer
            pause 750
            high buzzer
            WHILE DIKEY_2=0:WEND
          ENDIF
           
            IF DIKEY_3=0 THEN
              TUS=9
              low buzzer
              pause 750
              high buzzer
              WHILE DIKEY_3=0:WEND
            ENDIF
           
                HIGH YATAY_C
       
               YATAY_D=0
         
         IF DIKEY_1=0 THEN
           TUS=11
           low buzzer
           pause 750
           high buzzer
           WHILE DIKEY_1=0:WEND
         ENDIF
         
           IF DIKEY_2=0 THEN
             TUS=0
             low buzzer
             pause 750
             high buzzer
             WHILE DIKEY_2=0:WEND
           ENDIF
           
           IF DIKEY_3=0 THEN
             TUS=12
             low buzzer
             pause 750
             high buzzer
             WHILE DIKEY_3=0:WEND
           ENDIF
           
            HIGH YATAY_D
            PAUSE 70
           
            IF TUS=10 THEN TUS=0
            IF TUS<13 THEN
           
               SIFRE=SIFRE*10+TUS
            ENDIF
             IF SIFRE=12352 THEN
              GOSUB ROLEAC
              SIFRE=0
            ENDIF
            IF SIFRE>10000 THEN SIFRE=0
                 GOTO BASLA1
                             
             IF BUTON=1 THEN
             LOW BUZZER
                  else
                  HIGH BUZZER
                  PAUSE 2000
                  ENDIF
         
           roleac:
         
        HIGH ROLE
        PAUSE 5000
      LOW ROLE
      PAUSE 5000
               GOTO ANA_MENU     
  bu sekıl yazdım. hocam. ??

ete

Uçağa bindin İzmire gidiyorsun.
Yolun ortasında seni aradım İstanbula git dedim Nasıl anında istanbula gidersin bir düşün bakalım.
Gidemezsin önce izmire gitmen gerekiyor öyle değilmi.
Orada Goto BASLA1 olduğu müddetçe program senin yazdığın satırlara ulaşabilirmi?
Program hep Goto Basla1 satırını görüp Basla1 satırına gidecek ve senin yazdıklarına asla gelmiyecektir.
Sebep ortada. Daha çok çalışman gerekiyor!!!!!!!!!

Ayrıca daha berbatı da şu;
DEG:
      WRITE 02,SIFRE.BYTE0
      WRITE 03,SIFRE.BYTE1
  GOTO DEG
              ENDIF
iki tane eproma yazma komutundan sonra  GOTO DEG  yazmışsın. Cinayet işte burada.
Program eprome değerleri yazacak sonra!!!! GOTO DEG komutunu görüp yeniden DEG isimli satıra gidecek. Yeniden yazacak ve sonsuza dek orada yazıp duracak hiç bir zaman aşağıdaki başla1 satırına bile gelemeyecek.
Bunları yazabildiğine göre henüz programcılığın P sini bile bilmiyorsun demektir. Rastgele kafadan atarak yazıyorsun.
Şunu anla artık yazdığın her bir komutun bir anlamı var ve bir iş yapıyor. Yanlış iş yaptırırsan sızlanıp durursun çalışmıyor diye.   Peki bu kadar kolay bir mantık değerlendirmesini yapamıyormusun ? nedne oraya GOTO DEG yazdın?

Bırak bu işi ve şimdiden otur çalış. Bu konuyu kitliyorum. Bu konuda başka bir mesaj atma lütfen. Atarsan ancak yazdırma için yardım iste aksi halde mesajları sileceğim.

Ete

Powered by EzPortal