Mikroişlemciler

|

MİKROİŞLEMCİLER

Mikroişlemciler bilgisayar programlarının yapmak istediği tüm işlemleri yerine getirdiği için, çoğu zaman merkezi işlem ünitesi (CPUCentral Processing Unit) olarak anlandırılır.PC adı verdiğimiz kişisel bilgisayarlarda kullanıldığı gibi, bilgisayarla kontrol edilen sanayi tezgahlarında ve ev aygıtlarında kulanılabilmektedir.Bir mikroişlemcinin işlevini yerine getirebilmesi için aşağıda ki yardımcı elemanlara ihtiyaç duyar;

1-Input (giriş) ünitesi

2-Output (çıkış) ünitesi

3-Memory (bellek) ünitesi

Bu üniteler CPU chip’inin dışında, bilgisayarın ana kartı üzerinde bir yerde farklı chip’ler den veya elektronik elemanlardan oluşur.Aralarında ki iletişimi ise veri yolu (Data Bus), adres yolu (Adress Bus) deni-len iletim hatları yapar.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image002.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image005.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image007.gif[/IMG]

Bir Mikroişlemci Sisteminin Temel Bileşenlerinin Blok Diyagramı

MİKRODENETLEYİCİ

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image008.gif[/IMG]Bir bilgisayar içerisinde bulunması gereken temel bileşenlerden RAM, I/O ünitesinin tek bir chip içerisinde üretilmiş biçimine mikrodenetleyici (Microcontroller) denir.Bilgisayar teknolojisi gerktiren uygulamalarda kullanılmak üzere tasarlanmış olan mikrodenetleyiciler, mikroişlemcilere göre çok daha basit ve ucuzdur.Günümüz de mikrodenetleyiciler, otomobillerde,kameralarda,cep telefonlarında,fotokopi,tv ve bazı oyuncaklarda kullanılmaktadır.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image009.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image010.gif[/IMG]

Bir Mikrodenetleyici Sisteminin Temel Bileşenlerinin Blok Diyagramı

MİKRODENETLEYİCİLER HAKKINDA GENEL BİLGİLER

Mikroişlemci üreticilerinin ürettiği birkaç mikrodenetleyici bulunmaktadır. Her firma ürettiği chip’e bir isim ve özelliklerini belirlemek için de parça numarası olarak da 12C508,16C84,16F84,16C711 gibi kodlamalar vermektedir.

Bir uygulamaya başlamadan önce hangi firmanın ürünü kullanılacağına, daha sonrada hangi numaralı denetleyicinin kullanılacağına karar vermek gerekir.

Bir mikrodenetleyici kullanmadan önce şu özellikler dikkate alınır ;

1-Programlanabilir dijital paralel giriş/çıkış

2-Programlanabilir analog giriş/çıkış

3- Seri giriş/çıkış (senkron, asenkron ve cihaz yönetimi)

4-Motor veya servo kontrol için pals sinyali çıkışı

5-Harici giriş vasıtasıyla kesme

6-Harici bellek arabirimi

7-Harici bus arabirimi (PC ISA gibi)

8-Dahili bellek tipi seçenekleri (ROM, EPROM, PROM, EEPROM)

9-Dahili RAM seçeneği

10-Kayan nokta hesaplaması

PIC’İN KULLANILMA SEBEPLERİ

Bilgisayar denetimi gerektiren bir uygulamayı geliştirirken seçilecek mikrodenetleyicinin ilk olarak tüm isteklerimizi yerine getirip getirmeyeceğine ve maliyetinin düşük olmasına dikkat edilmelidir. Ayrıca yapacağımız uygulamanın devresini kurmadan önce seçtiğimiz mikrodenetleyicinin desteklediği bir yazılımın üzerinde simülasyonunun yapılıp yapılmayacağı dikkate alınmalıdır.

PIC, adını ingilizcede ki Peripheral Interface Controller cümlesinde ki kelimelerin baş harflerinden almış olan bir mikrodenetleyicidir.Türkçesi, “çevresel üniteleri denetleyici arabirim” dir.PIC lamba, motor, röle, ısı ve ışık sensörü gibi I/O elemanların denetimini çok hızlı şekilde dizayn edilmiş bir chip’tir.RISC mimarisi adı verilen bir yöntem kullanılarak üretildiklerinden, bir PIC’i programlamak için kullanılacak komutlar oldukça basit ve azdır.Örneğin; PIC16F84 mikrodenetleyicisi toplam 35 komut kullanılarak programlanabilmektedir.

Burada PIC16F84’ ün programlanması hakkında bilgi verilecektir.Çünkü, PIC16F84 (veya 16F84A) mikrodenetleyicisinin program belleği flash teknolojisiyle üretilmiştir.Flash memory teknolojisiyle üretilen bir belleğe yüklenen bir program, chip’e uygulanan enerji kesilse bile

silinmez.Yine bu tip belleğe istenirse program yeniden yazılabilir.Aynı zamanda PIC16F84’ ün programlama donanımı çok ucuz ve kullanışlıdır.

