CCS C İLE PİC PROGRAMLAMA
DERS -1-
MİKRODENETLEYİCİ NEDİR??? 
Mikrodenetleyici programlanabilme, bir programı içerisinde depolayıp daha
sonra çalıştırabilme özelliklerine sahip tek bir chip'ten oluşan bilgisayardır. Bu
özelliği mikrodenetleyicileri mikroişlemcilerden ayıran özelliğidir.
MİKRODENETLEYİCİ NEDİR??? 
Mikrodenetleyicilerde bir CPU ( Central Process Unit ) , RAM ( Random Access Memory), ROM (
Read Only Memory ) , input - output ( giriş - çıkış I/O ) uçları , seri ve parelel portlar , sayıcılar (
counter ) ve bazı mikrodenetleyicilerde de Analog 'dan Digital 'e ( A/D ) ya da Digital 'den
Analog 'a ( D/A ) çeviriciler (konvertör ) bulunur. Mikroişlemciler kullanılarak oluşturulan
sistemlerde ise ( örneğin kullandığımız bilgisayarlar ) bu özelliklerin her biri için ayrı mikroişlemci
kullanılır.
MİKRODENETLEYİCİ NEDİR??? 
Mikrodenetleyicileri mikroişlemcilerden ayıran diğer bir özellikleri gerçek zamanlı
uygulamalarda çalışmalarıdır. Gerçek zamanlı uygulamalarda (işlemcinin dışındaki
elektronik ortamdan) gelen işaretler çok hızlı değişim gösterebilir. Bu nedenle bunları
işleyip gereken çıkışları aynı hızlılıkta dış dünyaya uygulamak gerekebilir.
Mikrodenetleyiciler böyle bir performansı, çok küçük boyutlarda ve çok daha az güç
tüketerek gerçekleştirebilirler. Sonuç olarak mikroişlemciler ve mikrodenetleyiciler
temelde aynı alt yapı çalışma mantığına sahip olmakla birlikte kullanım yeri ve amacına
göre iki ayrı grup ürün olarak değerlendirilebilir.
MİKRODENETLEYİCİLERE GENEL BİR BAKIŞ
Günümüzde mikrodenetleyiciler; Banka ATM’leri,Eylemsiz rehber
sistemleri, uçuş kontrol donanım/yazılımı ve uçak ve füzelerdeki diğer
tümleşik sistemlerden oluşan havacılık elektroniği parçaları, Cep
telefonları, Yönlendirici (router), timeserver ve güvenlik duvarı
(firewall) gibi bilgisayar ağ ekipmanları, bilgisayar yazıcıları, fotokopi
makineleri, disket sürücüler (floppy disket sürücüler ve sabit disk
sürücüler), termostat, klima, sprinkler ve güvenlik izleme sistemleri gibi
ev otomasyonu ürünleri, hesap makineleri, mikro dalga fırınlar, çamaşır
makinesi, televizyon setleri ve DVD oynatıcı/kaydedici gibi ev
elektroniği ürünleri,tıbbi ekipmanlar, çok işlevli kol saatleri, internet
radyo alıcıları, TV set top box ve dijital uydu alıcılar gibi çokluortam
uygulamaları, çok işlevli yazıcılar ,PDA’lar gibi küçük avuç içi
bilgisayarlar, PDA ve Java ,destekli gelişmiş cep telefonları, endüstriyel
otomasyon ve izleme için PLC'ler, video oyun konsolları ve avuç içi oyun
konsolları, taşınabilir bilgisayarlar, telefon santralleri, otomobillerde,
haberleşme cihazları, kontrol sistemleri vb. alanlarda
kullanılmaktadırlar.
CCS C İLE PIC PROGRAMLAMA
PIC(PERIPHERAL INTERFACE CONTROLLER)
Memory clear(reset)
Vdd=Vcc=V+
GND=Vss=VKristal bacakları
Vdd=Vcc=V+
GND=Vss=V-
Besleme Uçları ve Bağlantıları
Vss=Negatif Besleme(V-)
Vdd=Pozitif Besleme(V+)
Besleme gerilimleri değişik durumlara göre 2V ile 5.5V arasında olabilir.
Genelde laboratuvar çalışmalarında 5V idealdir.
Osilatör(Kristal) Konfigürasyonları
PIC hafızasındaki komutları işlemek için bir sinyale ihtiyaç duyar. Bu sinyale clock sinyali
yani saat sinyali denir. PIC bu clock sinyalini osilatör uçlarına bağlanan osilatör devresinden
alır. PIC mikrodenetleyicisi, girişine bağlanan osilatör frekansını (fosc) 4’e bölerek komut
işlemek için kullanır. Bu şekilde bir komutun işlenmesi için gereken zaman (clock cycle,
TCY=Tkomut) ortaya çıkar.
fkomut= fosc/4, Tkomut=1/fkomut
Örneğin PIC denetleyici girişine 20 Mhz’lik bir osilatör bağlanmışsa PIC denetleyici bunu 4’e
böler ve sonuçta 5 Mhz’lik bir uygulama frekansı ile çalışır. Bu da;
fkomut= fosc/4=20Mhz/4=5Mhz
Tkomut=1/fkomut=1/5Mhz=1/5.106hz=0.0000002sn=0.2 usn ‘de bir komut işleneceği anlamına
gelir.
PIC denetleyicilere bağlanabilen osilatör tipleri şunlardır.
 LP-Düşük Güçlü Kristal Osilatör
 XT-Kristal/Resonatör Osilatör
