Temel Jalv2 Kavramları Rev1

Başlatan ByTEK, 20 Temmuz 2011, 23:29:26

ByTEK





Sercan TEK tarafından Jalv2 PIC programlama dilinin Temel Kavramlarına yer verilerek Hazırlanmış, Tamamen Türkçe ve Örneklerle desteklenmiş olan ve ücretsiz dağıtılan bu e-book Eğitime Katkı amacı ile Hazırlanmıştır..

Yazarın Açıklaması:

Yayımlayacağım "Jalv2 ile PIC Programlama dökümanları" serisinin İlk Bölümü olan bu dökümanı Jalv2 öğrenmek ya da bildiklerini Pekiştirmek isteyen arkadaşlara armağan ediyorum. İlerleyen zamanlarda tekrar yayımlayacağım bölümlerde genellikle jalv2 ile kod geliştirme ve çevresel aygıtları kullanmaya ağırlık vereceğim. 1.Bölümde Jalv2 komutlarını ve kavramlarını öğrenmek adına açıklamalara ve örneklere yer verdim. Olabildiğince sade ve anlaşılır dil kullanmaya çalıştım. Daha sonra yayımlayacağım dökümanlarda yer vermemi istediğiniz konular varsa mail atabilirsiniz.

Saygılarımla,
Sercan TEK


İÇİNDEKİLER

1.1   JAL Dili ve Syntax Düzeni   
1.1.1   Jalv2 derleyicisindeki yenilikler   
1.1.2   Jalv2'in Desteklediği PIC'ler   
1.1.3   Jalv2 Dilindeki Syntax   
1.2   Jaledit uygulama Geliştirme Ortamı   
1.2.1   Jaledit Programının üstünlükleri   
1.3   Jalv2 Kavramları ve Temel Komutları   
1.4   Değişkenler   
1.4.1   Jalv2' de Değişken Tanımlama Biçimleri   
1.4.1.1   İstenilen Uzunlukta Değişken Tanımlama   
1.5   Jalv2 Gösterim Şekilleri   
1.5.1   Desimal Sayı Gösterimi   
1.5.2   Heksadesimal Sayı Gösterimi   
1.5.3   Octal Sayı Gösterimi   
1.5.4   Binary Sayı Gösterimi   
1.5.5   ASCI Gösterim   
1.6   Sabitler
1.7   Dizi Tanımlamaları   
1.7.1   Değişken Diziler   
1.7.2   Sabit Diziler   
1.7.3   Count( ) Fonksiyonu   
1.8   Include Komutu   
1.9   Açıklama Satırları   
1.10   Takma İsim Kullanımı (Alias)   
1.11   Adres Atama (Location)   
1.12   Operatörler   
1.12.1   Matematiksel Operatörler   
1.12.2   Mantıksal Operatörler   
1.12.3   Karşılaştırma Operatörleri   
1.13   İstenilen Bitlerin Maskelenmesi (Sıfırlanması)   
1.14   İstenilen Bitlerin Setlenmesi ( Setlenmesi)   
1.15   Bitlerin Terslenmesi   
1.15.1   İstenilen Bitlerin Terslenmesi   
1.15.2   Tüm Bitlerin Terslenmesi   
1.16   Karar Yapıları, Kod Bloğu ve Record Yapısı   
1.16.1   Karar Verme Yapıları   
1.16.1.1   İF... THEN Deyimi   
1.16.1.2   CASE...OF  Deyimi   
1.16.2   BLOCK...END BLOCK  Deyimi   
1.16.3   RECORD Yapısı   
1.17   Döngüler   
1.17.1   Forever  Loop  Döngüsü   
1.17.2   For... Loop  Döngüsü   
1.17.2.1   Using Komutu   
1.17.3   While...Loop  Döngüsü   
1.17.4   Repeat ... Until Döngüsü   
1.18   ALT PROGRAM TANIMLAMALARI   
1.18.1   Procedure Tanımlaması   
1.18.2   Function Tanımlaması   
1.18.3   Pseudo Tipinde Alt Program Tanımlaması   
1.18.3.1   Pseudo Tipinde Procedure Tanımlama   
1.18.3.2   Pseudo Tipinde Function Tanımlama   
1.18.4   Alt Programlarının Global Olarak Kullanımı   
1.18.5   İç İçe Alt Program Tanımlama   
1.19   PIC ASSEMBLER KULLANIMI   
1.19.1   Tek Assembler Komutunun Kullanımı
1.19.2   Assembler Kod Bloğunun Kullanımı (ASSEMBLER.....END ASSEMBLER)   
1.20   DAHİLİ FONKSİYONLAR   
1.20.1   Count( ) Fonksiyonu   
1.20.2   Defined( ) Fonksiyonu   
1.20.3   _usec_delay( )   Fonksiyonu   
1.20.4   Tipler arası Dönüşüm Fonksiyonları   
1.20.4.1   Byte( ) Fonksiyonu   
1.20.4.2   SByte( ) Fonksiyonu   
1.20.4.3   Word( ) Fonksiyonu   
1.20.4.4   Sword ( ) Fonksiyonu   
1.20.4.5   Dword( ) Fonksiyonu   
1.20.4.6   Sdword( ) Fonksiyonu   
1.21   PRAGMA KAVRAMI   
1.21.1   Chip Konfigürasyon İfadeleri   
1.21.2   Alt program Optimizasyon İfadeleri   
1.21.2.1   FRAME   
1.21.2.2   INLINE   
1.21.2.3   INTERRUPT   
1.21.2.4   JUMP_TABLE   
1.21.2.5   KEEP   
1.21.2.6   NOSTACK   
1.21.3   Kod Optimizasyon İfadeleri   
1.21.3.1   EXPR_REDUCE   
1.21.3.2   CEXPR_REDUCE   
1.21.3.3   CONST_DETECT   
1.21.3.4   LOAD_REDUCE   
1.21.3.5   TEMP_REDUCE   
1.21.3.6   VARIABLE_FRAME   
1.21.3.7   VARIABLE_RECUDE   
1.21.4   Derleyici Konfigürasyon İfadeleri   
1.21.4.1   BOOTLOADER   
1.21.4.2   CLEAR   
1.21.4.3   EEDATA   
1.21.4.4   FUSE   
1.21.4.5   IDDATA   
1.21.5   MESAJ ÜRETME KOMUTLARI   
1.21.5.1   _DEBUG   
1.21.5.2   _WARN   
1.21.5.3   _ERROR   
1.22   KAYNAKÇA   


