Bilgi Paylaşıldığında güzeldir

16 Mart 2013 Cumartesi

16f84-16f84a pic


Neden PIC16F84 ?


PIC16F84 Mikrodenetleyicisinin program belleği flash teknolojisi ile üretilmiştir. Bu teknoloji ile üretilen PIC lere defalarca program yüklenebilir, silinebilir. Flash belleğe sahip PIC lerde (F) harfi; Flash belleği ifade eder.
PIC16F84 Mikrodenetleyicisi, mikrodenetleyici kullanmaya yeni başlayanlar için ideal bir seçimdir.
------------------------------------------------------------------------------------------------------------
PIC16F84 ün Pinleri ve Özellikleri

PIC16F84, 8 bitlik bir Mikrodenetleyicidir, çeşitli işlevleri yerine getirmek amacıyla toplam18 pini vardır.

1,2,3,17,18 numaralı pinler A portu,

6,7,8,9,10,11,12,13 numaralı pinler B portu,

14 numaralı pin pozitif besleme (VDD),

5 numaralı pin şase (VSS),

15,16 numaralı pinler osilatör bağlantıları,

4 numaralı pin ise reset bağlantısı için kullanılmaktadır.

PIC16F84 ün A portu 5 bitB portu 8 bittir.
------------------------------------------------------------------------------------------------------------

PIC 16F84 ün Besleme Bağlantıları:


PIC16F84 e  +5 Voltluk pozitif besleme gerilimi 14 numaralı (VDD) pininden uygulanır, 
şase bağlantısı (-) ise 5 numaralı (VSS) pinine bağlanır. 

PIC e ilk enerji verildiği anda meydana gelebilecek  gerilim dalgalanmaları nedeniyle istenmeyen arızaları önlemek amacıyla VDD ile VSS arasına 100 nF lık bir dekuplaj kondansatörü bağlamak gerekir.
------------------------------------------------------------------------------------------------------------
PIC16F84 ün Giriş/Çıkış Portları:

Giriş/Çıkış Portları; PIC16F84 e buton sensör gibi giriş birimlerinin ve Led, motor, gibi çıkış birimlerinin bağlandığı, PIC16F84 ün çevre birimleri ile iletişimini sağlayan portlardır.

PIC16F84 te 5 adet A Portu8 adet B Portu olmak üzere toplam 13 adet Giriş/Çıkış Portubulunur.

PORTA yı TRISA, PORTB yi TRISB registeri kontrol eder. TRISA ve TRISB registerları portların giriş veya çıkış olarak seçiminde kullanılırlar. 
Bu registerların içeriği 1 yapılırsa giriş
0 yapılırsa çıkış olarak işlev görürler.
------------------------------------------------------------------------------------------------------------


Reset bağlantısı:


PIC16F84 e yüklenmiş herhangi bir programın işlenmesi sırasında sistemi resetlemek için ise 4 numaralı pin kullanılır. 

4 numaralı (MCLR) pinine uygulanan gerilim 0V olunca programın çalışması başlangıç adresine döner. 

Programın ilk adresten itibaren tekrar çalışabilmesi için reset ucuna uygulanan gerilimin +5 V olması gerekir.
------------------------------------------------------------------------------------------------------------

PIC16F84 ün Osilatör Bağlantıları:

PIC16F84 ün herhangi bir programı çalıştırabilmesi için osilatör frekansına ihtiyacı vardır. 
Osilatör bağlantısı için 15 ve 16 numaralı pinler kullanılır.

PIC16F84 te kullanılan osilatör tipleri devrenin çalışma frekansına göre dört çeşittir.
------------------------------------------------------------------------------------------------------------

RC osilatör: 


Direnç ve kondansatörden oluşan osilatördür. Çalışma frekansının hassas olmadığı uygulamalarda kullanılır. 

Mikrodenetleyici devrelerde genellikle kristal (XT) veya RC osilatörler kullanılır.
------------------------------------------------------------------------------------------------------------

XT osilatör: 

Kristal osilatör veya resonatör kullanılır. Zamanlamanın hassas olduğu uygulamalarda kullanılır. 


