C-PROGRAMLAMA
1-DEĞİŞKEN TANIMLAMAK (EQU derleyici komutu):
Program içerisinde bazı değerleri geçici veya sürekli olarak saklamak ihtiyacı duyarız. Bu amaçla programın başlangıcında kullanılacak tüm değişkenlere birer isim ve adres verilerek değişken tanımlaması yaparız. RAM hafızanın 000Ch – 004Fh adresleri arasında 68 tane kaydedici bu iş için ayrılımıştır. İstenilen adres değerleri seçilerek değişkenlerimizi tanımlamış yani onlar için RAM hafızada yer ayırmış oluruz. Aşağıda değişken tanımlanmasının nasıl olduğu gösterilmiştir.
Kullanımı:
<Değişken adı> EQU <Adresi>
Örnek:
SAYAC
|
EQU
|
h’0C’
|
|
SAYI_1
|
EQU
|
h’0D’
|
|
SAYI_2
|
EQU
|
h’0E’
|
|
TOPLAM
|
EQU
|
h’0F’
|
|
..........
|
......
|
......
|
|
..........
|
......
|
......
|
|
Değişken tanımlamada EQU komutu kullanılır.EQU komutu PIC16F84 ‘e ait bir komut olmayıp sadece derleyiciye (MPASMWIN) ait bir dönüştürme komutudur. EQU komutundan sonra belirtilen adres değişken için ayrılır. Değişkene ait değer bu adresin gösterdiği RAM hafıza hücresinde saklanacaktır.
2-DEĞİŞKENİ SIFIRLAMAK (CLRF komutu):
Bir değişkenin içeriğini sıfırlamak için CLRF komutu kullanlır. Aşağıda kullanım şekli ve örnekler verilmiştir.
Kullanımı:
CLRF <değişken veya SFR adı>
Örnek:
CLRF SAYI_1 ;sayı_1= 00h değerini alır.
CLRF SAYAC ;sayac = 00h değerini alır.
CLRF TRISA ;TRISA = 00h değerini alır.
3-DEĞİŞKENE DEĞER AKTARMAK (MOVLW ve MOVWF komutları):
Direkt olarak bir değişkene değer aktarma komutu bulunmadığından dolayı, bir değişkene değer aktarmak için önce, aktarılmak istenen değer W kaydedicisine ve oradan da değişkene aktarılır. Bu işlem için iki komut arda arda kullanılır. W’ye aktarılan değer saklı kalır ta ki değiştirilene kadar.
Kullanımı:
MOVLW <değer>
MOVWF <değişken veya SFR adı>
Örnek: SAYI_1 değişkenine 3Bh değerini aktaralım.
MOVLW 0X3B ;3Bh değeri W kaydedicine aktarılır.
MOVWF SAYI_1 ;W içeriği SAYI_1 değişkenine aktarılır.
Not: 0X3B yazım şekli heksadesimal sayılar için kullanılır.
4- DEĞİŞKEN BASAMAKLARINI DEĞİŞTİRMEK( BCF ve BSF komutları)
Değişkenlerimiz veya SFR kaydedicilerimiz sekiz basamaklı binary değerleri içeren kaydedicilerdir. Programlamada herhangibir basamağın değerini değiştirmemiz gerekebilir. Bu amaçla BCF ve BSF komutları kullanılır.
Kullanımı:
BCF lojik “0” , BSF lojik “1” değerini yükler.
BCF <değişken veya SFR adı> , <basamak>
BSF <değişken veya SFR adı> , <basamak>
Örnek: STATUS kaydedicisinin RP0 basamağını lojik “1” yapınız.
BSF STATUS, RP0 ;RP0=1 olur, BANK1 hafıza bölgesi
seçilmiş olur.
Örnek:TOPLAM isimli değişkenin 4. basamağını lojik “0” yapınız.
Çözüm:
BCF TOPLAM,4
5-BANK DEĞİŞTİRME KOMUTLARI
Hafıza haritası SFR vr GPR kaydedicileri olarak uzzunluğuna bölündüğü gibi, genişliğine de BANK1 ve BANK2 olarak bölünmüştür. BANK1 / BANK2 seçimi durum kaydedicisi (STATUS REGISTER) RP0 ve RP1 bitleri ile yapılır.
Örneğin;
BCF STATUS, RP0 ;RP0=0 yapar, BANK0 seçilmiş olur.
BSF STATUS, RP0 ;RP0=1 yapar, BANK1 seçilmiş olur.
6-PORTLARIN GİRİŞ/ ÇIKIŞ DÜZENLEMELERİ
PORTA
PORTA ‘nın beş ucu vardır. TRISA kaydedicisi ile giriş veya çıkış olarak yönlendirilir. Daha sonra PORTA ‘ya istenen bilgi gönderilir veya PORTA ‘dan okunur.
Örneğin :
TRISA=00h=(0000 0000)2 yapılırsa PORTA’nın tüm uçları çıkış ucu olarak çalışır.
TRISA=04h=(0000 0100)2 yapılırsa PORTA’nın RA2 ucu giriş,diğerleri çıkış ucu olur.
PORTB
PORTB ‘nin 8 ucu vardır. TRISB kaydedicisi ile giriş veya çıkış olarak yönlendirilir. Daha sonra PORTB ‘ya istenen bilgi gönderilir veya PORTB ‘dan okunur. Her uç çıkışında (dahili) pull-up dirençleri bulunur. Bu dirençler seçenekler kaydedicisinin (OPTION REGISTER) 7. biti RBPU ile devre alınır veya devre dışı bırakılır. İlk çalışma anında pull-up dirençleri devre dışıdır.
Örneğin :
TRISB=00h=(0000 0000)2 yapılırsa PORTb’nın tüm uçları çıkış ucu olarak çalışır.
TRISB=04h=(0000 0100)2 yapılırsa PORTB’nın RB2 ucu giriş,diğerleri çıkış ucu olur