PIC PROGRAMLAMAK İÇİN GEREKLİ DONANIMLAR

1-IBM uyumlu bilgisayar

2-Bir metin editörünün kullanılmasını bilmek

3-PIC assembler programı

4-PIC programlayıcı donanımı

5-PIC programlayıcı yazılımı

6-Programlanmış PIC’in çalışmasını görmek için PIC deneme kartı

IBM UYUMLU BİLGİSAYAR

Assembly program kodlarını kolayca yazmak, doğru ve hızlı bir şekilde PIC’ in program belleğine göndermek için,bilgisayara ihtiyaç vardır.Bir metin editörü kullanarak yazılan program kodları, derlendikten sonra PIC’e gönderilmesi gerekir.Program kodlarının PIC’e yazdırma işlemi paralel veya seri porta bağlanan PIC programlama kartı ile yapılır.Bu işleri yapabilmek için gereken minumum konfigürasyonlar;

1-DOS veya WINDOWS işletim sistemi

2-Basit bir editör (Edit, Notpad gibi)

3-Minumum 80486 CPU, 4 MB RAM, 100 MB harddisk ve CD-ROM sürücüsü

METİN EDİTÖRÜ

Assembly dili komutlarını yazıp bir metin dosyası oluşturmak için EDIT veya NotPad gibi bir editör kullanılır.İstenirse .ASM uzantılı metin dosyalarını yazabileceğimiz PFE editörü de kullanılabilir.Bu editörün hem DOS hem de WINDOWS altında çalışan versiyonları bulunmaktadır.

ASSEMBLY PROGRAMI

PIC, Assembly dili adı verilen ve toplam 35 komuttan oluşan bir programlama dilidir.Bu dilin komutlarını PIC’ in anlayabileceği makine diline çeviren bir program daha gereklidir. Text dosyası biçiminde kaydedilmiş olan assembly dili komutlarını makine diline çeviren program MPASM programıdır.

PIC PROGRAMLIYICI DONANIMI

Makine diline çevrilmiş program kodlarını PC’ den alıp PIC 16/17 mikrode-netleyicisine yazmak için bir elektronik devreye ihtiyaç vardır.Bu elektronik devre, bir çok üretici firma tarafından piyasada satılmaktadır.

PIC PROGRAMLAYICI YAZILIMI

MPASM tarafından derlenerek makine diline dönüştürülmüş assembly programı kodlarının PIC’e yazdırılmasında kullanılan bir programa ihtiyaç vardır.Programlayıcı yazılımları , PIC’ i programlamak için kullanılan elektronik karta bağımlıdır.

PROGRAMLANMIŞ PIC’ LERİ DENEMEK İÇİN GEREKLİ MALZEMELER

Bir PIC!i programladıktan sonra yapılacak bir uygulama devresi üzerinde denemek gerekir. Denemenin amacı, gerçek uygulama devresine PIC’i bağlamadan önce fazla zaman,emek, para harcamadan bir ön çalışma yapmaktır.Eğer devrenin çalışmasında bir aksaklık görülürse, geriye dönüp yeniden programlama yapılır.

PIC DONANIM ÖZELLİKLERİ

PIC ÇEŞİTLERİ

PIC ailelerine isim verilirken kelime boyu ( Word Lenght ) göze alınmıştır. Mikrodenetleyiciler kendi içlerinde ki dahili veri saklama alanları olan registerleri arasında ki veri alışverişini 16 – bit ile yaparken, Pentium işlemcileri 32 – bit’lik verilerle iletişim kurarlar. Bir CPU veya MCU’nun dahili veri yolu uzunluğuna kelime boyu denir.

Mikrochip, PIC’leri 12/14/16 bitlik kelime boylarında üretmektedir. Mikrochip’in, ürettiği mikrodenetleyiciler 4 farklı gruba ayrılır:

1-PIC16C5XX ailesi 12- bit kelime boyu

2-PIC16CXXX ailesi 14- bit kelime boyu

3-PIC17CXXX ailesi 16- bit kelime boyu

4-PIC12CXXX ailesi 12- bit/14 bit kelime boyu

Bir CPU veya MCU’nun chip dışındaki harici ünitelerle veri alışverişini kaç bit ile yapıyorsa buna veri yolu bit sayısı denir.PIC’ler farklı kelime boylarında üretilsede harici veri yolu tüm PİC’lerde 8-bittir.

PİC programlayıcıları program kodlarını yazarken bir komutun kaç bitlik bir kelime boyundan oluştuğuyla ilgilenmezler. Seçilen bir PIC’i programlarken uyulması gereken kuralları ve o PIC ile ilgili özelliklerin bilinmesi yeterlidir. Bu özellikler PIC’in bellek miktarı, I/O portu sayısı, A/D dönüştürücüye sahip olup olmadığı, kesme ( interrupt ) fonksiyonlarının olup olmadığı, bellek tipinin ne olduğu ( Flash, EPROM, EEPROM vb. ), gibi bilgilerdir.

Çeşitli PİC’lerin özellikleri aşağıdaki tabloda verilmiştir ;

FAMİLY ARCHİTECTURAL FEATURES

