Değişken tanımlama ve kullanmak

Başlatan . Kağan, 25 Haziran 2015, 01:42:40

. Kağan

Merhaba arkadaşlar,

Bir kodu incelerken tanımlanan bir değişkenin ardına .1 ve .2 ve .3 rakamları koyarak farklı yerlerde kullanıldığını gördüm. Anlam veremedim.

Örneğin;

DEB  VAR BYTE değişkeni tanımlanıp kodlar yazılırken DEB.1 =0    DEB.2=1 gibi kodlar yazılmış.

Kod örneğinin bir parçası aşağıda:

DEB VAR BYTE
FLAG VAR BYTE
DEB = 0
FLAG=0
FLAG.2=1
.
.
.
MAIN:
   
    IF BUT_UP = 0 AND BUT_OK = 0 AND BUT_DW = 0 THEN    ' HİÇBİR TUŞA BASILI DEĞİLSE                       
        DEB.0 = 0                                       ' DEB.0 'ı SIFIR YAP
            ENDIF
.
.
.
IF BUT_DW = 1 AND DEB.0 = 0 THEN            ' DOWN TUŞUNA BASILINCA
        EKRAN_SAY = EKRAN_SAY + 1               ' EKRANI SAY
        IF EKRAN_SAY = 4 THEN EKRAN_SAY = 0     ' EKRAN SAY 4 OLUNCA EKRAN_SAY'ı SIFIRLA
                DEB.0 = 1                       ' DEB.0 'ı BIR YAP
                GOSUB LCD_CLEAR                 ' EKRANI TEMİZLE
                    FLAG.0 = 0                  ' FLAG.0 'ı SIFIRLA
.
.
.
IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
         FLAG.1 = FLAG.1 XOR 1                  ' FLAG.1' değerini TERSİNE ÇEVİR
         
    IF FLAG.1 = 1 THEN FLAG.2 = 0               ' FLAG.1 (1)BİR İSE FLAG.2' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
    ENDIF
   
   
   
    IF EKRAN_SAY = 2 THEN                           ' EKRAN SAY (2)İKİ İSE
        GOSUB EKRAN_2                               ' EKRAN_2'ye GİT
       
    IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
        FLAG.2 = FLAG.2 XOR 1                   ' FLAG.2' değerini TERSİNE ÇEVİR
       
    IF FLAG.2 = 1 THEN FLAG.1 = 0               ' FLAG.2 (1)BİR İSE FLAG.1' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
       
    ENDIF   
.
.
.


Anladığım kadarıyla açıklamaları ben yazdım. Yanlış olanı varsa uyarırsanız sevinirim.

Not: FLAG VE DEB değişkeni tanımlanmış fakat kullanırken FLAG.0 ve FLAG.1 ve FLAG.2 ve DEB.0 ve DEB.1 yazılmış. Sormak istediğim bu konu nedir? :o

İlyas KAYA

Noktadan sonraki rakam bit'i ifade ediyor. Yani flag.0 =flag byteının 0 ncı biti.
1 byte 8 bit ettiğine göre en fazla .7 olarak işlem yapabilirsiniz.

Flag=%11110010
ise

flag.0=0
flag.1=1
..
dır.

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Burak

Alıntı yapılan: kaganayanoglu - 25 Haziran 2015, 01:42:40
Merhaba arkadaşlar,

Bir kodu incelerken tanımlanan bir değişkenin ardına .1 ve .2 ve .3 rakamları koyarak farklı yerlerde kullanıldığını gördüm. Anlam veremedim.

Örneğin;

DEB  VAR BYTE değişkeni tanımlanıp kodlar yazılırken DEB.1 =0    DEB.2=1 gibi kodlar yazılmış.

Kod örneğinin bir parçası aşağıda:

DEB VAR BYTE
FLAG VAR BYTE
DEB = 0
FLAG.2=0
.
.
.
MAIN:
   
    IF BUT_UP = 0 AND BUT_OK = 0 AND BUT_DW = 0 THEN    ' HİÇBİR TUŞA BASILI DEĞİLSE                       
        DEB.0 = 0                                       ' DEB.0 'ı SIFIR YAP
            ENDIF