Kristal iki bacaklı bir elemandır. Kristalin bir bacağı PIC16F84 ün 15 numaralı pinine, 
diğer bacağı ise 16 numaralı pine bağlanır. Ayrıca bu pinlerle şase arasına birer mercimek kondansatör bağlanmalıdır.


Seramik resonatörler içerisinde kristal ve iki adet mercimek kondansatörü hazır olarak bulunduran devre elemanlarıdır. 

Resonatör kullanıldığında; mercimek kondansatör kullanmaya gerek kalmaz.
Resonatörlerin üç bacağı bulunur. Ortadaki bacak şaseye bağlanır. Diğer iki bacak ise; yönlerine bakılmaksızın 15 ve 16. Pinlere bağlanır.


LP osilatör: Düşük frekanslı osilatörlerdir.

HS osilatör: yüksek hızlı kristal veya resonatör osilatörlerdir.
------------------------------------------------------------------------------------------------------------

PIC16F84 ün asgari donanım yapısı:


Mikrodenetleyiciye hangi program yüklenirse yüklensin, PIC16F84 ün asgari donanım yapısı sabittir. 

PIC16F84 ün asgari donanım yapısı aşağıdaki bağlantılarla sağlanır.
  • Besleme bağlantısı (14. pin VDD ve 5.pin VSS)
  • Osilatör bağlantısı (15. ve 16. pinler)
  • Reset bağlantısı (4. pin)
------------------------------------------------------------------------------------------------------------

PIC 16F84 ÜN BELLEĞİ

PIC16F84 ün belleği, program belleği ve RAM belleği olmak üzere iki ayrı bellekten oluşur.

Program Belleği:

PIC16F84 ün 1 KByte lık program belleği vardır. 
Herbir bellek hücresi içerisine 14 bit uzunluğundaki komutlar depolanır.

Program Belleği Haritası


PIC16F84 ün program belleği içinde sadece assembly komutları saklanır.

NOT: Şekilde bellek adresleri hexadesimal sayılarla gösterilmiştir. 0x ifadesi yanına yazılan sayının hexadesimal olduğunu belirtir.

PIC16F84 ün program belleğine 14 bit uzunluğunda toplam 1024 tane komut yazılabilir.
------------------------------------------------------------------------------------------------------------
RAM Bellek:

PIC16F84 ün RAM belleği içerisinde bulunan file registerlar PIC in çalışmasını kontrol ederler. 
File registerların bellek uzunluğu 8 bittir
File registerların dışında kalan diğer bellek alanları programlardaki değişkenler için kullanılır.

                          RAM Bellek Haritası


PIC16F84 ün RAM belleği 2 bölümden oluşur. Bu bölümlere bank adı verilir. 

Bank0 daki registerların adresleri 0x00 ile 0x4F arasında, 
Bank1 deki registerların adresleri de  0x80 ile 0xCF arasındadır.

PIC16F84 te toplam 80 tane file register vardır. 
Bir Banktaki registerı kullanabilmek için, o banka geçmek gerekir.

Bazı özel registerlar her iki bankta da bulunur. Bunun nedeni; bank değiştirme işlemine gerek duyulmaksızın kullanılabilmeleri içindir.
------------------------------------------------------------------------------------------------------------

W Registerı:

PIC16F84 ün RAM Belleğinde görünmeyen birde W Registerı vardır. W registerı bir geçici depolama alanıdır.

Bir PIC te gerçekleşen tüm aritmetik işlemler ve atama işlemleri için W Registerı kullanma zorunluluğu vardır.

Örneğin: İki register içindeki veriler toplanmak istendiğinde; ilk olarak registerlardan birinin içeriği W registerına yüklenir. 
Sonra diğer registerın içindeki veri, W Registerının içindeki veriyle toplanır.

------------------------------------------------------------------------------------------------------------

PIC ASSEMBLY DİLİ



Assembler nedir? , PIC Assembly yazım kuralları nelerdir? , PIC Assembly komutlarının yazılış biçimleri, Sayı ve karakterlerin yazılış biçimi, Konfigürasyon tanımlama.

Assembler, assembly dili kurallarına göre yazılmış olan komutları, PIC in anlayabileceği hexadesimal komutlara dönüştüren bir programdır. 