NAME

TECHNOLOGY

PRODUCTS

PIC17CXXX

8 Bit High- Perfor- mance MCU Family -16-bit wide instruction set -Internal / external vectored interrupts -DC-25 MHz clock speed -120 ns instruction cycle (@ 33 MHz) -Hardware multiply PIC17C4X OTP program memory, dıgıtal only PIC17C42A,PIC17C43,PIC17C44 PIC17CR4X ROM program memory, dıgıtal only PIC17CR42,PIC17CR43 PIC17C75XX OTP program memory wıth mixed-signal functions PIC17C756 PIC16CXXX

8-bit MidRange MCU Family -14-bit wide instruction set – Internal/external interrupts -DC-20 MHz clock speed -200 ns instruction cycle (@ 20 MHz) PIC14CXX OTP program memory wıth A/D and D/A functions PIC14C000 PIC16C55X OTP program memory, dıgıtal only PIC16C554,PIC16C556,PIC16C558 PIC16C6X OTP program memory, dıgıtal only PIC16C62,PIC16C62A, PIC16C63,PIC16C64, PIC16C64A,PIC16C65,PIC16C65A PIC16C66,PIC16C67 PIC16CR6X ROM program memory, dıgıtal only PIC16CR62,PIC16CR63, PIC16CR64,PIC16CR65 PIC16C62X OTP program memory With comparators PIC16C620,PIC16C621,PIC16C622 PIC16C7X OTP program memory wıthanalog functions (i.e. A/D) PIC16C710,PIC16C71,PIC16C711, PIC16C715, PIC16C72,PIC16C73, PIC16C73A, PIC16C74,PIC16C74A, PIC16C76,PIC16C77 PIC16F8X Flash program and EEPROM data memory PIC16C84 PIC16F83,PIC16F84 PIC16CR8X ROM program and EEPROM data memory PIC16CR83,PIC16CR84 PIC16C9XX OTP program memory, LCD driver PIC16C923,PIC16C924 PIC16C5X

8-bit Baseline MCU FAMİLY -12-bit wide instruction set -DC-20 MHz clock speed -200 ns instruction cycle (@ 20 MHz) PIC16C5X PIC16C5XA OTP program memory, dıgıtal only PIC16C52,PIC16C54,PIC16C54A, PIC16C55,PIC16C56,PIC16C57, PIC16C58A PIC16CR5X PIC16CR5XA ROM program memory, dıgıtal only PIC16CR54A,PIC16CR57B, PIC16CR58A PIC12CXXX 8-bit-8 Pin MCU Family -12 or 14-bit wide instruction set -DC-20 MHz clock speed -1000 ns instruction cycle (@ 4 MHz PIC12C5XX OTP program memory, dıgıtal only PIC12C508,PIC12C509 PIC12C67X OTP program memory wıth analog functions PIC12C671,PIC12C672

FAMİLY: PIC’ler program belleğini kelime genişliğine göre sınıflara ayrılmıştır.Bu sınıflardan her birine family (aile) denir. ARCHİTECTURAL FEATUARES: Kelime genişliği saat frekansı, kesme özellikleri gibi bilgilerin verildiği sütun.

NAME: Bir aile içinde farklı özellikte üretilenlerin isimleri

TECNOLOGY: Program ve data belleğini belirten sütun

PRODUCTS: PIC’in anma adı

PIC BELLEK ÇEŞİTLERİ PIC’lerin farklı özellikte bellekleri vardır.Bunlar ;

1-Silenebilir ve programlanabilir bellek (Erasable PROgrammable Memory-EPROM)

2-Elektriksel olarak silinebilir olarak silinebilir ve programlanabilir belllek (Electrically

Erasable PROgrammable Memory-EEPROM).FLASH bellek de denir.

3-Sadece okunabilir bellek. (Read Only Memory-ROM)

Her bir bellek tipinin kullanılacağı uygulamaya göre avantajları vardır.

PIC16F84

RA2 RA3 RA4 MCRL Vss RB0 RB1 RB2 RB3

TOCK1 INT

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image012.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image013.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image013.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image013.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image013.gif[/IMG] 1 2 3 4 5 6 7 8 9

18 17 16 15 14 13 12 11 10

RA1 RA0 OSC OSC Vdd RB7 RB6 RB5 RB4

CLKIN CLKOUT

PIC16F84’ÜN GÖRÜNÜŞÜ

CMOS teknolojisiyle üretilmiş olan PIC16F84 çok az enerji harcar. Flash belleğe sahip olması nedeniyle clock girişine uygulanan sinyal kesildiğinde registerleri içersin de ki veri aynen kalır. Clock sinyali tekrar verildiğinde PIC içersinde ki program, kaldığı yerden devam eder. RA0 – RA3 pinleri ve RB0 – RB7 pinleri I/O portlarıdır. Bu portlardan girilen dijital sinyaller vasıtasıyla PIC içersinde çalışan programa veri girilmiş olur. Program verileri değerlendirerek portları kullanmak suretiyle dış ortama sinyaller gönderir. Dış ortama gönderilen sinyallerin akımı yeterli olmadığı durumda, yükselteç devreleri ( Röle,Transistör, vb.. ) ile yükseltilerek kumanda edilecek cihaza uygulanır. Bu akımlar bir led sürebilecek yeterliliktedir;

I/O pini I/O pini

SİNK AKIMI 25 mA SOURCE AKIMI 20 mA

13

PIC16F84

13

PIC16F84

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image015.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image016.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image017.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image018.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image019.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG]Gerilim kaynağından çıkış portuna doğru akan akıma sink akımı,I/O pininden GND’ye doğru akan akımada source akımı denir.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image021.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image022.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image021.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image023.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image024.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image025.gif[/IMG] Sink Akımı Source Akımı

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image026.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image027.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image028.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image019.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG]+5 V

