Elektronik / Elektronik Programlar/

JALTURK Türkçe Jal Programı

Sponsorlu Bağlantılar

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:

jal-dilinde-kullanilan-operatorler

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-jal

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.

24cxxx

Ş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

628_eeprom 877_eeprom 877_keypad_lcd

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

jalturk@gmail.com

Jal ile programla yapanlar ve yeni başlayacak olanlar için süper bir kaynak JALTURK Türkçe Jal Programı

Dosya indirme LINK listesi (HTML formatında) link-5759.zip şifre-pass: 320volt.com

Emeği geçen Kişilere Teşekkürler

  • trelec

    Yaptığınız paylaşım için çok sağolun. Emeğinize sağlık.

  • çakabey

    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

  • mehmet

    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

  • parametre

    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.

  • muhammed yüce

    yaptığınız paylaşım için teşekkür ederiz.