MPASM bu işi yapan assembler programıdır. Assembler a Compiler (derleyici) de denmektedir.

PIC Assembly dili yazım kuralları

MPLAB ta assembly dilinde yazılan programın MPASM tarafından hexadesimal kodlara dönüştürülebilmesi için şu bilgiler program içine özel formatta yazılmalıdır.
  • Komutların hangi PIC16XX için yazıldığı.
  • Programın bellekteki hangi adresten başlayacağı.
  • Komutların ve etiketlerin neler olduğu.
  • Programın bitiş yeri.
Noktalı virgül (;)
;  ile başlayan satır assembler tarafından hexadesimal kodlara dönüştürülmez. 
Bu satırlar programın geliştirilmesi esnasında hatırlatıcı açıklamaların yazılmasında kullanılır.
------------------------------------------------------------------------------------------------------------
Bir assemly program temel olarak 4 bölümden oluşur. 
Bunlar; başlık atama, program ve sonuçtur.
------------------------------------------------------------------------------------------------------------

Assembly Programı Bölümleri
Başlık:
Programın en başındaki bölümdür.
Etiketler:
Program akışının istenilen bir yere dallanmasını sağlamak amacıyla kullanılır.

Örneğin; 
Program akışı devam ederken;       


komutu ile program akışı;  


etiketine dallandırılır.

Etiketlerin yazılmasında şu kurallara uyulur.
  • Etiketler harfle veya alt çizgi _ ile başlamalıdır.
  • Etiketlerde Türkçe karakter kullanılamaz.
  • Etiketler bir assembly komutundan oluşamaz.
  • Etiketlerde BÜYÜK / küçük harf duyarlılığı vardır.
------------------------------------------------------------------------------------------------------------
Atama deyimi (EQU):
------------------------------------------------------------------------------------------------------------
Sabitler:   
   
PIC assembly dilinde hexadesimal sayılar birer sabittir.

------------------------------------------------------------------------------------------------------------
ORG Deyimi:

Program komutunun hangi adresten itibaren başladığını gösterir.

------------------------------------------------------------------------------------------------------------
Sonlandırma Bloğu:
Programı belirli bir yerde duraklatmak için sonsuz döngü kullanılabilir.


yukarıdaki sonsuz döngüde;

 
etiketine assembler otomatik bir adres verir.

komutu ise program akışını devamlı aynı adrese gönderir. 
Böylece program duraklatılmış olur.

deyimi programın sona erdiğini bildirir. 
Her program sonunda kullanılmalıdır. Aksi halde program hata mesajı verir.
------------------------------------------------------------------------------------------------------------

BÜYÜK / küçük harlerin kullanımı:
Assemly komutlarının büyük veya küçük harfle yazılması önemli değildir.
Ancak etiketler BÜYÜK / küçük harfe duyarlıdır.

Herhangi bir karışıklığa neden olmaması için hep büyük yada hep küçük harf kullanmak en iyi seçimdir.
------------------------------------------------------------------------------------------------------------

Sayıların yazılış biçimi:

PIC Assembly komutlarında  binary sayılar;   b ‘00001111’  biçiminde,

Desimal sayılar;  d ‘16’  biçiminde,

Hexadesimal sayılar ise;   0xFF   yada   h ‘FF’   biçiminde yazılır.

------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
PIC Assembly Komutlarının Yazılış Biçimi:

PIC16F84 ün toplam 35 tane komutu vardır. 
Bu komutların yazılış biçimi 4 gurupta toplanabilir.
  1. Byte yönlendirmeli komutlar.
  2. Bit yönlendirmeli komutlar.
  3. Sabit işleyen komutlar.
  4. Kontrol komutları.

Bu arada bit – byte kavramları ile ilgili kısa bir bilgi vermek gerekirse;

Bit; bilişimde kullanılan en küçük bilgi birimidir. 
Byte ise; 8 bit'in bir araya gelmesiyle oluşan veri topluluğudur.


Byte'ın diğer veri boyut birimlerine dönüşümü ise şöyledir:

               8 Bit 1Byte
 1024 Byte = 1 KiloByte [KB]
   1024 KB = 1 MegaByte [MB]
  1024 MB 1 GigaByte [GB]
   1024 GB = 1 TeraByte [TB] 