--------------------------------------------------------------------------------------------------------------------

Yapılan Eklemeler ve Düzenlemeler Ekim 2012

1)- Arayüz Değiştirildi. Arkalı önlü Çıktı alınabilir Hale Getirildi.
2)- Konularda düzenlemeler yapıldı.
3)- Hatalar ve Eksikler Giderildi.
3)- Case..Of deyiminde "otherwise" kodunun kullanımı anlatıldı.
4)- "İstenilen Uzunlukta Değişken Tanımlama" konusu eklendi.
5)- PDF Dosyası için İçindekiler Menüsü oluşturuldu.
6)- PDF Dosyasının Boyutu küçültüldü.

Temel Jalv2 Kavramları Rev1 İndirme : http://code.google.com/p/jalv2-kaynak/downloads/detail?name=Temel%20Jalv2%20Kavramlar%C4%B1%20Rev1.pdf&can=2&q=#makechanges

M_B

Merhaba Hocam;
Dokumanızı okudum guzel acıklamalar yapmıssınız.
İnşallah devamı gelir.

Kolay gelsin.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

ByTEK

Alıntı yapılan: M_B - 21 Temmuz 2011, 16:51:48
Merhaba Hocam;
Dokumanızı okudum guzel acıklamalar yapmıssınız.
İnşallah devamı gelir.

Kolay gelsin.

Teşekkür ederim. Devamı gelecek ama lütfen hemen ertesi gün beklemeyin. Bunu bile hazırlamam uzun sürdü.. İnşallah Faydasını görürsünüz. Herkese Yeniden Teşekkür Ederim..