.
.
.
IF BUT_DW = 1 AND DEB.0 = 0 THEN            ' DOWN TUŞUNA BASILINCA
        EKRAN_SAY = EKRAN_SAY + 1               ' EKRANI SAY
        IF EKRAN_SAY = 4 THEN EKRAN_SAY = 0     ' EKRAN SAY 4 OLUNCA EKRAN_SAY'ı SIFIRLA
                DEB.0 = 1                       ' DEB.0 'ı BIR YAP
                GOSUB LCD_CLEAR                 ' EKRANI TEMİZLE
                    FLAG.0 = 0                  ' FLAG.0 'ı SIFIRLA
.
.
.
IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
         FLAG.1 = FLAG.1 XOR 1                  ' FLAG.1' değerini TERSİNE ÇEVİR
         
    IF FLAG.1 = 1 THEN FLAG.2 = 0               ' FLAG.1 (1)BİR İSE FLAG.2' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
    ENDIF
   
   
   
    IF EKRAN_SAY = 2 THEN                           ' EKRAN SAY (2)İKİ İSE
        GOSUB EKRAN_2                               ' EKRAN_2'ye GİT
       
    IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
        FLAG.2 = FLAG.2 XOR 1                   ' FLAG.2' değerini TERSİNE ÇEVİR
       
    IF FLAG.2 = 1 THEN FLAG.1 = 0               ' FLAG.2 (1)BİR İSE FLAG.1' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
       
    ENDIF   
.
.
.


Anladığım kadarıyla açıklamaları ben yazdım. Yanlış olanı varsa uyarırsanız sevinirim.

Not: FLAG VE DEB değişkeni tanımlanmış fakat kullanırken FLAG.0 ve FLAG.1 ve FLAG.2 ve DEB.0 ve DEB.1 yazılmış. Sormak istediğim bu konu nedir? :o

Deb degiskeninin bir byte degiskeni oldugunu biliyoruz . Bu durumda deb.0 dersem deb degiskeninin en az anlamli bitini yani sifirinci bitini isaret etmis oluruz .. Bu durumda deb degiskeni icin en cok deb.7 ifadesini kullanabiliriz cunku deb degiskeni 8 bitlik yani 1 bytelik bir degiskendir. Umarim anlasilmistir .

Burak

Ω Gens Una Sumus Ω

. Kağan

#3
Ne anladım?
Başlangıçta FLAG=0 ve FLAG.2=1 ve DEB=0 yapılmış. Bu durumda FLAG.0-1-2-3-4-5-6-7 ve DEB.0-1-2-3-4-5-6-7 değerlerinın hepsi (0) sıfır oluyor. Yani FLAG=00000000 ve DEB=00000000 olmuş. Daha sonra FLAG.2=1 olsun deyince FLAG=00000100 olmuş.
Sonrada,
IF EKRAN_SAY = 1 THEN
        GOSUB EKRAN_1
       
    IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
         FLAG.1 = FLAG.1 XOR 1                  ' FLAG.1' i TERSİNE ÇEVİR
         
    IF FLAG.1 = 1 THEN FLAG.2 = 0               ' FLAG.1 (1)BİR İSE FLAG.2' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
    ENDIF
   
   
   
    IF EKRAN_SAY = 2 THEN                           ' EKRAN SAY (2)İKİ İSE
        GOSUB EKRAN_2                               ' EKRAN_2'ye GİT
       
    IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
        FLAG.2 = FLAG.2 XOR 1                   ' FLAG.2' i TERSİNE ÇEVİR
       
    IF FLAG.2 = 1 THEN FLAG.1 = 0               ' FLAG.2 (1)BİR İSE FLAG.1' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
       
    ENDIF
   


Bazı bitler ters çevrilmiş.

Tüm bunların amacı tek değişkeni (FLAG yada DEB)farklı yerlerde simetrik olarak kullanmak mı?

Burak

