PIC16F84 Program Nasıl Yazılır

ne-nasil.net

PIC Program Yazımı

Ewet arkadaşlar bu yazımızda sizlere PIC ile program yazılımı nasıl olur, hangi kurallara dikkat edilir vb. konuları paylaşacağız. Aşağıdaki şekilde görüldüğü üzere:

 

  1. Program komutlari öncelikle bir metin editöründe yazilir. Örnegin Windows Not Defteri kullanilabilir.
  2. Not defterinde yazilan program .asm uzantili olarak kaydedilir.
  3. İnternette mikrodenetleyici ile ilgili sitelerde veya Microchipfirmasinin sitesinde ücretsiz olarak verdigi MPLAB veyaMPASM programi ile .asm uzantili program .hex olarak derlenir.
  4. PIC yazici programi ile PIC içerisine program yüklenir. PIC Writer(PIC Yazici) programlari internette ücretsiz olarak bulunabilir. Bu programlar içerisinde genellikle IC-Prog sikça tercih edilir.
ne-nasil.net
pic program yazılımı
PIC program nasıl yazılır

PIC ASSEMBLY DİLİ PROGRAM YAZIM KURALLARI

        PIC assembler programlari baslik, atama, program ve sonlandirma bloklarindan olusur. Her blok satiri etiket, komut ve adres siralamasini izleyecek sekilde üç sütun halinde yazilir.

        Programin baslik bölümünde kullanilacak olan PIC türü belirtilir. Baslik bölümüne istenildigi taktirde noktali virgül (;) kullanilarak program basligi, programin islevi, yazilis tarihi gibi bilgiler girilebilir. Noktali virgül ile baslayan tüm satirlar assembler tarafindan heksadesimal kodlara çevrilmezler.

        Atama blogu, programda kullanilan register adreslerinin bir etiket ile belirlendigi bölümdür. Bu bölümde yer alan etiketler program içerisindeki register adreslerinin hatirlanmasini kolaylastirmak için kullanilir.

        Program blogu, asil program için gerekli blok degistirme, giris ve çikis portlarinin belirlenmesi gibi hazirliklarin yapildigi komut satirlari ile programin amaca yönelik çalismasini gerçeklestirecek komut satirlarindan olusur.

        Sonlandirma blogu varsa program içi döngülerin yazildigi ve programin END komutu ile sonlandirildigi bölümdür.

PIC blokları
PIC yazım kuralları

Etiketler, assembly komutlarindan farkli,  programin 1. sütununa yazilan sembolik isimlerdir ve PIC bellek adreslerini atamada kullanilirlar.  Etiketlerde en fazla 31 karakter kullanilabilir. Bir etiket sembolü harf veya alt çizgi ile baslar. Içerisinde alt çizgi, soru isareti ve sembol kullanilabilir.

        Assembly ile program yazarken büyük veya küçük harf karakteri seçilmesi önemli degildir. Komutlar büyük harf, küçük harf veya karisik olarak yazilabilir. Ancak etiketler yazilirken eger etiket sembolü büyük harf olarak belirlenmis ise  program içerisinde de etiket karsiligi ayni sekilde yazilmalidir.

PROGRAM YAZIMINDA SAYILARIN YAZILIŞ BİÇİMİ

        Program içerisinde sayilar heksadesimal binary ve desimal formda kullanilirlar. Heksadesimal sayilar “H”, binary sayilar “B” ve desimal sayilar “D” harfleri ile ifade edilir. Büyük ya da küçük harf kullanimi sayilarin gösterimini etkilemez.

 

        Heksadesimal sayi gösterimi : Heksadesimal sayilar 0,1,2,3,4,5,6,7,8,9,A,B,C,D ve F olmak üzere 16 tabanli sayilardir.

 

PORTB   EQU   H’06’

PORTB   EQU   0x06

PORTB   EQU   06

PORTB   EQU   6

PORTB   EQU   06H

 

 Binary sayi gösterimi : Binary sayilar ise 0 ve 1 olmak üzere 2 tabanli sayilardir.

 

MOVLW   B’00101111’

 

Desimal sayi gösterimi : Desimal sayilar 0,1,2,3,4,5,6,7,8 ve 9 rakamlarindan olusur.

 

MOVLW   D’27’

Örnek Program Yazımı

        PIC programlari  heksadesimal olarak kodlanmis register adresleri ile, register isimlerinin direkt olarak yazilabildigi atama komutlari ile veya INCLUDE komutu kullanilarak PIC içerisindeki sabit register adreslerinin otomatik atanmasi gibi üç degisik sekilde yazilabilir. Bu üç yöntem içerisinde en sik ve en kolay kullanim sekli INCLUDE komutunun kullanilarak register adreslerinin otomatik atandigi program yazimi seklidir. Aşağıda ayni programin üç degisik yöntemle yazildigi durumlar görülmektedir.

 

        Asagida heksadesimal olarak kodlanmis register adresleri ile PIC devresine enerji verildiginde bir LED’i yakan Sekiz satırdan oluşan program görülmektedir.

 

        Program yazim  örnegi 1 :

 

