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İLER1.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)
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.
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ı?
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...
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.