betüll

hocam öncelikle hayırlı olsun
notları toparlamışsınız.
işe yeni başlayanlar için hele hele yabancı dilde tekleyen arkadaşlara ve ne zamandır benim gibi ha bugün ha yarın Jal_v2 ye geçiş yapacağım diyen arkadaşlara temel olacaktır..
çalışmalarınızın devamı inşaallah artarak gelir..


ideallerim neredeyse ben oradayım..

ByTEK

Alıntı yapılan: betüll - 22 Temmuz 2011, 17:11:37
hocam öncelikle hayırlı olsun
notları toparlamışsınız.
işe yeni başlayanlar için hele hele yabancı dilde tekleyen arkadaşlara ve ne zamandır benim gibi ha bugün ha yarın Jal_v2 ye geçiş yapacağım diyen arkadaşlara temel olacaktır..
çalışmalarınızın devamı inşaallah artarak gelir..


Teşekkür ederim @betüll.. Evet yabancı kaynaklardan kendi tecrübelerimden ve Serkan AYYILDIZ Hocamın ve Diğer arkadaşların Bilgileri sayesinde birikimlerimi topladım ve böylelikle 1.bölümü yazdım.. İlerleyen zamanlarda devamı gelecek ve jalv2 dili için Türkçe Döküman ve örnekler bulmak çok kolay olacak.. İlk bölümde püf noktaları ile Jalv2 kavramları bir çok kişi için güzel bir kaynak olacak kanaatindeyim.. Çalışmalarınızda başarılar dilerim..

Huzame

Hocam öncelikle ellerinize sağlık güzel çalışma olmuş. 2. bölümü sabırsızlıkla bekliyorum 2. bölüm için çok bekleyecek miyiz?  Saygılar teşekkürler kolay gelsin.

ByTEK

Alıntı yapılan: Huzame - 23 Temmuz 2011, 08:53:16
Hocam öncelikle ellerinize sağlık güzel çalışma olmuş. 2. bölümü sabırsızlıkla bekliyorum 2. bölüm için çok bekleyecek miyiz?  Saygılar teşekkürler kolay gelsin.

Teşekkür ederim.. Önce öğrenmek isteyen arkadaşlar 1.bölümü sindirsin bende 2.bölüm başlıklarını hazırlayayım sonrası yazı işi..  Takdir edersiniz ki çalışıyorum.. Zaman buldukça devam edeceğim..

gareven

Bu Jal programının win7 de çalışabilen versiyonu yok mu?

gareven

bir sorum daha olacak JAL'ın ilk sürümünde çalışan programların Jalv2 de çalışmamasının sebebi kütüphane isimlerinin değişmesi mi, codelarda da bir farklılık var mı?

ByTEK

Alıntı yapılan: gareven - 11 Mayıs 2012, 12:14:20
bir sorum daha olacak JAL'ın ilk sürümünde çalışan programların Jalv2 de çalışmamasının sebebi kütüphane isimlerinin değişmesi mi, codelarda da bir farklılık var mı?

Eski Jal derleyicisi ile Yeni jal derleyicisi Birbirlerinden farklıdır. Jalv2 olarak bilinen yeni Jal derleyicisinde yeni özellikler var. Kütüphanelerin yapıları farklı. PIC'in adreslerinin tanımlı olduğu kütüphaneler farklı vs vs vs.. Kodlarda düzenleme yapılırsa derlenebilir.

gareven

Ben de yeni başlamıştım JAL öğrenmeye artık direk yeni sürüme bakayım bazı komutların isimleri de değişmiş sanırım

delay komutu _usec_delay olmuş gibi...

ByTEK

Alıntı yapılan: gareven - 21 Mayıs 2012, 12:39:01
Ben de yeni başlamıştım JAL öğrenmeye artık direk yeni sürüme bakayım bazı komutların isimleri de değişmiş sanırım

delay komutu _usec_delay olmuş gibi...