HS-Yüksek Hızlı Kristal/Resonatör Osilatör
 RC –Direnç/Kondansatör Osilatör
Kristal Osilatörler
Temel Bağlantı Şekli
ISIS Simülasyonunda Kullanacağımız
CCS C DERLEYİCİSİ
CCS C de proje oluşturma 
CCS C ÖN İŞLEMCİ KOMUTLARI…
 #define :Bu komut ile sabit tanımlaması yapılır.
Örnek: #define pi 3.14
 #include:Bu komut ile kullanılacak
mikrodenetleyicinin tanımlama dosyası
derleyiciye tanıtılır.
Örnek: #include<16f876.h>
 #FUSES: Bu komut ile kullanılan mikrodenetleyici ile
ilgili konfigurasyon bitlerinin durumu belirtilir.
Örnek: #fuses HS, NOWDT…
 #USE DELAY: Program yazarken «delay» gecikme
komutunun kullanılabilmesi için bu ön işlemci
komutunun kullanılması gerekir. Bu komutun
kullanımı;
#use delay(clock=4000000) şeklindedir.
Bu komutla derleyiciye 4 Mhz’lik(40000000hz) bir
osilatör frekansında çalıştığımız bildirilmektedir. Clock
ifadesi eşitliğine kullanılan osilatör frekansı hz(hertz)
olarak yazılmalıdır.
 #use standart_io(): PIC mikrodenetleyicilerinde hangi
