JAL programlama dili açık kaynak kodlu olarak Wouter van Ooijen tarafından yazılmıştır. Daha sonra versiyonları geliştirilerek 2.0 lı versiyonlara gelmiştir. Son versiyonu KYLE YORK tarafından geliştirilmiştir. JALV2 adıyla anılmaktadır.
JAL programıyla PIC programlamak çok kolaydır. Yazım kuralları oldukça basittir. İlk gunler garip gelse de yazım diline alışınca JAL ile programlamanın ne kadar kolay olduğunu ve oluşturlan kodların ne kadar kısa olduğunu göreceksiniz. Bu hem programın hızlı çalışmasını sağlayacak hem de size büyük projeleri bile birkaç günde bitirip üretim hızınızın artmasını sağlayacaktır.
JAL kod belleği sayfalama, değişken sadeleştirme, kod iyileştirmesi, asm kodları oluşturma gibi önemli görevleri otomatik olarak kendisi yapar.
JAL programlama dili diğer derleyicilerden farklı olarak tanınlanmış değişken adlarını doğrudan assembly ifadeleri içinde kullanmaya izin verir. Üstelik derleyici çıktısını assembly olarak da gösterir. derlediği program koduna bakıldığında oldukça kısa olduğu görülecektir.
Yine JAL programlama dilinin diğer ve en üstün tarafı da komutları diğer dillerden farklı olarak kendiniz yazabilirsiniz. Komutları bilmenize gerek yok sadece CTRLve Space tuşlarına basarak uygun kodları görebilirsiniz.
Program kullanımı ücresizdir. Ticari uygulamalar için de kullanılabilir. Bu dağıtımda kullanılan kütüphanelerin tamamı ücretsiz olup istenilen değişiklik yapılabilir. Değişiklik yaptığınız kütüphanleri isminizi ve yaptığınız değişiklikleri yazarak dağıtabilirsiniz. Yazdığınız kütüphaneleri adresimize gönderirseniz bütün kullanıcılarımızla paylaşmak üzere bir sonraki dağıtıma ekleyerek daha etkili kütüphaneler oluşturabiliriz.
Nasıl Yükleyeceğim ?
JAL dağıtımının son sürümünü jalturk.sourceforge.net adresinden indirebilirsiniz.İndirdiğiniz JAL dağıtımı hem linux ve hem de Windows yüklü makinalarda çalışabilmektedir. Linux yüklü makinalar için wine programı gerekmektedir. İndirdiğiniz zipli JALTURK dağıtımını açın.
Windows yüklü makinalar için Picjal klasörünü C:\ altına kopyalayın. C:\JALTURK klasörü altındaki kısayolu masaüstüne kopyalayarak doğrudan programı çalıştırabilirsiniz.
Program linux ortamında da çalışmaktadır. Wine kurulu makineler için JALTURK klasörünü home klasörünün altına kopyalayın. /JALTURK/JAL/JALEdit klasörü altındaki kısayolu kopyalayıp hedefte gerekli değişiklikler yapıldığında doğrudan jaledit programı çalışmaktadır.
Değişkenler
CONSTANT İFADESİ
Programda kullanılacak sabit değerler için kullanıılır. Değğişşken tipine göre değğerler alır.Const ile tanıımlanan tablolar kod hafızasında tutulur En fazla 255 değğer alır
CONST BYTE Hiz = 18 -- Hiz değişşkeni değeri değğişşmeyen sabit olarak tanımlanıyor. CONST Gun_Saniye = 60 * 60 * 24 --işlemli sayı tanımlama CONST BYTE Enter = 0x0D -- Enterin Ascii Kodu CONST WORD Cm = 1492 -- WORD tipinde sabit CONST BYTE Yazi[] = "Selam" -- Karakter dizisi tanımlama CONST BYTE Tablo[5] = {"M","2",24,1,43} -- tablo tanımlama
BIT DEĞİŞKEN TÜRÜ
Bit değişkeni işaretsiz 1 bitlik veri saklayan değişkendir. Aşağıda bit değişkenine ait kullanım örnekleri verilmiştir:
VAR BIT Buton --işaretsiz değişken (0 veya 1) VAR BYTE DEGER
Eğer bit değişkeni bir pin veya byte tipinde tanımlanmış bir değişkenin ilgili bitiyle ilişkilendirmek istenirse şu şekilde kullanılır:
VAR VOLATILE BIT Buton AT PORTA : 0 -- PORTA.0 değeri Butona aktarılır VAR VOLATILE BIT Isaret AT DEGER : 0 -- DEGER Değişkeninin 0. Biti Isaret VAR VOLATILE BIT Artir_Buton IS Pin_A0 -- Pin A.0 yeni ismi Artir_Buton Buton = Low -- Bit değişkeni 2 değer alabilir 0(Low) ve 1(High) Buton = High
BYTE DEĞİŞKEN TÜRÜ
BYTE değişkeni işaretli ve işasretsiz olarak iki çeşittir. İşaretsiz olan BYTE değişken 0 ile 255 arasında değerlere sahiptir. İşaretli olan BYTE değişken SBYTE olarak tanımlanır ve -128 ile +127 arasında değerler alır. BYTE değişkeni 8 BITten oluşur.
VAR BYTE A, B, C -- 8 bit işaretsiz değişken (0 .. 255 arası değerler alır). A = 17 -- BYTE değişkenine ait örnek kullanım B = 0x10 -- Hexadesimal kullanım C = 0b_0000_1011 -- Binary kullanım VAR BYTE A=4, B=5 -- A ve B BYTE değişken. A=4 ve b=5 atanıyor. VAR BYTE S=0x0A -- S değişkeni BYTE ve Hexadesimal 0x0A değerine sahip VAR BYTE Dizi[5] -- 5 elemanlı bir dizi tanımlanıyor. VAR SBYTE Eleman -- 8 bit işaretli değişken (-128 .. 127 arası değerler). CONST BYTE Hiz = 18 -- Hiz değişkeni değeri değişmeyen sabit olarak tanımlanıyor.
WORD DEĞİŞKEN TÜRÜ
WORD değişkeni işaretli, işaretsiz, işaretli double ve işaretsiz double olmak üzere üç çeşittir. WORD 16 Bit ; Double WORD ise 16 Bittir.
WORD 16 BIT işaretsiz değişken ( 0 .. 65,535 arası değerler alır).
SWORD 16 bit işaretli değişken (-32,768 .. 32,767 arası değerler alır).
DWORD 32 bit işaretsiz değişken (0 .. 4,294,967,296 arası değerler alır).
SDWORD 32 bit işaretli değişken (-2,147,483,648 .. 2,147,483,647 arası değerler alır).
VAR WORD z VAR DWORD i=0 VAR BYTE AD_lo, AD_hi VAR WORD AD_result = AD_lo + 256*AD_hi --BYTE değişkenleri WORD olarak birleştirmek VAR WORD AD_value VAR BYTE AX[2] at AD_value --WORD değişkeni 2 BYTE olarak Ayırmak
Uyarı: Tanımlanan her değişken Pic bellek alanında yer tutmaz. Sadeleştirildikten sonra gerekiyorsa bellekte yer tutar.
Diziler
Diziler Jal programında aşağıdaki gibi tanımlanır:
VAR BYTE Dizi[3] --3 Elemanlı bir dizi CONST BYTE msg[] = "Hello" VAR BYTE msg[5] = {"M","2",24,1,43} VAR BYTE Sifre[5] = {24, 29, 87, 12, 49}
Diziler kullanılırken index 0 dan başlar.
Dizi[0] = 10 Dizinin ilk Elemanı
Örnek Kullanım:
CONST BYTE x[ ] = "Selam Naber" VAR BYTE y VAR BYTE z FOR COUNT(x) USING y LOOP z = x[y] END LOOP
Bu kullanımda y değişkeni 0 dan başlayarak değerler alacaktır.
Fonksiyonlara gönderimde Kullanım: Fonksiyonlara değer gönderirken değişken tanımlamak gerekir
VAR BYTE yazi1[ ] = "selam naber" LCD_yazi(yazi1)
Fonksiyonda Tanımlanması:
PROCEDURE LCD_yazi( BYTE in val[ ] )
Kontrol İfadeleri
IF ELSE ELSIF KOMUTLARI
Şarta bağlı işlemlerde IF ELSE ELSIF yapısı kullanılır. IF şartı END IF ifadesi ile sonlandırılır. Genel olarak IF-ELSE yapısı şu şekilde kurulur :
IF (Şartlar) THEN (Eğer Şartlar Sağlanıyorsa) — If şartına bağlı ifadeler buraya yazılacak
ELSIF (Şartlar) THEN (Eğer ilk seçenekteki şartlar sağlanmayıp buradakiler doğru ise) — Elsif şartına bağlı ifadeler buraya yazılacak
ELSE (Eğer yukarıdaki şartların hiçbiri olmuyorsa) — Else bağlı ifadeler buraya yazılacak
END IF — If sonlandırılıyor
IF ifadeleri içiçe de kullanılabilr.
Örnek Kullanım:
VAR BYTE Secenek --secenek değişkeni tanımlanıyor. IF (Secenek == 13) THEN --Secenek = 13 ise gereken kod buraya yazılacak ELSIF (Secenek == 10) THEN --secenek = 10 ise gereken kod buraya yazılacak ELSE --secenek = 13 ve 10 değilse gereken kod buraya yazılacak END IF
WHILE İFADESİ
Bir şarta bağlı olarak kurulan döngülerde kullanılır. Şart sağlandığı sürece döngüye devam edilir. Şart sağlanmazsa döngü sonlandırılır. Döngünün herhangibir yerinde çıkış sağlamak için EXIT LOOP ifadesi kullanmak yeterlidir.
VAR BYTE r = 10 VAR BYTE y = 9 WHILE (r > y) LOOP -- r y'den büyük oldukça aşağıdaki işlemi yap. d = d + 1 r = r - y END LOOP
Döngü İfadeleri
FOR DÖNGÜSÜ FOR LOOP
For komutu Belirlenen sayı kadar döngü yapar. Döngü için kullanılan sayac 1 den başlar. Döngünün herhangi bir yerinde çıkış sağlamak için EXIT LOOP ifadesi kullanmak yeterlidir.
Örnek kullanım
Aşağıdaki örnekte 5 defa işlem yaptırılır.
VAR BYTE d=0 FOR 5 LOOP --5 kere işlem yapılacak d = d + 1 END LOOP
COUNT VE USING IFADELERININ FOR KOMUTUYLA KULLANIMI
For Komutunun diğer kullanımı using komutuyla gerçekleştirilir.Count komutuyla yazi değişkeninin boyutu bulunur.Using komutuyla da sııfırdan bu değğere gelene kadar artıımlarla döngü devam ettirilir.
Örnek kullanım :
CONST BYTE yazi[] = "Selam Naber" VAR BYTE y VAR BYTE z FOR COUNT(yazi) USING y LOOP z = x[y] END LOOP
Yukarıdaki gibi yazımlarda y değişken 0 dan başlayarak yazi-1 değerinde kadar işlem yapacaktır.
Örnek kullanım :
VAR BYTE Sayac, Toplam=0 FOR 10 USING Sayac LOOP Toplam=Toplam+Sayac END LOOP
FOREVER Döngüsü
Cihaz çalıştıkça FOREVER ifadesi ile kurulmuş döngü içindeki işlemleri yapar. Döngünün herhangi bir yerinde çıkış sağlamak için EXIT LOOP ifadesi kullanmak yeterlidir.
FOREVER LOOP
–Yapılacak işlemler
END LOOP
Operatör ve İşleçler
JAL Dilinde Kullanılan Operatörler:
Assembler Kullanımı
Programda tanımlanacak ifadelerden BIT, BYTE, SBYTE ve karakter dizisi şeklinde olan değişkenlere assemblyden doğrudan erişilebilir.
Kullanım Şekli:
asm İfade Veya assembler Assembly İfadeler END assembler
Örnek Kullanım:
VAR BYTE x[]="SELAM" VAR BIT cc = Low VAR BYTE a assembler local 10: movf x[3],w movwf a btfss cc goto 10 INCF a,f 10: nop END assembler
veya
asm clrwdt
Procedure Prosedürler
Prosedürler birden fazla işlemin yapılacağı alt işlemler bloğudur. Prosedürlerde kullanılan BYTE IN ifadesi prosedüre giriş yapılan değişkeni, BYTE OUT ifadesi ise prosedürden çıkış yapacak değişkeni ifade eder.
Herhangi bir kütüphanedeki Prosedürlerin tamamı derleme işlemine katılmaz. Sadece programda kullanılan kodlar derleme işlemine alınır. Prosedürden o anda çıkmak için return kullanılması yeterlidir. Prosedürler ana program içerisinde de tanımlanabildiği gibi genel olarak kütüphane dosyalarında tanımlıdır. Ana programdan çağrılırken sadece ısimleri kullanılır.
Prosedür yazılırken BYTE IN ve BYTE OUT ile tanımlanan değişkenlerin tekrar tanımlanmasına gerek yoktur.
Tanımlama
PROCEDURE Kare_Al( BYTE IN Sayi, BYTE OUT Sayi_Kare ) IS Sayi_Kare = Sayi * Sayi END PROCEDURE
PROSEDÜR KULLANIMI:
VAR BYTE Deneme Kare_Al(5,Deneme) -- 5 sayısının karesi alınıyor LCD_numara(Kare_Al) -- LCD Display'e gönderiliyor
NOT: Prosedür tanımlarken sonundaki IS ifadesini unutmayın. Olmadık hatalarla karşılaşmayın.
Function Fonksiyonlar
Fonksiyonlar çağrıldıkları yere geriye değer döndürür. Fonksiyona birden fazla değişken giriş yapabilir ancak çıkış için geriye sadece bir değer gönderilir. BYTE IN ile tanımlanan değişkenler Fonksiyona giriş yapan değişkenleri ifade eder.
Herhangi bir kütüphanedeki fonksiyonların tamamı derleme işlemine katılmaz. Sadece programda kullanılan kodlar derleme işlemine alınır.
RETURN ifadesi fonksiyondan dönecek değeri ifade eder. Fonksiyonun herhangibir yerinde RETURN kullanılırsa fonksiyondan çıkılır.
Fonksiyonun Tanımlanması:
FUNCTION BYTE_WORD_CEVIR(BYTE IN UST_BYTE, BYTE IN ALT_BYTE) RETURN WORD IS RETURN ALT_BYTE + 256 * UST_BYTE END FUNCTION
Fonksiyonun Kullanılması:
VAR BYTE Deger1=5, Deger2=10 VAR WORD Sonuc Sonuc = BYTE_WORD_CEVIR( Deger1, Deger2)
Pragma İfadesi
Pragma ifadesi derleyiciye bildirimde bulunmak için kullanılır. Pragma ifadesinden sonra derleyiciye bildirilmek istenen durum yazılır. Bu durumlar aşağıda sıralanmıştır
pragma interrupt
Kesme oluştuğunda altındaki kod satırında yazan işlemlerin uygulanacağını söyler. Mutlaka fonksiyon içerisinde kullanılmalıdır. Kesme geldiğinde kesme kontrolü ve ilgili kesmeleri aktif veya pasif etmek kullanıcı tarafından yapılır. Genellikle ana programdaki prosedürlerde kullanılır.
VAR WORD cc
PROCEDURE Timer0_Kesme IS pragma interrupt IF T0IF THEN -- Eğer Timer0 interruptu varsa T0IF = low cc = cc + 1 END IF END PROCEDURE
pragma target SIGORTA
Piklerde kullanılan sigorta IFadelerinin tanımlanmasında kullanılır. Bu ayarlar JALTURK Dağıtımı için ilgili pikin genel_ayar dosyasıda yapılmıştır. Diğer dağıtımlarda dosya adları farklılık taşımaktadır.
pragma target protection
ON = Program belleğine şifre konulmasında kullanılır.
OFF = Program belleğine şifre konulmaz.
pragma target debug
ON= InCircuit Debug (Devrede Hata Yakalama) aktif (Özel devre gerektirir)
OFF = ICD pasif
pragma target cpd
ON = Veri Eprom kod korumalı
OFF = Veri Eprom kod korumasız
pragma target lvp
ON = Düşük Gerilimle programlama (ICSP) aktif
OFF = Düşük Gerilimle programlama (ICSP) pasif
pragma target bor
ON = Pic gerilimi olması gerekenden (2,5 V) düşükse resetle
OFF = Pic gerilimi olması gereknden düşükse resetleme
pragma target powerup
ON = Pik enerjilendikten sonra 72ms bekler
OFF = Beklemeyi kapatır.
pragma target watchdog
ON = Program testi için WDT(bekçi köpeği sayıcısı) açık
OFF = WDT kapalı
pragma target osc
lp = 32.768KHz veya 200KHz Kristal kullanılırsa seçilmeli
xt = 1MHz ile 4MHz arası Kristaller için
hs = 4MHz ile 20MHz Kristaller için
rc = RC osilatörde kullanılır.
Jal Türk Kütüphaneleri
Programda kullanılan kütüphanelerin tamamı ücresizdir. Ticari uygulamalar içinde kullanılabilir. Bu dağıtımda kullanılan kütüphanelerin tamamı ücretsiz olup istenilen değişiklik yapılabilir. Değişiklik yaptığınız kütüphanleri isminizi ve yaptığınız değişiklikleri yazarak dağıtabilirsiniz. YAzdığınız kütüphaneleri adresimize gönderirseniz bütün kullanıcılarımızla paylaşmak üzere bir sonraki dağıtıma ekleyerek daha etkili kütüphaneler oluşturabiliriz.
Programda kullanılan kütüphaneler Picjal/jal/Libraries klasörünün altındadır. istenilen değişiklik veya ekleme yapılarak kullanılabilir.
DONANIMSAL ADC KÜTÜPHANESI (ADC_DONANIM.JAL)
Donanımsal ADC kütüphanesi Pic işlemcilerde bulunan dahili ADC işlemlerini kullanmak için geliştirilmiştir. Analog-Dijital çevrimin gerçekleşebilmesi için Genel dosyasındaki ilgili kısımlar aktif edilmelidir (16F877 için 16F877_Genel.jal dosyasında)
Adc_Ac Komutu
Adc_Ayarla Komutu
Adc_Kapat Komutu
Adc_Oku Komutu
Adc_Oku_Dusuk Komutu
DS1307 KÜTÜPHANESİ (DS1307.JAL)
DS1307 Entegresine bilgi göndermek ve bilgi okumak için gerekli kodların toplandığı komuttur.
DS1307 Entegresi gerçek zamanlı saat entegresidir. I2C protokolüyle çalışır. X1 ve X2 uçlarına 32.768 KHZ Kristal Osilatör bağlanır. SCL ve SDA uçları I2C için ayrılan uçlardır. Vbat ucuna 3 voltluk pil takıldığında enerji kesilse bile entegredeki saat ve tarih çalışmaya devam edecektir. SQW/OUT ucundan yapılan kontrol Byte ayarına göre kare dalga sinyal alınabilir.
DS1307_Oku Komutu
DS1307_Yaz Komutu
EPROM24C.JAL 24C32, 24C64, 24C128, 24C256 EEPROM OKUMA-YAZMA KÜTÜPHANESİ
24CXX Serisi EEPROMlar uygulamalarda sıkça kullanılan elektrikle silinebilen I2C protokolüyle çalışan belleklerdir. Değerleri sonlarındaki rakamla belirlenir. Örneğin 24C64 64 KByte EEPROMu ifade eder.
Şekilde görülen 24c serisi epromda A0,A1,A2 Adresleme için kullanılırken SCL ve SDA ise I2C protokolüne uygun olarak veri giriş-çıkış ucu ve senkronize sinyali kullanılır. WP ucu ise yazma korumasıdır.
EPROM24C_Oku Komutu
EPROM24C_Oku_8 KOMUTU
EPROM24C_OKU_16 KOMUTU
EPROM24C_OKU_32 KOMUTU
EPROM24C_Yaz Komutu
EPROM24C_YAZ_8 KOMUTU
EPROM24C_YAZ_16 KOMUTU
EPROM24C_YAZ_32 KOMUTU
I2C_DONANIM.JAL DONANIMSAL I2C PROTOKOLÜ KÜTÜPHANESİ
Donanımsal I2C kütüphanesi I2C protokolünün donanımsal olarak kullanılmasını sağlar. Bazı Pic işlemcilerde donanımsal I2C bulunurken bazılarında bulunmazlar. Bu kütüphane I2C donanımı bulunan işlemciler için tasarlanmıştır. Kütüphanenin kullanılabilmesi için işlemcinin genel dosyasından (16F877 için 16F877_Genel.jal) dosyasından ilgili kısımlar aktif edilmelidir.
I2C protokolü iletişim için 2 uç kullanır. Kullanılan uçlardan birisi veri ileitişimi için kullanılırken diğeri senkronizasyon için kullanılır. Yazılımsal I2C kütüphanesinin kullanılabilmesi için aşağıdaki gibi pin ayarlarının yapılması gerekir. Bu ayarlar işlemcinin Genel dosyasında mevcuttur.
I2C_AYARLA KOMUTU
I2C_BASLA KOMUTU
I2C_BYTE_AL_ACK KOMUTU
I2C_BYTE_AL_NACK KOMUTU
I2C_BYTE_GONDER KOMUTU
I2C_BYTE_OKU KOMUTU
I2C_BYTE_OKU1 KOMUTU
I2C_BYTE_YAZ1 KOMUTU
I2C_BYTE_YAZ KOMUTU
I2C_DUR KOMUTU
I2C_RESTART KOMUTU
I2CSONRAKI_BYTE_OKU KOMUTU
I2C_YAZILIM.JAL YAZILIMSAL I2C PROTOKOLÜ KÜTÜPHANESİ
Yazılımsal I2C kütüphanesi I2C protokolünün yazılımsal olarak kullanılmasını sağlar. Bazı Pic işlemcilerde donanımsal I2C bulunurken bazılarında bulunmazlar. Donanımsal I2C bulunmayan işlemciler için yazılmıştır. PIN uçları giriş çıkış yapılarak open-collector tabir edilen yöntemle I2C kontrol edilmektedir.
KARAKTER_5x7.JAL GRAFİK LCDLER İÇİN 5×7 KARAKTER KÜTÜPHANESİ
Karakter_5x7 kütüphanesi ASCII kod tablosundaki yeri verilen karakterin (32 .. 127 aralığı için) ASCII karakter olup olmadığını kontrol eder. Geriye dönen değer Doğru veya Yanlış bilgisidir.
LCD_HD44780.JAL HD44780 LCD KÜTÜPHANESİ
LCD_HD44780 Kütüphanesi Pic işlemcilerle LCD kullanmak için yazılmış kütüphanedir. Kütüphaneyi kullanmak için uç ayarları yapılmalıdır. Mümkün olan en az değişiklikle ve LCD uçları istenildiği gibi seçilmeye uygun yazılmıştır.
LCD_BYTE_DESİMAL KOMUTU
LCD_GUN_AY_YIL2000 KOMUTU
LCD_GUN_AY_YIL KOMUTU
LCD_HEX KOMUTU
LCD_KARAKTER KOMUTU
LCD_KONUM KOMUTU
LCD_KOMUT KOMUTU
LCD_OZEL_KARAKTER KOMUTU
LCD_SAAT_DAKIKA_SANIYE KOMUTU
LCD_SAAT_DAKIKA KOMUTU
LCD_SIL KOMUTU
LM75.JAL LM75 SICAKLIK SENSÖRÜ
LM 75 sıcaklık okuma sensörü I2C protokolüyle çalışan ortam ısısını dijital değere çevirerek okuyan bir sensördür I2C protoklü kullandığından ilgili kodların çalışması için 1xFxxx_Genel.jal (16F877 için 16F877_Genel.jal dosyası) dosyasındaki I2C ve LM75 ifadeleri aktif edilmelidir.
LM75_OKU_HAM
LM75_OKU_ISLENMIS
MASTER_SYNC_SER_PORT.JAL MASTER SENCRONOUS SERIAL PORT(SENKRON SERİ PORT)
Donanımsal SPI arabirimi kullanmak için geliştirilmiş kütüphanedir.
SPI_MSSP_BEKLE KOMUTU
SPI_MSSP_GONDER KOMUTU
SPI_MSSP_KAPAT KOMUTU
SPI_MSSP_OKU KOMUTU
PIC_EEPROM.JAL PIC DAHİLİ EEPROM OKUMA/YAZMA KUTUPHANESİ
Pic_eeprom kütüphanesi pic işlemcilerinin içinde bulunan dahili eeproma veri yazmak veya veri okumak için kullanılır.
PIC_EEPROM_OKU KOMUTU
PIC_EEPROM_OKU_WORD KOMUTU
PIC_EEPROM_OKU_DWORD KOMUTU
PIC_EEPROM_YAZ KOMUTU
PIC_EEPROM_YAZ_WORD KOMUTU
PIC_EEPROM_YAZ_DWORD KOMUTU
PIC_PROGRAM_EEPROM.JAL PIC KOD OKUMA/YAZMA KUTUPHANESI (16F877 İÇİN)
Pic program belleğine kod yazmak ve kod okumak için kullanılan kütüphanedir.
PROGRAM_EEPROM_OKU KOMUTU
PROGRAM_EEPROM_YAZ KOMUTU
RASTEGELE_SAYI.JAL RASTGELE SAYI ÜRETME KUTUPHANESI
Pic işlemcilerde rastgele sayı üretmek için kullanılan kütüphanedir.
RASTGELE_BYTE KOMUTU
RASTGELE_WORD KOMUTU
SERI_PORT_DONANIM.JAL DONANIMSAL SERİ PORT KÜTÜPHANESİ
Donanımsal Seri Port kütüphanesi RS232 iletişim protoklü ile veri aktarımı yapmak için yazılmıştır. Kütüphane donanımsal olarak seri porta sahip işlemcilerde kullanılmalıdır.
Donanımsal Seri portu aktif etmek için ilgili Pic entegresinin Genel dosyasından (16F877 için 16F877_Genel.jal dosyası) ilgili kısımlar aktif edilmelidir.
SERI_PORT_AC KOMUTU
SERI_PORT_AYARLA KOMUTU
SERI_PORT_AL KOMUTU
SERI_PORT_KAPAT KOMUTU
SERI_PORT_OKU KOMUTU
SERI_PORT_YAZ KOMUTU
SERI_PORT_YAZ_WORD KOMUTU
SERI_PORT_YAZILIM.JAL
TUSTAKIMI.JAL TUŞ TAKIMI OKUMA KÜTÜPHANESİ
Tuş takımı okuma kütüphanesi 4 satir 3 sütun tuş takımlarını okumak için yapılmıştır. Tuş dizilim aynen telefonlardaki gibidir. Tuş takımı uçları ayarlanabilir. Fonksiyon geriye değğer döndürene kadar sürekli tarama yapar. Fonksiyon sonucunda geriye dönen deger okunan rakamdır. Örneğin 6 rakamına basılmışsa geriye 6 döner. * tuşuna basılmışsa 10, # tuşşuna basılmışsa geriye 11 döner.
Önemli: Sütunların bir uçlarından direnç yardıımıyla sşaseye bağğlamazsanız (PULL-DOWN olayı) okuma işlemi gerçekleşmez.
TUSTAKIMI_OKU
YEDISEGMENT.JAL ORTAK ANOT-KATOT DISPLAY KUTUPHANESI
Yedisegment kütüphanesi, gelen verinin yedisegment displaylere uygun hale getirmek için tasarlanmıştır. Gelen Byte veri yedisegmente uygun hale getirildikten sonra Byte olarak aktarılır. Geriye dönen değer direk olarak porta gönderilirse display sürülmüş olur.
ORTAK_ANOT_AL KOMUTU
ORTAK_KATOT_AL KOMUTU
ZAMAN_GECIKME.JAL ZAMAN GECIKME KÜTÜPHANESI
Zaman gecikme kütüphanesi her osilatör frekansında istenen zaman gecikmesini sağlayan kütüphanedir. En fazla 255 saniye gecikme sağlanabilir. Gecikme kullanılırken dikkat edilecek hususlardan biri şudur: Örneğin 1 saniyelik gecikme istiyorsanız Gecikme_1s(1) yerine Gecikme_10ms(100) kullanmanız üretilen kodun daha kısa olmasını sağlayacaktır.
GECIKME_1US
GECİKME_10US
GECİKME_1MS
GECİKME_10MS
GECİKME_100MS
GECİKME_500MS
GECİKME_1S
TEKTEL.JAL TEKTEL (DALLAS 1 WIRE) KÜTÜPHANESİ
Dallas – Maxim şirketinin tanımladığı tek tel üzerinden haberleşmeyi sağlayan kütüphanedir. 4.7 K Pull-Up direnciyle beraber kullanılır. Bu protokol yardımıyla sadece 2 hat kullanarak sensörlere enerji verip bilgi aktarımında bulunabilirsiniz. Aynı hatta aynı sensörlerden bağlayacağınız gibi farklı sensör serilerini de bağlayabilirsiniz. bir hatta bağlanan en fazla sensör sayısı 100 lerle ifade edilir. Akbil gibi uygulamalarda tektel protokolü kullanılmaktadır.
TEKTEL_RESET KOMUTU
TEKTEL_OKU KOMUTU
TEKTEL_YAZ KOMUTU
TEKTEL_BEKLE
TEKTEL_BEKLE2
DS18B20.JAL DS18B20 (SICAKLIK SENSÖRÜ) KÜTÜPHANESİ
DS18B20 sensörü hassas sıcaklık sensörüdür. Ayarlandığında derecenin yaklaşık binde biri hassasiyetle sıcaklığı gösterir. Tektel protokolünü kullandığından iletişimde pull-up direnci gerekir. Alt ve üst sıcaklık değerleri belirlendiğinde bu iki değer dışına çıkıldığı zaman alarm verir. Yüzlercesi sadece 2 tane kablo kullanılarak hem enerjilendirilir ve hem de bilgi aktarımı yapılır. Otomasyon için kullanışlıdır.
Örnekler
JAL kütüphanesiyle birlikte verilen örnekler Proteus simulasyon programı yardımıyla denenmiş ve doğru olarak çalıştırıldıktan sonra yardım dosyasına eklenmiştir. Örnekler Pic16F877 ve Pic16F628 entegreleri kullanılarak yapılmıştır. Bu iki entegre piyasada en kolay bulunan ve fiyat olarak ucuz olduklarından dolayı örneklerde kullanılmıştır.İstenildiği taktirde Pic16F84 veya diğer entegreler de kullanılabilir.
Sizlerden gelen talepler doğrultusunda ve yeni kütüphanelerin eklenmesiyle yeni örnekler yardım dosyasına dahil edilecektir. Örnek programları doğrudan yardım dosyasından kopyalayabileceğiniz gibi dağıtımda gelen örnekler klasöründe de bulabilirsiniz. Faydalı olması dileğiyle.
(İsis simülasyon hex ve jal dosyaları ile)
Buton Led Örnekleri
16F628 Buton Led Ornek
16F877 BUTON_LED
7 Segment Display
16F877 7SEGMENT
16F628 7SEGMENT
Dahili Veri EEprom Örnekleri
16F877 Verii Eeprom Örneği
16F628 Eeprom
Program Eeprom
16F877 PROGRAM EEPROM
LCD Örnekleri
16F877 LCD Örneği
16F877 ADC LCD Örneği
16F628 LCD Örneği
Seri Port Örnekleri
16F877 DONANIMSAL SERİ PORT
I2C Örnekleri
Entegre şemaları
PIC ENTEGRELERI
DSxxxx SERİSİ
24CxxX SERİSİ
İletişim
Dağıtım versiyon: JALTURK Versiyon 1.47.00
Bu dağıtım öğretmen ve öğrencilerimize pic üzerine etkili, kolay ve hızlı programlar yazmaları için hazırlanmıştır. Yardım dosyasıyla desteklenerek kullanımı kolaylaştırılmıştır. Görüş ve önerilerinizi, isteklerinizi, yazılımla ilgili problemleri veya diğer yazılım taleplerinizi bize e-posta ile gönderin.
Sonraki dağıtım versiyonlarında gerçek zamanlı uygulamalardan en çok kullanılanları devre şekilleri ve baskı devreleri ile beraber sunulacaktır.
Ayrıca Pic programlama devresi ve baskı devresi de yerini alacaktır. Bunun haricinde devre içi programlama (icp) devresi de denemeleri yapıldıktan sonra yardım dosyamızda yerini alacaktır.
Kullanan herkese yararlı olması dileğiyle…
JALTURK GELİŞTİRME EKİBİ
MUSTAFA TOPUZ SEFER UZAN
Teknik Öğretmen Teknik Öğretmen
Jal ile programla yapanlar ve yeni başlayacak olanlar için süper bir kaynak Emeği geçen Kişilere Teşekkürler
Şifre-Pass: 320volt.com
Yayım tarihi: 2009/02/28 Etiketler: jal örnekleri, jal programı, jal programlama, jalturk, türkçe jal
Yaptığınız paylaşım için çok sağolun. Emeğinize sağlık.
jal dilinde prosedürün içindeyken bir giriş aktif olduğundayada yeni bir durum geliştiğinde o konumdan çıkmamızı sağlayacak goto gibi bir deyim varmıdır.Aşağıdaki for loop döngüsünden ha deyince çıkabilirmiyim acep.şimdiden sağol.
procedure gecikme is
if pin_b1 == high & pin_b0 == low then
for x loop
for 2 loop
for 60 loop
for 60 loop
pin_b6 = high
delay_100ms
pin_b6 = low
delay_100ms
end loop
end loop
end loop
end loop
pin_b7 = high
end if
end procedure
butona 1 defa basılsığında led 10 defa yanıp sönsün.butona 2 defa basıldığında led 5 defa yanıp sönsün
jal proğramında yazdım en sonda
end loop
end if
end loop ta hata verdi sorun nerede anlayamadım yardımcı olursanız sevinirim
include 16f84_4
include jlib
port_b_direction = all_output
pin_a0_direction = input
var byte y
y = 0
port_b = 0
forever loop
if pin_a0 == high then
for 10 loop
pin_b0 = high
delay_1s
pin_b0 = low
delay_1s
end loop
end if
if pin_a0 == high then
y = y + 1
if y == 2 then
for 5 loop
pin_b0 = high
delay_1s
pin_b0 = low
delay_1s
end loop
end if
end loop
Jal dilini Türkçeleştirme adına gösterilen gayretleri sevindirici buluyorum bu çalışmaları yapan arkadaşlarımıza her türlü negatif fikirleri bir tarafa bırakarak ısrarla devam etmelerini istiyorum güzel bir çalışma olmuş teşekkür ederim.
yaptığınız paylaşım için teşekkür ederiz.
önce jal v2 yi orjinalini tüm yönleri ve bol örnekleri ile açıklayan bir kitap yazaydı..(serkan ayyıldız gibi…) sonra türkçe komutlarada isterseniz buyrun diyen ayrı bir kitap basaydı..kitapsız internet dökümanlarıyla insan yarı yolda kalıyor…açıkcası bu arkadaş memlekete faydalı olma imkanı varken (memlekete sunacağı bir veya iki kitapla para da kazanma imkanı olabilirken ve profosyonel davranarak saygımızı övgümüzü ve en önemlisi duamızı alabilecekken ) egosunun okşanması için bu çalışmayı yapıp insanları yarı yolda bıraktı…boş verin çoluk çocuklarla uğraşmayın…serkan ayyıldız gibi saygı duyulacak olgunlukta değil….. kendi bilgisini bu konuda emek vererek arttırmış , ama bunu memlekete hizmet duygusuyla porofosyonel paylaşım noktasında dertlenmemiştir..eskiler derki derdi olmayan eşşektir… ben ccs c ye gavura para verip alacam..bizim memlekkette bilen çok çıkarda adam kolay kolay çıkmaz malesef..