RB7 RB7

PIC16F84’ün çektiği akım,besleme gerilimine,clock girişine uygulanan sinyalin frekansına ve I/O pinlerinde ki yüke bağlı olarak değişir.Tipik olarak 4 MHz’lik clock frekansında çektiği akım 2 mA kadardır. Bu akım uygulama modunda (Sleep Mode) yaklaşık olarak 40 mikroampere kadar düşer.

BESLEME GERİLİMİ

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image029.gif[/IMG] 14 Vdd

PIC16F84

5 Vss [IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image030.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image032.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image033.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG] +5 volt

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image034.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image035.gif[/IMG] 0,1 μF

PIC’ in besleme gerilimi 5 ve 14 nolu pinlerden uygulanır.5 nolu Vdd ucu +5 V’ta , 14 nolu Vss ucu toprağa bağlanır.PIC’e ilk defa enerji verildiğinde meydana gelebilecek gerilim dalgalanmaları nedeniyle is-tenmeyen arızaları önlemek amacıyla Vdd ile Vss arasına 0,1 μF’lık bir dekuplaj kondansatörü bağlamak gerekir.

CLOCK UCLARI ve CLOCK OSİLATÖRÜ ÇEŞTLERİ

PIC belleğinde bulunan program komutlarının çalıştırılması için bir kare dalga sinyale ihtiyaç vardır. Bu sinyale clock (saat) sinyali denilir.PIC16F84 ‘ün clock sinyali için kullanılan iki ucu vardır.Bunlar 16 nolu uç OSC1 ve 15 nolu uç OSC2 ‘dir.Bu uclara farklı tipte osilatörlerden elde edilen clock sinyalleri uygulanabilir.Clock osilatör tipleri 4’ eayrılır ;

1-RC (Direnç / kondansatör)

2-XT (Kristal veya seramik resonatör)

3- HS (Yüksek hızlı kristal veya seramik resonatör)

4- LP (Düşük frekanslı kristal)

Seçilecek olan osilatör tipi PIC’in kontrol ettiği devrenin hız gereksinimine bağlı olarak seçilir. Kul-lanılan osilatör tiplerinin kullanılacağı frekans sınırları ;

Osilatör Tipi Frekans Sınırı

RC 0-4 MHz

LP 5-200 KHz

XT 100 KHz-4 MHz

HS(-04) 4 MHz

HS(-10) 4-10 MHz

HS(-20) 4-20 MHz

PIC’e bağlanan clock osilatörün tipi proglama esnasında PIC içersinde bulunan konfigürasyon bitle-rine yazılmalıdır.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG]+5V

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image037.gif[/IMG] RC CLOCK OSİLATÖRÜ :

PIC16F84

15 OSC1

16 OSC2

R

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image038.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image039.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG] PIC’ in kontrol ettiği elektronik devrede ki zamanlamanın

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image040.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image041.gif[/IMG] C hassas olması gerekmeyen yerlerde kullanılır.Belirlenen değerden

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image042.gif[/IMG] fosc/ 4 yaklaşık %20 sapma gösterir.

KRİSTAL KONTROLLÜ CLOCK OSİLATÖRLERİ :

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image032.gif[/IMG] +5 V Zamanlamanın çok hassas olduğu devrelerde

PIC16F84

15 OSC1

16 OSC2

kullanılır.Bu tip clock osilatörleri metal bir kutu görü-

nümündedir.Bu tip osilatör devrelerine kondansatör

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image043.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image044.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG] 4 MHz Clock Osilatör

bağlantısı gerekmez.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image045.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image046.gif[/IMG]

1 7

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image030.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image047.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image048.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image019.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image019.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image049.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image049.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image047.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image047.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image050.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image015.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image015.gif[/IMG] PIC16F84

15 OSC1

16 OSC2

KRİSTAL VE KONDANSATÖR

Zamanlamanın önemli olduğu yerlerde kullanılır.

Kristal osilatörlerin kullanıldığı devrede kristale bağlanacak

C1 kondansatörün seçimine özen göstermek gerekir.

Seçilen kondansatör değerlerinin yanlış seçilirse

elde edilen kare dalgaların bozuk olmasına ve PIC’in çalış-

Kristal mamasına neden olur.C1 ve C2 kondansatörlerinin değer-

leri birbirine eşit olmalıdır.