------------------------------------------------------------------------------------------------------------
1. Byte yönlendirmeli komutlar:


Örnek:

------------------------------------------------------------------------------------------------------------

2. Bit yönlendirmeli komutlar:

Örnek:
------------------------------------------------------------------------------------------------------------

3. Sabit işleyen komutlar:

Örnek:
------------------------------------------------------------------------------------------------------------
4. Kontrol komutları:


Örnek:

NOT: Program içerisine yazılan etiketlere assembler otomatik olarak adres vermektedir.
------------------------------------------------------------------------------------------------------------

Konfigürasyon Tanımlama: ( __CONFIG )

PIC’ e gerilim uygulandığı anda PIC’ in uyması gereken koşulları belirlemede kullanılır.

Konfigürasyon satırında PIC programlamada kullanılan koşullar şunlardır:

------------------------------------------------------------------------------------------------------------
Bu komut yazılırken; CONFIG komutunun önünde iki alt çizgi bulunur. Ve her bir koşul tanımı arasında bir boşluk ve & işareti bulunur.


Örnek:

Örnekte; Kod koruma olmayacak, Watchdog timer devrede değil, PIC' e enerji verildiğinde reset yapılacak ve XT Osilatör kullanılacak şeklinde koşullar belirlenmiştir.
------------------------------------------------------------------------------------------------------------

AKIŞ DİYAGRAMI NASIL ÇİZİLİR?


Programı yazmadan önce akış diyagramını çizmek, görsel bir düşünme ortamı oluşmasını sağlar.

Akış diyagramı sembolleri 
tüm programlama dilleri için geçerlidir.


Bu sembolleri kullanarak ve ok işaretleriyle yönlendirmeler yapılarak akış diyagramları çizilir. Semboller 


içerisine kısa hatırlatıcı bilgiler yazılarak programın anlaşılabilirliği sağlanır.

Akış diyagramı çizmek program için zorunlu değildir, sadece programcının yazdığı programla ilgili daha iyi 


düşünmesine ve programı geliştirmesine yardımcı olur.


AKIŞ DİYAGRAMI SEMBOLLERİ

------------------------------------------------------------------------------------------------------------

PIC'LERE PROGRAM YÜKLEME NASIL YAPILIR?


Assembly dilinde yazılan bir program; PIC' lere aşağıda tarif edildiği gibi yüklenmektedir.



PIC Mikrodenetleyicisine program yükleme işlemi birkaç aşamada gerçekleştirilir;
  • PIC programı öncelikle bir metin editöründe yazılır. Yazılan program (.asm) uzantılı olarak kaydedilir. (.asm) uzantısı programın Assembly dilinde yazıldığını belirtmektedir.
          Biz programı yazmak için metin editörü olarak MPLAB metin editörünü kullanacağız.
  • Yazılan assembly programı bir derleyici ile (.hex) uzantılı heksadesimal koda çevrilir.
 (.asm) uzantılı yazdığımız programı (.hex) kodlara çevirmek için MPASM programını kullanacağız. 

Bu programlar PIC üretici Microchip firmasının internet sayfasında ücretsiz olarak kullanıma sunulmuştur. (www.microchip.com)
  • Bir PIC programlayıcı devre aracılığıyla (.hex) dosyası PIC e yüklenir.
 (.hex) kodlara dönüştürülen programı USB PIC Programlayıcı aracılığı ile PIC e yükleyeceğiz.

------------------------------------------------------------------------------------------------------------
***ÖRNEK PROGRAMLAR***
------------------------------------------------------------------------------------------------------------


1.PROGRAM (assembly): 
PIC’ e enerji verildiğinde, PORTB’ nin 0. Bitine bağlı LED’ i yakan program. 
(PIC 16F84)

PROGRAMIN AKIŞ DİYAGRAMI:


------------------------------------------------------------------------------------------------------------

BANK DEĞİŞTİRME İŞLEMİ:

------------------------------------------------------------------------------------------------------------
PORTA ve PORTB' nin giriş veya çıkış yapılması TRISA ve TRISB registerları sayesinde gerçekleşir.