(1)     ;  program1.asm 07/07/2004

 

Programin ismi, yazilis tarihi gibi bilgilerin yer aldigi bölüm baslik satiridir. Program içerisinde noktali  virgül (;)  ile baslayan tüm satirlar  derleyici tarafindan heksadesimal’e çevrilmez. Bu satirlar programda çesitli hatirlatmalar yapmak amaciyla kullanilir. Baslikta kullanilan esittir (=) isaretlerinin adedi önemli degildir.

 

(2)     LIST           P=16F84

        Programlanacak PIC cinsinin belirtildigi komut satiridir. Örnegin PIC16F877 ile program yazimi yapilmak istenseydi bu kez bu komut satiri LIST P=16F877 olmalidir.

 

(3)     CLRF   H’06’

        Bu komut satiri PORTB’yi sifirlar. H’06’ adresi file register içerisinde PORTB adresine karsilik gelir. CLRF komutu PORTB’nin tüm bitlerini sifirlar. Özellikle önceden programlanip üzerine tekrar program yazilan PIC’ler için bu durum önemlidir. Çünkü PIC içerisindeki eski veri port çikis registerinde hala duruyor olabilir. 

PIC örnek program yazımı
pic örnek program yazımı

 

pic uygulamaları
pic programlama

        (4),(5) ve (6) numarali komut satirlari birbirleri ile bütünlük olusturur. Bu satirlar PIC entegresine ait portlari giris ve çikis olarak tanimlar.

 

(4)     BSF   H’03’,5

        H’03’ adresi file register içerisinde STATUS registerine karsilik gelir. “5” rakami STATUS’un 5. bitini ifade eder. BSF komutu STATUS’un 5. bitini “1” yapar. Status’un 5. bitinin “1” olmasi BANK1’e geç anlamina gelir. BANK1’e geçme nedeni PORTA ve PORTB’yi yönlendiren registerlerin burada bulunmasidir. Programda buton gibi giris bölümü bulunmadigindan sadece çikis olarak yönlendirme yapilmistir. 

pic nedir
pic devreleri

(5)     CLRF   H’86’

        TRISB’nin tüm bitlerini sifirlar. Gerek TRISA gerekse TRISB’nin içeriginin sifir “0” olmasi yönlendirdigi port bitlerinini çikis olarak tanimlanmasi anlamina gelir. CLRF  H’86’ komutu ile TRISB registerlerinin tamami sifir “0” yapilmis ve yönlendirdigi 8 bitlik tüm PORTB bitleri ise çikis olarak kullanilmistir.

picvi
pic 16f84

(6)     BCF   H’03’,5

        H’03’ adresi file register içerisinde STATUS registerine karsilik gelir. “5” rakami STATUS’un 5. bitini ifade eder. BCF komutu STATUS’un 5. bitini “0” yapar. Status’un 5. bitinin “0” olmasi BANK0’a geç anlamina gelir. Böylece portlari yönlendirmek için BANK1’de bulunan TRISA veya TRISB registerlerinin ayarinin ardindan tekrar BANK0’a geri dönülür.

 

(7)     BSF   H’06’,0

        H’06’ adresi file register içerisinde PORTB’ye karsilik gelir. “0” rakami PORTB’nin 0. bitini ifade eder. BSF komutu PORTB’nin 0. bitini “1” yapar. Diger bir ifadeyle bu komut PORTB’nin ilk LED’ini yakar.

 

(8)     END

        Programi sonlandirmak amaciyla kullanilan bir komuttur. Bütün PIC programlari END komutu ile sona erer.

 

 

        Program yazim  örnegi 2 :

 

        Ayni programda atama komutu (EQU) kullanildiginda program içerisinde register adreslerinin heksadesimal olarak her defasinda kullanilmasi gerekmez. Bir defaya mahsus olarak register adreslerinin EQU komutu ile programin atama blogunda belirtilmesi yeterlidir.    

        Asagida EQU komutunun da kullanildigi PIC devresine enerji verildiginde bir LED’i yakan program görülmektedir.

plc
pic c

        Programda, EQU komutu ile atama blogunda tüm register adresleri bir defaya mahsus olarak tanimlanmistir. Bu komutun kullanilmasi ile PORTB, STATUS ve TRISB registerleri programin ilerleyen bölümünde isimleriyle ifade edilebilmistir. Bu durum registerlerin heksadesimal adreslerinin sürekli olarak yazilmasini önleyerek programin daha anlasilir olmasini saglar.

        Program yazim  örnegi 3 :

 

        Programda INCLUDE komutu kullanildiginda PIC register adreslerinin EQU atama komutu ile tanimlanmasi zorunlulugu ortadan kalkar ve program daha sade bir duruma dönüsür. Bu tür program yazimi sikça tercih edilen bir durumdur.