C2

SERAMİK RESONATÖRLER

İçersinde kondansatörleri hazır bulunan kristal osilatörlerdir.Fiyatları ucuz ve hassastırlar.3 ucu vardır.Bu uçlardan orta uç toprağa, diğer iki uç OSC1 ve OSC2 uçlarına bağlanır.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image051.gif[/IMG]RESET UÇLARI ve RESET DEVRESİ

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image052.gif[/IMG]

+5 V

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image053.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image054.gif[/IMG] [IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image019.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image055.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image056.gif[/IMG] 10 K

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image030.gif[/IMG] PIC16F84

MCLR

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image057.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image038.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image058.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image038.gif[/IMG] PIC16F84’ün besleme uçlarına gerilim uygulandığı anda

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image047.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image057.gif[/IMG] bellekteki programın başlangıç adresinden itibaren çalışmasını

sağlayan bir reset devresi vardır.Bu reset devresi PIC içersin-

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image059.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image049.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image060.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image014.gif[/IMG] 100Ω dedir ve Power-on-Reset denir

MCLR ucu ise kullanıcının programı kesip, kasti olarak

başlangıca döndürebilmesi için kullanılır.PIC’in 4 nolu MCLR

ucuna uygulanan gerilim 0 V olunca, programın çalışması baş-

langıç adresine döner.Programın ilk adresten itibaren tekrar

Reset Butonu çalışabilmesi için reset ucuna uygulanan gerilimin +5 V olması

gerekir.Bir buton aracılığıyla reset işlemini yapan devre şekil-

de görülmektedir.

I / O PORTLARI PIC16F84 ‘ün 13 adet giriş/çıkış portu vardır.Bunlardan beş tanesine A portu (RA0-RA4), sekiz tanesine de,B portu (RB0-RB7) denir.13 portun her biri giriş yada çıkış olarak kullanılabilir.PIC içersinde TRIS denilen özel bir data yönlendirme registeri vardır.Bu register aracılığıyla portların giriş/çıkış yönlendirmesi yapılır.

I/O portlarından geçebilecek 25 mA’lik bir sink akımı veya 20mA’lik source akımı ledleri doğrudan sürebilir.Bu akımlar aynı zamanda LCD,lojik entegre hatta 220 V’luk şehir şebekesine bağlı bir lambayı kontrol eden triyakı bile tetiklemeye yeterlidir.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image061.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image062.gif[/IMG]

220 V

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image036.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image049.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image063.gif[/IMG] Triyak

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image064.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image065.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image031.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image011.gif[/IMG] Led Lamba

PIC16F84’ün portlarıyla kontrol edilen 220 V’luk lamba ve led PIC16F84’ün B port uçlarının dahili olarak

pull-up yapılması

B portunun 8 nolu ucu, PIC içersinde dahili olarak 50 KΩ’ luk dirençlerle pull-up yapılmış gibi etki gösterir.Bu durum şekilde temsili olarak görülmektedir.PIC’in içersinde gerçekte bir pull-up direnci değil, farklı bir mantıksal devre vardır.

Bu 8 nolu ucun pull-up direncinin tamamı option register içersindeki yazılım aracılığıyla iptal (Disab-le) edilebilir veya geçerli (Enable) kılınabilir.Port uclarından herhangi birisi çıkış olarak yönlendirildiğinde o uçtaki pull-up direnci otomatik olarak iptal edilir.PIC’e enerji verildiğinde (Power-on-reset) ise tüm pull-up’lar iptal edilir.

A portunun 4. biti,TOCK1 adı verilen harici timer/counter giriş ucu ile ortaklaşa kullanılır.Bu nedenle 16F84’ün pin görünüşü üzerinde 3 nolu pin ucu RA4/TOCK1 yazılmıştır.RA4 ucu çıkış olarak yönlendirildi-ğinde açık kollektör özellğinden dolayı harici olarak muhakkak bir pull-up direncine bağlanmalıdır.

PIC16F84’ÜN BELLEĞİ PIC16F84 mikrodenetleyicisinin belleği, program ve RAM belleği olmak üzere iki ayrı bellek bloğun-dan oluşur.

PROGRAM BELLEĞİ:

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image066.gif[/IMG]

1

2

3

1023

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image067.gif[/IMG]0X000 0X001 Bellek Adreslerinin

Heksadesimal

sayılarla gösterimi Bellek Adreslerinin ondalık sayılarla gösterimi

14 bit uzunluğundaki komutların depolandığı alan

PIC16F84’ün 1 Kbyte’lık program belleği vardır. Her bir bellek hücresi içerisine 14 bit uzunluğundaki komutları saklanır. Program belleği flash ( elektiriksel olarak yazılıp silinebilir ) olmasına rağmen, programın çalışması esnasında sadece okunabilir.

PIC16F84’ün program belleği içerisinde sadece assembly komutları saklanır.Bu komutlar dışında RETLW komutu ile birlikte kullanılan sınırlı miktarda data da yüklenebilir.

NOT:

Yukarıda PIC16F84’ün program bellek haritasındaki adresler gösterilirken sol tarafta heksadesimal notasyon kullanılmıştır. PIC programlama esnasında da bellek adresleri bu şekilde yazılır. 0 x XX heksadesimal notasyonunda X’ler 0 – F arasındaki herhangi bir sayıyı, “0x” ise bu sayıların heksadesimal olduğunu belirtir. Örneğin 0 x 0F, heksadesimal 0F sayısı demektir. 0 x 3FF ise 3FF heksadesimal sayısını gösterir. PIC16F84’ün program belleğine 14 bit uzunluğunda toplam 1024 tane komut yazılabilir. Bellek haritasında son bellek adresinin 0x3FF=1023 gösterilmesinin nedeni, adresin 0’dan başlamasındandır.Adres 1’den başlasaydı son adres 0x400=1024 olacaktı.

RAM BELLEK

PIC16F84’ün 0x00-0x4F adres aralığında ayrılmış olan RAM belleği vardır.Bu bellek içerisindeki file göstergeleri içerisine yerleştirilen veriler PIC CPU’sunun çalışmasını kontrol ederler.File göstergelerinin bellek uzunluğu 8 bit’tir.Sadece PCLATH registeri 5 bit uzunluğundadır. File register adı verilen özel veri alanlarının dışında kalan diğer bellek alanları ,normal RAM bellek olarak kullanılır.Yani bu alanlarda prog-ramda içerisindeki değişkenler için kullanılır.

FİLE REGİSTER HARİTASI

TMRO

INDF

0X00 0X80

OPTION

INDF

0X01 0X81

PCL

PCL

0X02 STATUS

STATUS

0X82

FSR

FSR

0X83

0X03 0X84

TRISA

PORTA

0X04

TRISB

PORTB

0X05 0X85

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image068.gif[/IMG]0X06[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image068.gif[/IMG] 0X86

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image069.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image069.gif[/IMG] EEPROM Bellek Alanı:

PCLATH

PCLATH

INTCON

INTCON

0x0A 0x08A

0x0B

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image070.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image070.gif[/IMG] 0x08B

0x0C 0x08C

Genel amaçlı registerlerin kullanacağı alan

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image069.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image069.gif[/IMG]

0X4F 0XCF

BANK 0 BANK 1

PIC16F84’ün RAM belleği iki sayfadan (bankdan) meydana gelir.BANKO’ da ki registerlerin ad-resleri 0x00 ile 0x4F arasında ,BAK 1’de ki registerlerin adresleri de 0x80 ile 0xCF arasındadır.Toplam 80 tane file register vardır.0x0C adresinden sonra RAM (Data Belleği) olarak kullanılan bölgedeki veriler

0x8C adresinden itibaren gölgelendirilmiştir (shadowed).Gölgeleme, otomatik kopyalama işlemi olarak algı-landığın da anlaşılması daha kolay olacaktır.Bir bankda ki registeri kullanabilmek için o Bank’a geçmek gerekir.

W RGİSTER

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image071.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image072.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image073.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG] POTRB

W Register

PIC16F84’ün RAM bellek alanında görülmeyen birde W registeri vardır.W register bir akümülatör veya geçici depolama alanı olarak düşünülebilir.W registerine direkt olarak ulaşmak mümkün değildir.Ancak diğer registerlerin içersinde ki verileri aktarırken, erişmek mümkündür.Bir PIC’de gerçekleşen tüm aritmetik işlemler ve atama işlemleri için W register kullanılmak zorunluluğu vardır.

POTA

PIC ASSEMBLY ASSEMBLER NEDİR ?

Asembler,bir text editöründe asembly dili kurallarına göre yazılmış olan komutları PIC’in anlayabileceği hexadesimal kodlara çeviren (derleyen) bir programdır.Microchip firmasının hazırladığı MPASM bu işi yapan asembler programıdır.Asembler’e çoğu zaman compiler de (derleyici) denilir.

PIC ASSEMBLY DİLİ NEDİR?

Assembly dili,bir PIC’e yaptırılması istenen işlerin belirli kurallara göre yazılmış komutlar dizisidir.Assembly dili komutları İngilizce dilindeki bazı kısaltmalardan meydana gelir.Bu kısaltmalar genellikle bir komutun çalışmasını ifade eden cümlenin baş harflerinden oluşur.Böylece elde edilen komut, bellekte tutlması kolay (mnemonıc) bir hale getirilmiştir.

Örneğin;

BTFSC(Bit TestF Skip if Clear)File registerdeki Bit’i test et, eğer sıfırsa bir sonraki komutu atla,anlamında kullanılan İngilizcecümlenin kısaltmasıdır.

PIC ASSEMBLY DİLİ YAZIM KURALLARI

Windows altında çalışan NOTPAD veya DOS altında çalışan EDIT en uygundur.Bunların dışında printer kontrol komutları içermeyen ve ASCII kodunda dosya üretebilen herhangi bir editör de kullanıla-bilir.MPLAB kullanıldığında ayrıca bir editör kullanmaya gerek yoktur.Çünkü MPLAB’ın içinde hem bir text editörü hem de MPASM bulunmaktadır.

MPASM assember programının yazılan komutları doğru olarak algılayıp, PIC’in anlayabileceği hek-sadesimal kodlara dönüştürebilmesi için şu bilgiler program içinde özel formatta yazılması gerekir;

1-Komutların hangi PIC16XX için yazıldığı,

2-Programın bellekteki hangi adresten başlayacağı,

3-Komutların ve etiketlerin nelerin olduğu,

4-Programın bitiş yeri.

Basit bir örnekle bu bilgilerin program içinde nasıl yazıldığını gösterelim.Program ilk olarak PIC16F84’e B portunun 8 ucunu da çıkış olarak tanıtacak Daha sonra bu porttaki ilk dört bitini lojik 1,sonraki dört bitini de lojik 0 yapacak. Son olarak program sonsuz bir döngüye girecektir.Bu işlemleri yapacak olan programın akış diyagramı ve komutları aşağıdaki gibi olacaktır.

;*************PIC.ASM***********************************************

LIST P=16F84

;**********Adres Tanımlama Bloğu***************************************

STATUS EQU 0x03

PORTB EQU 0x06

TRISB EQU 0x86

ORG 0x00 ; Programı 0X00’dan başlat

;***********Portların Durumunu Belirleme Bloğu*****************************

START

CLRF PORTB ; PortB’nin içini sıfırla

BSF STATUS,5 ; BANK1’e geç

CLRF TRISB ; portB’nin uçlarını output yap

BCF STATUS,5 ; tekrar BANKO’a geç

;***********Program Bloğu************************************************

MOVLW 0x0F ; W registerine 0x0F’i yükle

MOVWF PORTB ; W’i portB’ye yükle

;***********Sonlandırma Bloğu*********************************************

DONGU

GOTO DONGU

END

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image074.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image071.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image075.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image076.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image077.gif[/IMG]

Noktalı Virgül( ; )

Baş tarafına ( ; ) konulan satır, assembler tarafından heksadesimal kodlara dönüştürülmez.Bu satır-lar programın geliştirilmesi esnasında hatırlatıcı açıklamaların yazılmasında kullanılır.

Girintiler ve Program Bölümleri

Text editörlerinde birbirinden farklı uzunlukta girintiler veren TAB özelliği vardır.Bu özellikten ya-rarlanarak assembly komutları üç kolono bölünerek yazılır.Bir assembly programı temel olarak dört bölüme ayrılır.Bunlar : Başlık,atama,program, ve sonuç bölümleridir.

Assembler Bildirileri

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image078.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG] Başlık