Delay komutu _usec_delay olmadı. Delay kütüphanesinde Delay komutları tanımlıdır. _usec_delay Delay komutunun yapamadığı daha ufak gecikmeler için eklendi. Ve _usec_Delay(1) Bir komut çevrimi gecikme yapar. Parametre değiştikçe komut gecikmesi değişir. Asm'de Nop komutu karşılığı olarak gösterilebilir.

gareven

Daha önce bir çok kez PIC e heves edip başlamama rağmen, gerek programa dillerinin karmaşık olmasından (assembly) gerekse IC-Prog programında yaşadığım sorunlardan dolayı hep yarıda bıraktım. Ama Winpic programı ile JAL derleyicisini keşfettikten sonra işin aslında ne kadar eğlenceli ve basit olduğunu fark ettim. (basit ama henüz öğreneceğim çok şey var).

Bu yüzden JAL programının geliştirilmesi, Türkçe'ye çevrilip yaygınlaştırılması konusunda emeği geçen tüm arkadaşlara gerçekten çok teşekkür ediyorum.

Sercan arkadaşımız da buna dahil olmak üzere, kendisiyle de meslektaşız sanırım mekatronikçiler olarak.

gareven

arkadaşlar elimde aşağıdaki mantıkla çalışan bir sayıcı var ve ben buna bir de süre eklemek istiyorum fakat bu süre tetik geldiğinde başlayacak ve 5 saniye içinde herhangi bir tetik gelmediğinde (yani sayaç değeri değişmediğinde ) duracak ve tekrar tetik geldiğinde artmaya başlayacak.

bunun için

a=tmr0
_usec_delay(5000000)

if a==tmr0 then
   stop zaman
   else
   start zaman
   end if

gibi bir program yazmaya çalıştım fakat aşağıda gördüğünüz gibi sayaç değeri saymaya1 den saymaya7 ye kadar olan değişkenlerin yan yana yazılmasıyla ortaya çıkıyor benim bunlara tek bir sayıya eşitlemem lazım bu nasıl yapılabilir?

yukarıdaki programda bir hata var mı?

var byte saymaya1 = 0
var byte saymaya2 = 0
var byte saymaya3 = 0
var byte saymaya4 = 0
var byte saymaya5 = 0
var byte saymaya6 = 0
var byte saymaya7 = 0
-- === PROGRAM BASLANGICI ===
forever loop
 if tmr0 > 9 then  -- eger tmr0 9'dan buyukse
    saymaya2 = saymaya2 + 1
    if saymaya2 == 10 then
     saymaya2 = 0
     saymaya3 = saymaya3 + 1
     if saymaya3 == 10 then
      saymaya3 = 0
      saymaya4 = saymaya4 + 1
      if saymaya4 == 10 then
       saymaya4 = 0
       saymaya5 = saymaya5 + 1
       if saymaya5 == 10 then
        saymaya5 = 0
        saymaya6 = saymaya6 + 1
        if saymaya6 == 10 then
         saymaya6 = 0
          saymaya7 = saymaya7 + 1
          if saymaya7 == 10 then
         saymaya7 = 0

         end if
        end if
       end if
      end if
     end if
    end if
 tmr0 = 0 -- 0 yap seklinde tmr0 sayıcısı kosullandi
 end if
 saymaya1 = tmr0
   hd44780_line1
   sayici -- sayici alt programi cagrildi
   hd44780_line2
   print_decimal_1 ( hd44780, saymaya7, "0" )
   print_decimal_1 ( hd44780, saymaya6, "0" )
   print_decimal_1 ( hd44780, saymaya5, "0" )
   print_decimal_1 ( hd44780, saymaya4, "0" )
   print_decimal_1 ( hd44780, saymaya3, "0" )
   hd44780 = "."
   print_decimal_1 ( hd44780, saymaya2, "0" )
   print_decimal_1 ( hd44780, saymaya1, "0" )
   hd44780 = " "
   hd44780 = "M"
   hd44780 = "E"
   hd44780 = "T"
   hd44780 = "R"
   hd44780 = "E"
end loop

ByTEK

Temel Jalv2 Kavramları Dökümanı Güncellenmiştir Arkadaşlar. Gerekli Düzenlemeler ilk mesajda yapılmıştır.