Istenildigi taktirde programa konfigürasyon satiri da eklenerek yükleme esnasinda PIC Writer (PIC Yazici) programi ile yapilan ayarlar otomatik olarak program içerisinde düzenlenebilir.

        PIC entegresine program yazimi gerçeklestirmeden önce programin akis diyagramini çizmek karmasik ve uzun mantik islemlerinde kolaylik saglayacaktir. Akis diyagraminin çizilmesi ile program içerisindeki komutlarin hangi mantik siralamasina göre yapilacagi görsellik kazanir. Böylelikle minumum hatasiz program yazimi saglanabilecegi gibi, yazilan programin hata gösterdigi durumlarda program takibinde kolaylik saglanmis olur.

        Akis  diyagram sembolleri asagida verilmistir. Semboller içersine kisa hatirlatici metinler yazilarak programin yazimi ve anlasilabilirliligi saglanir. Kimi zaman bu yazilar programcinin seçecegi semboller dahi olabilir.

pic nedir
pic programlama
pic devreleri
pic uygulamaları

Yan tarafda INCLUDE komutunun kullanildigi PIC devresine enerji verildiginde bir LED’i yakan program görülmektedir. Program her ne kadar kisa ve basit olsa da akis diyagram kavraminin anlasilmasi açisindan programa ait akis diyagrami da asagida verilmistir.

pic programlama
pic 16f84

STATUS REGISTER

PIC mikrodenetleyicisi programlanirken sürekli olarak Status registerinden faydalanilir. Status registeri  8 bitliktir ve program komutlarina göre bu bitler durum degistirirler. Bu register içeriginde Aritmetik Lojik Ünitesinin (ALU) durumu, Reset durumu ve bank seçme bilgileri bulunur.

7. bit – IRP :  Bank seçme bitidir. Bu bit PIC16F84’te kullanilmaz ve sifir olarak kalmalidir.

 

                                                                        0 ise ; Bank 0,1 (H’00’ – H’FF’)

                                                                        1 ise ; Bank 2,3 (H’100’ – H’1FF’)

 

6. bit ve 5. bit  – RP1 : PIC portlarini giris veya çikis olarak tanimlamak için kullanilan bank seçme bitleridir. PIC16F84’te RP1 kullanilmaz ve daima sifir olmalidir. RP0, “0” oldugunda Bank 0’a, “1” oldugunda ise Bank 1’e geçilir.

 

                                                                        00 ise ; Bank 0 (H’00’ – H’7F’)

                                                                        01 ise ; Bank 1 (H’80’ – H’FF’)

                                                                        10 ise ; Bank 2 (H’100’ – H’17F’)

                                                                        11 ise ; Bank 3 (H’180’ – H’1FF’)

 

4. bit – TO (TIME-OUT): Zaman asimi bitidir.

 

                            0 ise ; Watchdog Timer (WDT) zamanlayicisinda zaman doldugunda zaman asimi.

                            1 ise ; PIC’e enerji verildiginde, CLRWDT ve SLEEP komutu çalistiginda zaman asimi.

 

3. bit – PD (POWER-DOWN) : Enerji kesilme bitidir.

 

                            0 ise ; SLEEP modu çalistiginda enerji kesilmesi.

                            1 ise ; PIC’e enerji verildiginde ve CLRWDT komutu çalistiginda enerji kesilmesi.

 

2. bit – Z (ZERO) : Aritmetiksel veya mantiksal islem esitlik bitidir.

 

                            0 ise ; Bir aritmetiksel veya mantiksal islem sonucu “0” olmadiginda bu bit sifirdir.

                            1 ise ;  Bir aritmetiksel veya mantiksal islem sonucu “0” oldugunda bu bit sifirdir.

 

1. bit – DC (DIGIT CARRY/BARROW) : Tasma veya ödünç bitidir.

 

                            0 ise ; Alt dört bitin dördüncü bitinde tasma olmadiginda bu bit “0”dir.

                            1 ise ; Alt dört bitin dördüncü bitinde tasma oldugunda bu bit “1”dir.

 

0 .bit – C (CARRY/BARROW) : Tasma ve ödünç bitidir.

 

                            0 ise ; En soldaki 7. bitte tasma olmadiginda bu bit “0” dir.

                            1 ise ; En soldaki 7. bitte tasma oldugunda bu bit “1” dir.

PIC BASIC PRO UYGULAMALARI DERS KİTABI

1 Comments