(http://img390.yukle.tc/images/1016jalv2.jpg)
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 (http://code.google.com/p/jalv2-kaynak/downloads/detail?name=Temel%20Jalv2%20Kavramlar%C4%B1%20Rev1.pdf&can=2&q=#makechanges)
Merhaba Hocam;
Dokumanızı okudum guzel acıklamalar yapmıssınız.
İnşallah devamı gelir.
Kolay gelsin.
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..
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..
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..
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.
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..
Bu Jal programının win7 de çalışabilen versiyonu yok mu?
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ı?
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.
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...
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.
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.
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
Temel Jalv2 Kavramları Dökümanı Güncellenmiştir Arkadaşlar. Gerekli Düzenlemeler ilk mesajda yapılmıştır.