Bloğu LIST PIC16F84

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image079.gif[/IMG]

Etiket Atama Bloğu Hex Adres

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image080.gif[/IMG] Atama

Bloğu STATUS EQU 0x03

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image081.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image082.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image083.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image083.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image083.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image083.gif[/IMG] Etiket Komut Hex Adres

Program ORG 0x00

Bloğu START CLRF PORTB

MOVLW 0x0F

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image081.gif[/IMG]

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image020.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image084.gif[/IMG] Sonlandırma

Bloğu DÖNGÜ GOTO DÖNGÜ

END

BAŞLIK

Programın en başında ki bilgilere başlık bölümü denir.

LIST P = 16F84

Başlık bölümünde program dosyasının adı ve hazırlandığı tarih yazılabilir.” LIST P = 16F84 satırı, programın hangi PIC için yazıldığını belirtir.LIST bir compiler bildirisidir.Yani compileri yönlendiren ko-muttur ve tek kullanış amacı yeri burasıdır.

Başlık bölümünde, ” INCLUDE” komutuda kullanılabilir.INCLUDE komutu adresleri sabit olan STATUS,PORTA,PORTB,TRISA,TRISB gibi özel registerlerin atamalar bloğunda adresleri her defasında belirtme zorunluluğunu ortadan kaldırmak için kullanılan bir compiler bildirisidir.