portun hangi pinlerinin giriş ve/veya çıkış olarak
kullanılacağının programda bildirilmesi gereklidir.
CCS C derleyicisinde bu iş için komut mevcuttur.
Fakat derleyicide bu iş için başka komut
kullanılmamışsa #use standart _io() komutu
standart olarak kullanılmış sayılır.
Örnek: # use standart_io(a)
CCS C PROGRAMI GENEL GÖVDESİ
//Program hakkında tanıtıcı bilgiler
/*********************************************
Program ismi: CCS ile PIC programlama ders -1Programın amacı: PIC16F876 ile programlama
Kullanılan mikrodenetleyici:PIC16F876
Yazan: Hacettepe Robot Topluluğu
*********************************************/
#include<16f876.h>
#fuses HS,NOWDT,…
#use delay (clock=2000000)
int8 x;
char bilgi;
void main()
{
Komut veya komutlar;
}
15 DAKİDA ARA ZAMANI 
Port Giriş/ Çıkış İşlemleri
Port giriş/çıkış komutları portların giriş veya çıkış olarak
kullanılıp kullanılmayacağı, port ve/veya port pinlerinin
çıkış durumlarını, port girişlerindeki bilgilerin okunması
gibi işlemlerin gerçekleştirilmesini sağlayan komutlardır.
SET_TRIS_X() KOMUTU
Bu komut port pinlerinin hangisinin giriş pini, hangisinin çıkış pini olacağını belirtir.
Komuttaki «X» yerine işlem yapılacak portun ismi (A,B,C,…), parantez içine ise
heksadesimal olarak 8 bitlik değer girilir. Pin değeri «0» girilmişse o pinin çıkış pini
olarak kullanılacağı, «1» girilmişse o pinin giriş pini olarak kullanılacağı
anlamındadır. Kullanımı;
set_tris_x(değer);
set_tris_b(0b00001111);
set_tris_b(0x0F);
şeklindedir. Yukarıda verilen iki örnek komutta aynı anlamdadır. Sadece birinde
değer binary(ikilik taban), diğerinde heksadesimal(onaltılık taban) sayı olarak
girilmiştir. Bu komut bize B portunun B0,B1,B2,B3 pinlerinin giriş olarak
kullanılacağını, B4,B5,B6,B7 pinlerinin ise çıkış olarak kullanılacağını belirtir.
OUTPUT_LOW() KOMUTU
Bu komut ile istenen portun istenen biti lojik-0(0 V) yapılır.
Yani istenen ucun çıkışı 0(sıfır) yapılır. Komutta parantez
içine işlem yapılacak pin ismi girilir.
output_low(pin ismi);
output_low(pin_A2);
komutu ile A portunun A2 numaralı ucu lojik-0 yapılmış
olur.
OUTPUT_HIGH() KOMUTU
Bu komut ile istenen portun istenen biti lojik-1 (5V)
yapılır. Yani istenen ucun çıkışı 1(bir) yapılır.
Komutta parantez içine işlem yapılacak pin ismi
girilir.
output_high(pin ismi);
output_high(pin_B3);
komutu ile B portunun B3 numaralı ucu lojik-1
yapılmış olur.
OUTPUT_X KOMUTU
Bu komut ile bir portun tüm bitlerine tek komutla
çıkış değerleri yüklenir.
output_port ismi (değer);
output_B(0x0F);
komutu ile B portunun B0,B1,B2,B3 bitlerinin
çıkışları lojik-1, B4,B5,B6,B7 bitlerinin çıkışı ise lojik0 yapılıyor(0x0F=00001111). Parantez içine yazılan
değer 8 bitlik bir sayı olmak zorundadır.
INPUT() KOMUTU
Bu komut ile PIC mikrodenetleyicisinin istenen pininin
durumunu okumaya yarar. Yani istenen giriş pininin lojik
olarak değerini okur. Bu fonksiyon istenen pin çıkış olarak
yönlendirilmiş olsa bile pini giriş olarak yönlendirir ve
değeri öyle okur.
Değişken ismi=input(pin ismi);
bilgi=input(pin_A2);
komutu ile A2 pini girişinden dijital bilgi(0-FALSE veya 1TRUE) okunmakta ve «bilgi» değişkenine aktarılmaktadır.
INPUT_X() KOMUTU
Bu komut ile istenen giriş portu değeri tümüyle
okunur.
Değişken=input_port ismi();
data=input_c();
komutu ile C portunun komple durumu «data» adlı
değişkene aktarılmış olunur. Komutta kullanılacak
değişken 8 bitlik olmalıdır.
Veee ilk projemiz 
KENDİ DEVREMİZİ TASARLIYORUZ…
PROTEUS ISIS ÇİZİMİ
BİZİ DİNLEDİĞİNİZ İÇİN TEŞEKKÜR
EDERİZ 
BU SLAYTIN HAZIRLANMASINDA
SERDAR ÇİÇEK’İN
CCS C İLE PIC PROGRAMLAMA KİTABI
KAYNAK OLARAK KULLANILMIŞTIR.
Download

TEMEL ELEKTRON*K -1- - Hacettepe Üniversitesi Robot Topluluğu