Alıntı yapılan: kaganayanoglu - 25 Haziran 2015, 10:43:05
Ne anladım?
Başlangıçta FLAG=0 ve FLAG.2=1 ve DEB=0 yapılmış. Bu durumda FLAG.0-1-2-3-4-5-6-7 ve DEB.0-1-2-3-4-5-6-7 değerlerinın hepsi (0) sıfır oluyor. Yani FLAG=00000000 ve DEB=00000000 olmuş. Daha sonra FLAG.2=1 olsun deyince FLAG=00000100 olmuş.
Sonrada,
IF EKRAN_SAY = 1 THEN
        GOSUB EKRAN_1
       
    IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
         FLAG.1 = FLAG.1 XOR 1                  ' FLAG.1' i TERSİNE ÇEVİR
         
    IF FLAG.1 = 1 THEN FLAG.2 = 0               ' FLAG.1 (1)BİR İSE FLAG.2' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
    ENDIF
   
   
   
    IF EKRAN_SAY = 2 THEN                           ' EKRAN SAY (2)İKİ İSE
        GOSUB EKRAN_2                               ' EKRAN_2'ye GİT
       
    IF BUT_UP = 1 AND DEB.0 = 0 THEN            ' UP TUŞUNA BASILINCA
        FLAG.2 = FLAG.2 XOR 1                   ' FLAG.2' i TERSİNE ÇEVİR
       
    IF FLAG.2 = 1 THEN FLAG.1 = 0               ' FLAG.2 (1)BİR İSE FLAG.1' Yİ (0)SIFIR YAP
        DEB.0 = 1                               ' DEB.0' ı (1)BIR YAP
        ENDIF
       
    ENDIF
   


Bazı bitler ters çevrilmiş.

Tüm bunların amacı tek değişkeni (FLAG yada DEB)farklı yerlerde simetrik olarak kullanmak mı?

Simetrikten kastin nedir ?
Tıpkı 8 bitlik bir islemcinin dahili kaytcilari gibi kodu yazan kisi kendi kayitcisini olusturmus .. ayri ayri bit tanimlamasi yapmak istememis ve koddan goruldugu kadariyla durum degiskenlerini kontrol altina almak icin set - reset algoritmasi kullanmis bu sekilde neyin meydana gelmesi halinde ne olmasi gerektigini kontrol etmis .. Sanki bir flip flop edasiyla calisan bir kod olmus .. tabii asil hangi amaca hizmet ettigini bilemeyiz ..

Burak
Ω Gens Una Sumus Ω

ete

Flag=0 demekle flag değişkeninin bütün bitlerini sıfırlarsın. Sonra Flag.2=1 demekle onun 2.. bitini 1 yaparsın. Bu Flag=4 demekle aynı şeydir. Dolayısıyla iki komutla yapılan Flag=0:Flag.2=1 yazmak yerine tek komut Flag=4 yazılsa idi aynı işi yapacak idi.
Diğer konuya gelince, bir bitin değerini ters çeviriyor ve ters çevirmeden sonra bit değeri 1 ise bir sonraki biti sıfır yapıyor.
Bir sonraki işlemde de bunun tersi yapılıyor. Bu bana manchester kodunu hatırlatıyor. Sanki ona benzer bir iş yapılıyor burada.
Kısaca Flag.1=Flag.1 xor 1 ile 1 nolu bit ters çevriliyor
Flag.1=1 olmuş ise Flag.2=0 yapılıyor  %01 oldu

Bir sonraki aşamda ise Flag.2=Flag.2 xor 1 ile 2 nolu bit ters çevriliyor
Flag.2=1 ise Flag.1=0 yapılıyor.   %10 yapıldı.

Manchester kodlamada HIGH (1) biti %01 ile ifade edilir.
Manchester kodlamada LOW (0) biti  %10 ile ifade edilir.
Bu nedenle ona benzer bir işlem yapılıyor dedim. Simetriklikle alakası yok bu işin. Program hakkında bilgi sahibi olmadan neden bunlar yapılıyor konusunda hüküm yürütmek mümkün değil maalesef.

Ete


Powered by EzPortal