ETİKETLER

PIC belleğindeki bir adresin atandığını,hatırlamayı kolaylaştıran kısaltmalardan meydana gelen sembolik isimlere etiket denir.Örneğin PORTB etiketi,PIC16F84’ün file register belleğinde ki B portunun bulunduğu adresi temsil eden etikettir.Etiketler program içinde 1. kolona yazılır.

PORTB EQU 0x06 ifadesi program içersinde yazıldıktan sonra B portunun hangi adreste oldu-ğunu akılda tutmaya gerek yoktur.EQU (eşitleme) ifadesidir.Bu ifade BASIC programlama dilinde ki (=), PASCAL programlama dilinde ki (: =) ifade ile aynı anlamdadır.Programın herhangi bir yerinde PORTB etiketi kullanıldığında, B portunun adresi olan 0x06 yazılmış gibi işlem görür.

Birinci kolona yazılan ve adres atanmayan etiketler de kullanılabilir.Örneğin, START ve DONGU bu tip etiketlerdir.Bu etiketler program akışını istenilen bir yere dallanmasını sağlamak amacıyla kullanılır. Program akışı yukardan aşağıya doğru devam ederken GOTO DONGU komutu ile, akış DONGU yazılan etikete dallandırılır.Bu etiketin adresi bir özel register adresi gibi fiziksel bir adres değildir.Bu şekilde tanım-lanan bir etikete assembler otomatik olarak bir adres atar.Bu adresi bizim bilmemize gerek yoktur.