TRISA 0 yapılırsa; PORTA çıkış olur.
TRISA 1 yapılırsa; PORTA giriş olur.

TRISB 0 yapılırsa; PORTB çıkış olur.
TRISB 1 yapılırsa; PORTB giriş olur.

TRISA ve TRISB registerlarını kullanabilmek için; Bank değiştirmek gerekir.

BANK değiştirmek için STATUS registeri kullanılır.

------------------------------------------------------------------------------------------------------------

STATUS registerinin 5. biti 0 yapılırsa; BANK0 seçilmiş olur.

------------------------------------------------------------------------------------------------------------

STATUS registerinin 5. biti 1 yapılırsa; BANK1 seçilmiş olur.

------------------------------------------------------------------------------------------------------------

PORTB' nin 0. bitini 1 yaparsak, buraya bağlanan LED' in yanmasını sağlar.

------------------------------------------------------------------------------------------------------------
ASSEMBLY PROGRAMI:

------------------------------------------------------------------------------------------------------------

PROGRAM KOMUTLARININ AÇIKLAMALARI:


------------------------------------------------------------------------------------------------------------
DEVRE BAĞLANTI ŞEMASI:

------------------------------------------------------------------------------------------------------------
DEVRE SİMULASYONU:


------------------------------------------------------------------------------------------------------------

2.PROGRAM (assembly):
Devreye enerji verildiğinde PORTB' nin 3. bitine bağlı LED' i yakan program. 
(PIC 16F84)

ASSEMBLY PROGRAMI: 


------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------

DEVRE BAĞLANTI ŞEMASI:

------------------------------------------------------------------------------------------------------------
DEVRE SİMULASYONU:

------------------------------------------------------------------------------------------------------------

3.PROGRAM (assembly):
Devreye enerji verildiğinde PORTB' ye bağlı tüm LED' leri yakan program. (PIC 16F84)

ASSEMBLY PROGRAMI: 

------------------------------------------------------------------------------------------------------------
PROGRAM KOMUTLARININ AÇIKLAMALARI:


------------------------------------------------------------------------------------------------------------
MOVLW KOMUTU

------------------------------------------------------------------------------------------------------------

MOVWF KOMUTU

------------------------------------------------------------------------------------------------------------


------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
DEVRE SİMULASYONU:


------------------------------------------------------------------------------------------------------------

Bu programda tüm LED' lerin yanması istendiğinden W Registeri içerisine 0xFF sayısı yüklenmiştir.

0xFF sayısının binary karşılığı b '1111 1111'  dir. 
İstenirse böyle de yazılabilir. ( MOVLW    b '11111111' )

Bu sayı PORTB' nin tüm bitleri 1 anlamına gelir. Ve tüm LED' ler yanar.

Programda yanması istenen LED' lerin bağlı olduğu bitler 1 yapılarak Program değiştirilebilir.
------------------------------------------------------------------------------------------------------------

Örneğin: 
PORTB' ye bağlı ilk 4 LED' in sönükson 4 LED' in yanık olması isteniyorsa;

Komut satırına;  MOVLW  0xFF  yerine  MOVLW  0xF0  yazılması gerekir. 
Veya MOVLW   b '11110000' yazılabilir.
------------------------------------------------------------------------------------------------------------

Örneğin: 
Komut satırına;  Hexadesimal olarak:  MOVLW  0xAA   veya  
binary olarak:  MOVLW    b '10101010'  yazılırsa; 
PORTB' ye bağlı LED' lerin  biri yanık, biri sönük olduğu gözlenir.

8 yorum:

Unknown dedi ki...

super olmuş teşekkrler çok etkılı gercekten :)

Adsız dedi ki...

Bundan daha güzel anlatılmaz.Çok teşekkür ederim.

Unknown dedi ki...

çok teşekkürler harika bir anlatım

Unknown dedi ki...

Mukemmel anlatım

Unknown dedi ki...

Mukemmel anlatım

Adsız dedi ki...

porfect

agahgg dedi ki...

Hocam şu 35 komutun tamamını o tatlı anlatımınızla bi açıklasanız cennetin anahtarını alırsınız...

Fatih ARAR dedi ki...

Anlatım fevkalade sizi tebrik ederim.