Etiket Tanımlarken Uyulması Gereken Kurallar Şunlardır :

1-Etiketler birinci kolona yazılmalıdır.

2-Etiketler bir harfle veya alt çizgiyle başlamalıdır.

3-Etiketler içersinde Türkçe karakterler kullanılmaz.

4-Etiketler bir assembly komutundan oluşamaz.

5-Etiketler içersinde alt çizgi, rakam,soru işareti bulunabilir.

6-Etiketler en fazla 31 karakter uzunluğunda olabilir.

7-Etiketler büyük/küçük harf duyarlılığı vardır.

ATAMA DEYİMİ

EQU deyimi PIC16F84’ün belleğinde ki bir hexadesimal adresi belirlenen bir etikete atamak için kullanılır.Örnek :

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image085.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image086.gif[/IMG] Etiket Atama Deyimi

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image087.gif[/IMG][IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image088.gif[/IMG]PORTB EQU 0x06

Hexadesimal Sayıyı İfade Eder Hexadesimal Adres

SABİTLER :

PIC assembly dilinde hexadecimal sayılar birer sabittir.Sabitler MOVLW ve bazı mantıksal ve aritmetiksel işlem komutlarında kullanılır.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image089.gif[/IMG] Komut

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image090.gif[/IMG]Etiket

START MOVLW 0x02 [IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image091.gif[/IMG] Sabit

ORG DEYİMİ :

ORG deyimi iki amaç için kullanılır.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image092.gif[/IMG] Program komutlarının hangi adresten başladığını gösterir.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image093.gif[/IMG]ORG 0x00 0x000 ilk program komutunun bellek adresi

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image094.gif[/IMG]

PIC16F84’ ün ınterrupt alt programlarının başlangıç adresini belirlemede kullanılır.

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image095.gif[/IMG]ORG 0x004 0x004 adresi,ınterrupt alt programlarının

başlangıç adresi

SONLANDIRMA BLOĞU :

PIC16F84 ‘ün duraklama (halt ) komutu yoktur.Programı belli bir yerde duraklatmak için bazen sonsuz döngü kullanılır.

DONGU

GOTO DONGU

END

Yukarıda ki sonsuz döngüde DONGU etiketine assembler otomatik olarak bir adres verir.GOTO DONGU komutu ise program akışını devamlı olarak aynı adrese gönderir.Bu durumda program belirlenen adreste duraklatılmış olur.

END deyimi ise program komutlarının sona erdiğini assemblere bildirir.Her program sonunda END deyimi mutlaka kullanılmalıdır.Aksi halde program derlenirken dosya sonunun belirtilmediğini belirten bir hata mesajı verecektir.

BÜYÜK VE KÜÇÜK HARFLERİN KULLANIMI :

PIC assembler komutlarının büyük veya küçük harfle yazlması önemli değildir.İstenirse büyük /kü-çük harf karışımı komutlarda kullanılabilir.Örneğin, mOVlw, MOVlw, movlw, MOVLW komutları arasında fark yoktur. Ancak etiketler büyük/küçük harfe duyarlıdır.Start ile START birbirinin aynısı değildir. Herhangi bir karışıklığa neden olmaması için hep büyük veya hep küçük harf kullanılması en iyi seçimdir.

PIC ASSEMBLY KOMUTLARININ YAZILIŞ BİÇİMİ

PIC16F84 ‘ün toplam 35 komutu vardır.Bu komutların yazılış biçimi üç grupta toplanır ;

1-Byte-yönlendirmeli komutlar

2-Bit – yönlendirmeli komutlar

3-Sabit işleyen komutlar

4-Kontrol komutlar

Komutlarda kullanılan harflerin anlamları :

f : File register

d : Destination (gönderilen yer )

d = 0____W register

d = 1____file register

k : Sabit veya adres etiketi

b : Bit tanımlayıcı

b : Binary sayıları belirleyen harf ( Örneğin b’00001111’gibi)

d : Desimal sayıları belirleyen harf ( Örneğin d’16’ gibi )

Byte – Yönlendirmeli Komutlar :

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image096.gif[/IMG] File Register

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image097.gif[/IMG] Hexadesimal adres veya file registerin adı

f , d

[IMG]file:///C:/DOCUME%7E1/Yasin/LOCALS%7E1/Temp/msohtml1/01/clip_image098.gif[/IMG]

Komut Destination ( Gönderilecek Yer )

Komutun çalışmasından sonra so

Previous

#include<graphics.h>

Özel Tristörler

Next

“Mikroişlemciler” üzerine bir yorum

  1. Elinize sağlık. Her yerde bulamayabileceğimiz birçok bilgiyi bir arada vermişsiniz. Kolay gelsin, hoşça kalın.

    Cevapla

Yorum yapın