aile watchdog.us

Transkript

aile watchdog.us
MİKROİŞLEMCİ (MİKROPROSESÖR - CPU)
NEDİR? Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)
• Mikroişlemci bir programının
yapmak istediği işlemleri,
(hafızada bulunan komutları)
sırasıyla ile işleyerek icra eder
(yürütür).
• Bu yürütme,
1. Komutun Program
Hafızasından alınıp
getirilmesi (Fetch),
2. Kodunun çözülmesi (Decode)
3. Komutun uygulanması
(icra edilmesi) (Execute)
gibi aşamaları gerektirir
1
MİKROİŞLEMCİ(CPU) (Devam)
• Mikroişlemciler Kişisel
Bilgisayarlarda (PC vb.),
tek bir chip (entegre)
şeklinde kullanılırlar.
• Diğer birimler hafıza
(RAM,ROM vb.),
Giriş/Çıkış Birimleri(Port
vb.) Mikroişlemci
dışında bulunan farklı
entegrelerdedir.
• PC için kullanılan
mikroişlemcilerin
üreticilerinden bazıları
Intel, AMD, Cyrix’ dir.
2
MİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ
• Mikroişlemci ile çevresindeki Hafıza (Memory),
Giriş/Çıkış Birimi (I/O) vb. elemanlar aralarındaki iletişimi
o Veri Yolu (Data Bus)
o Adres Yolu (Address Bus) ile
o Kontrol hatları (Control Bus) denilen lojik iletim
hatları sağlar.
3
MİKRODENETLEYİCİ (Microcontroller)
• Kontrol gereken birçok
alanda ise …
• CPU’lar
Mikrodenetleyiciler
içinde kullanılırlar.
• Mikrodenetleyicilerde
RAM,ROM (Hafızalar),
I/O (Giriş/Çıkış Birimi),
Timer (Zamanlayıcı) vb.
birimler tek entegre
içinde bulunur.
4
MİKRODENETLEYİCİ (Microcontroller) (Devam)
Temelde bir Mikrodenetleyici’de;
o Mikroişlemci (CPU)
o Kalıcı ve Uçucu
Hafızalar
o Giriş/Çıkış üniteleri
tek entegre içinde yer alırlar.
• Böylece hem yer ve enerji
tasarrufu yapılıp maliyet
düşürülürken…
• Hem de tasarım
kolaylaştırılmış ve
programlama işlemi
basitleştirilmiş olur.
5
MİKROİŞLEMCİ (CPU) (Devam)
•
•
•
•
•
•
Kontrol işlemlerinde,
Sanayide,
Haberleşmede,
ve sayısız alanlarda
CPU ile birlikte tek bir chip halindeki…
Mikrodenetleyiciler tercih edilmektedir.
6
GÜNÜMÜZDE MİKRODENETLEYİCİLER
• Mikrodenetleyiciler birçok firma tarafından
üretilmektedir.
• Bunlar arasında Microchip , Atmel, TI, Arm,
Motorola , SGS Thomson, Hitachi … gibi
çok sayıda firma sayılabilir
7
HER ÜRETİCİNİN EN AZ BİRKAÇ MİKRODENETLEYİCİSİ
VARDIR
•Mesela Microchip firması…
•PIC12C508, PIC16F84, PIC16F877A, PIC18F452…
gibi çok sayıda farklı mikrodenetleyicilere sahiptir.
• Aynı firmanın Mikrodenetleyicilerinin farklı
özelliklere (Hız, Port Sayısı, Hafıza yapısı vb) sahip
elemanları (aileleri) mevcuttur.
• Aynı ailede bulunan mikrodenetleyiciler genellikle
aynı komutlarla programlanırlar.
•Ancak gelişmiş ailelerde ilave komutlar gelebilir.
8
BİR MİKRODENETLEYİCİ İÇİNDE BULUNAN
TEMEL (ORTAK) ÖZELLİKLER
1 ) Programlanabilir Dijital (Sayısal) Girişler/Çıkışlar
2 ) Programlanabilir Analog Girişler
3 ) Seri Girişler/Çıkışlar (RS232, RS485, USB gibi)
4 ) Dahili Program hafızası(ROM,PROM,EPROM,Flash gibi)
5 ) Darbe(Pals), PWM(Darbe genişlik modulasyonu)
Çıkışları
6 ) Harici (İlave) hafıza bağlanabilme
7) Zamanlayıcı , Sayıcı ve Kesme vb. özellikler
9
Kullanılacak Mikrodenetleyici’yi
seçerken…
• Bir uygulama yapmadan önce hangi firmanın,
hangi numaralı mikrodenetleyicisinin
kullanılacağı tespit edilmelidir.
• Bunun için Katalog (Data sheet) adı verilen
kaynaklardan ya da internetteki ilgili sitelerden
faydalanılabilir.
10
Kullanılacak Mikrodenetleyici’yi
seçerken (Devam)
• Öncelikle …
•Uygulama ihtiyacımızın tamamını karşılamasına;
• Sonra da Fiyatına bakarız. Ancak …
• Yazılım ( program ) desteğinin ve araçlarının
(Derleyici, Simulatör , Emulatör v.s.) bulunup
bulunmadığına…
•Ve bunların ücretli olup olmadığına…
•Yazılı yayınlarda ve internette bol miktarda örnek
uygulama programları bulunabilmesine de dikkat
edilmelidir.
11
MİKRODENETLEYİCİ SEÇİMİ (Devam)
• Sayılan özellikler göz önüne alınırsa (şu an için)
Microchip firması tarafından üretilen kısaca
PIC olarak ifade edilen mikrodenetleyicilerin
kullanılması oldukça avantajlı gözükmektedir.
• Biz dersimizde çok sayıdaki PIC
mikrodenetleyicilerden temel bir eleman olan
PIC16F84 ‘ü inceleyeceğiz…
12
PIC MİKRODENETLEYİCİLERİN BAZI AVANTAJLARI :
1 ) Destek Yazılımları internetten ücretsiz sağlanır.
2 ) Çok yaygın ve ucuzdur. Hem profesyonel hem de amatör
kullanıma uygundur.
3) İnternette ve kitap/dergilerde çok sayıda örnek
programlar mevcuttur.
4) Çok az ve basit birkaç elemanlarla ( birkaç direnç ,
kondansatör ) donanımları kurulabilir.
5 ) Komut sayısı az ve kullanımı basittir.
6 ) Daha üst seviye diller için MicroC,PICC, CCSC, PIC Basic
gibi bazıları ücretsiz Derleyiciler’e (Compiler) sahiptir.
7) Ayrıca PIC ‘lerdeki BUS yapısı PIC ‘lerin RISC işlemci olarak
tanıtılmasını dolayısıyla diğer mikroişlemcilere göre
hızlarının fazla olmasını sağlar.
13
BİR PIC PROGRAMLAMAK İÇİN ENAZ (ASGARİ)
İHTİYAÇLAR:
1) Bir PC ( Kişisel Bilgisayar )
2) Bir Metin editörü (Not defteri gibi)
3) PIC Assembler (Derleme) programı (MPASM, MPLAB
gibi )
4) PIC programını entegreye yüklemek (programlamak)
için gerekli Programlayıcı donanım ve yazılımı
5) Kullanılacak PIC Entegresi’nin kendisi
6) Programlamadan sonra devremizi çalıştırmak için bir
DC güç kaynağı , direnç-kondansatör, kristal gibi
birkaç elektronik eleman, breadboard (delikli
deneme kartı), ölçü aleti vb. ihtiyaç vardır.
14
PROGRAMLAYICI DONANIMI VE YAZILIMI
• PIC ‘e Programın yüklenmesi için
bir “Programlayıcı” ile yazılımına
ihtiyaç vardır.
• Piyasada (PIC gibi) özel bir
Mikrodenetleyiciyi yada
ailelerini programlayan
programlayıcılar bulunduğu
gibi…
• Her tür Mikrodenetleyici ve
hafızayı programlayan…
• Üniversal (Genel)
Programlayıcılar da vardır.
15
PROGRAMLAYICI DONANIMI VE
YAZILIMI (Devam)
• Bazı uygulamalarda
Doğrudan tasarladığımız
uygulama devresi
üzerinde de
programlama yapabiliriz.
• (ICSP : In circuit serial
Programming )
• Bu durumda devremizin
(genellikle) seri bir ara
birimi olmalıdır.
16
PIC MİKRODENETLEYİCİLERİN
TÜRLERİ VE ÖZELLİKLERİ
• Microchip firması tarafından üretilen farklı PIC
grupları (aileleri) vardır.
• Bu aile isimleri verilirken binary olarak (ikili
tabanda) kullanılan komut kelimesi (word)
boyu dikkate alınmıştır.
• Komut Kelimesi denince komutun ikili
tabandaki karşılığı anlaşılır.
17
PIC MİKRODENETLEYİCİLERİN
TÜRLERİ VE ÖZELLİKLERİ (Devam)
• Komut Kelimesine örnek olarak bir PIC’de…
• “00 0001 0111 0000” 14 bit uzunluğunda bir
komut kelimesi CPU’ya “Aküyü sil” emri verir.
• Ancak assembly program yazılırken aynı
komutlar kullanılsa bile…
• Farklı PIC’lerde …
• Bu komutların program hafızasındaki komut
kelimeleri farklı boylarda olabilir.
18
PIC MİKRODENETLEYİCİLERİN
TÜRLERİ VE ÖZELLİKLERİ (Devam)
•
•
•
•
•
Örnek olarak…
PIC 12CXXX/PIC 12FXXX ailesi 12 ya da 14 bit,
PIC 16C5XX ailesi 12 bit,
PIC 16CXXX/PIC 16FXXX ailesi 14 bit,
PIC 17CXXX/PIC 18FXXX ailesi 16 bit
kelime boyuna sahip komutlar kullanır.
• Not: X, yerinde herhangi bir karakter olabilir.
19
BİZ PROGRAMCI OLARAK …
• Bu kelime uzunlukları ile fazla ilgilenmeyiz .
• Bizim için önemli olan seçtiğimiz PIC ‘in:
o Hızı, Hafıza Tipi ve Miktarı, Giriş/Çıkış
(I/O) ucu (port) sayısı , Analog Giriş kabul
edip etmemesi v.b. gibi donanım
özelliklerinin ve…
o Bilhassa kullanacağımız assembly dili
komutlarının görev/çalışmalarının (Komut
Tablosunun) bilinmesidir.
20
PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI
• Temel olarak diğer mikrodenetleyiciler gibi…
• Bir PIC içerisinde de iki tür hafıza bulunur:
1. Program Hafızası (ROM,PROM,EPROM,FLASH)
 Programı saklar, kalıcıdır.
2. Veri Hafızası (RAM, EEPROM)
 Veriyi saklar, genellikle uçucu olmakla
birlikte kalıcı verilerin saklanması için özel
türleri de vardır.
21
PIC16F84 ‘DE PROGRAM HAFIZASI
• Seçtiğimiz PIC16F84 ‘de…
• 1K word’luk (kelime’lik) yani toplam 1024
komutluk program hafızası vardır.
• (
) olduğunu hatırlayalım.
• NOT: Byte(Bayt) kelimesi 8 biti temsil ettiği …
• Ve PIC16F84’de 14 bitlik komut kelimeleri kullandığı
için…
• 1K bayt yerine 1K word ifadesi kullanılmaktadır.
22
PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)
• Daha önce belirtildiği gibi bunların her birine
“ Komut Kelimesi “ ya da kısaca “Komut”
denir.
• Tekrar hatırlarsak program hafızasında bu
komutlar ikili tabanda olup heksadesimal
olarak da ifade edilebilir.
• Örn: (00 0001 0111 0000)2 = (0170)16
•
Aküyü sil anlamına gelen komut idi.
23
PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)
• Her bir
program hafıza
hücresi
içerisinde…
• 14 bit
uzunluğundaki
kelime boyuna
sahip program
komutları
saklanır.
24
PIC16F84 PROGRAM HAFIZASI (Devam)
• Aslında her bir adreste derste bizim
programlarımızı yazacağımız…
• Assembly dilindeki bir komutun
heksadesimal (hex) karşılığı saklanır.
• PIC16F84 de Program hafızası Flash
tipte olup…
• PIC düşük gerilimle ( 5V) programlanıp
silinebilir.
25
PIC16F84 ‘DE VERİ (DATA) HAFIZASI
• Her PIC ‘de bulunan diğer bir hafıza
türüdür.
• Bu hafıza genellikle RAM türü Geçici
(Uçucu) Bilgi Depolama alanıdır.
• Ayrıca PIC16F84 ’de EEPROM denilen 64
byte’lık kalıcı veri hafızası da vardır…
• Dersimizde bu hafıza türü
incelenmeyecektir.
26
PIC16F84 ‘DE VERİ (DATA) HAFIZASI (Devam)
• PIC16F84’de Veriler…
• 8 bitlik (binary olarak 8 basamaklı) = 1 bayt
dır. (örn bir veri : 0110 0111)
• Veri Hafızası ikiye ayrılır : Bank 0 ve Bank 1
• Ayrıca Veri Hafızasında iki çeşit Register (Saklayıcı)
söz konusudur:
o Özel Fonksiyon Registerleri (STATUS, PORTA gibi)
o Genel Amaçlı Registerler ( Genel Veri Depolama
alanıdır. Herhangi bir genel veri saklanabilir)
27
Özel Fonksiyon Registerleri
Özel Fonksiyon Registerleri
PIC16F84 ‘DE VERİ HAFIZA HARİTASI (sadeleştirilmiş)
(BANK 0 ve BANK 1 YAPISI)
28
BANK 0 (Bütün Registerleri ile)
29
PIC16F84 ‘DE VERİ HAFIZA HARİTASI
(BANK 0 ve BANK 1 YAPISI) (Devam)
• BANK 0: (0X: Heksadesimal sayı anlamındadır)
o Yukarıda verilen Hafıza Haritası da denilen tabloyu incelersek
sol sütunda (0X00 … 0X4F) adres aralığında…
o Toplam ( 50 )16=(80)10 adet 8 bit uzunluğunda VERİ HAFIZASI
vardır.
o (0X50….0X7F) kullanılmayan (rezerve) kısımdır.
o Bunlardan (0X00 … 0X0B) aralığındakiler (İsimleri olanlar)
ÖZEL FONKSİYON REGİSTERLERİ iken…
o (0X0C … 0X4F) aralığında bulunanlar
GENEL AMAÇLI REGİSTERLER olarak adlandırılır.
30
BANK 1 (Bütün Registerleri ile)
31
PIC16F84 ‘DE VERİ HAFIZA HARİTASI
(BANK 0 ve BANK 1 YAPISI) (Devam)
• BANK 1:
• Bank 0 ‘a benzer şekilde (0X80 … 0XCF) adres aralığında
bulunur.
o (0X80 … 0X8B) aralığı ÖZEL FONKSİYON REGİSTERLERİ iken
o (0X8C … 0XCF) aralığında bulunanlar GENEL AMAÇLI REGİSTERLER
olarak kullanılır.
o (0XD0… 0XFF) aralığı kullanılmayan (rezerve) adreslerdir.
• Burada bazı registerler hem Bank 0 da hem Bank 1 de
olduğundan birbirlerinin kopyasıdır. (INDF, STATUS gibi)
• GENEL AMAÇLI REGİSTERLER ise zaten Bank 0 ve Bank 1 de her zaman
birbirinin kopyasıdır.
32
PIC16F84 ‘DE VERİ HAFIZA HARİTASI
(BANK 0 ve BANK 1 YAPISI) (Devam)
• ÖNEMLİ BİLGİ:
• Programlamada bir Bank’ın içindeki…
• Herhangi bir registeri kullanabilmek için…
• O Bank’a geçmek gerekir.
• Ancak her iki Bankta da bulunan registerler…
• Bank değiştirmeksizin her zaman kullanılabilir.
• İlk enerji verildiğinde PIC “Bank 0” da açılır.
• Daha sonra Programcı yazdığı komutlarla “Bank 1” e
geçebilir.
33
ÖZEL BİR REGİSTER ( W : AKÜMÜLATÖR )
• PIC16F84 ‘de Akümülatör (W) Veri Hafıza
haritasında görülmemesine rağmen…
• Sıkça kullanılan ve “Geçici Depolama
Registeri” denebilecek bir registerdir.
• Diğer pek çok File Registerleri gibi…
• 8 bit uzunluğundadır.
• Veri okur, yazarken, registerler arası veri
kopyalama ile tüm aritmetik işlemler ve diğer
bazı işlemler için bu W registerini kullanmak
şarttır.
34
ÖZEL BİR REGİSTER ( W : AKÜMÜLATÖR ) (Devam)
•
•
•
•
Meselâ ;
(PORTA) ‘yı (03) sayısı ile toplayıp…
Sonucu PORTB ‘ye yazmak istersek…
Akümülatörden (W ) faydalanmak gerekir…
35
PIC16F84’ ÜN BACAK (PİN) YAPISI VE PORTLARI
• PIC16F84 mikrodenetleyicisi 18
bacağa (pin) sahiptir ve hepsi Dijital
(sayısal)dir.
• Şekilde görüldüğü gibi VDD (+), VSS
(-) besleme uçlarıdır. 5 V uygulanır.
• RA ve RB ile başlayan bacaklar
PORTA ve PORTB ye ait Port
bitleridir.
• Bütün CMOS Lojik entegrelerde
olduğu gibi kullanılmayan PORT
girişleri +5V (Lojik 1) ‘a
bağlanmalıdır
• OSC1/CLK IN ve OSC2/CLK OUT
uçları saat işareti üretmek veya
uygulamak için kullanılır
• MCLR ucu ise Reset işlemi için
kullanılır
• RA4 ve RB0 Port bitleri farklı
amaçla da kullanılabilmektedirler.
36
PORTA ve PORTB ’nin YAPISI
• Burada lojik(sayısal) Giriş/Çıkış yapacağımız
PORTA ve PORTB üzerinde durmak gerekir.
• Bunlardan PORTA 5 bitliktir; [8 bitlik değil !]
( RA4,RA3,RA2,RA1,RA0)
• PORTB ise normal olarak 8 bitliktir;
(RB7,RB6,RB5,RB4,RB3,RB2,RB1,RB0)
• Her bir Port biti (RA2, RB5… gibi) Giriş ya da Çıkış
olarak programlanabilir.
37
PIC16F84 ‘DE PORT BİTİ ÇIKIŞ İKEN
MAKSİMUM AKIMLAR
•
•
•
•
PIC16F84 ‘de bir PORT’a ait olan bir bit…
Ya Giriş ya da Çıkış olarak programlanarak kullanılır.
PORT biti çıkış olarak kullanıldığı zaman …
İki tür akım söz konusudur :
• PORT’dan içeri çekilebilen (Sink) ve…
• PORT’tan dışarı alınabilen (Source) akım.
• Bu durumlardaki maksimum akım değerleri hiçbir
zaman aşılmamalıdır.
• Bu değerler seri bir direnç üzerinden bir LED’i
rahatlıkla sürebilecek seviyededir.
38
SİNK VE SOURCE AKIMLARI
• Sink Akımı :
• (+5 volt) beslemeden PORT’un içine doğru akan akımdır.
• Bu durumda + 5V ‘dan PORT’un içine doğru akacak
maksimum akım 25 mA dir.
• PORT 'tan içeri daha fazla akıtılan akım PIC ‘in bozulmasına
sebep olabilir.
• Bu tür bağlantıda ancak PORT biti = Lojik 0 yapıldığında LED
yanacaktır.
39
SİNK VE SOURCE AKIMLARI (Devam)
• Source Akımı :
• PORT’un içinden toprağa doğru akan akımdır.
• Bu durumda akacak maksimum akım 20 mA dir.
• Yine PORT ’tan dışarı bu değerden fazla akım çekilirse PIC
bozulabilir.
• Bu tür bağlantıda PORT biti = Lojik 1 yapıldığında LED
yanacaktır
40
OSİLATÖR ( SAAT/CLOCK ) DEVRESİ
• PIC ‘in program hafızasında bulunan
komutların çalışması…
• Kare dalga şeklindeki saat (clock) işareti ile
olur;
• Genelde OSC1/CLK IN ve OSC2/CLK OUT
bacaklarına bazı elemanlar (kristal, dirençkondansatör) bağlanarak saat işaretinin PIC
içerisinden üretilmesi sağlanır.
41
OSİLATÖR ( SAAT/CLOCK ) DEVRESİ (Devam)
• PIC 16F84 ‘de en çok kullanılan osilatör
tipleri şunlardır :
1 ) RC Tipi ( Direnç/Kondansatör )
2 ) XT Tipi ( Kristal veya Seramik Rezonatör )
3 ) HS Tipi (Yüksek Hızlı Kristal /Seramik
Rezonatör)
4 ) LP Tipi ( Düşük Frekanslı Kristal )
42
OSİLATÖR TİPLERİ VE BAĞLANTILARI
• Bu osilatör yapılarından sık kullanılan ikisinin tipik
bağlantıları …

1. RC Tipi Bağlantı :
• Bu amaçla kullanılan tipik bağlantı şöyledir. Hassas
zamanlama gerektirmeyen tasarımlar için
elverişlidir.
43
OSİLATÖR TİPLERİ VE BAĞLANTILARI(Devam)
 2. XT, HS, LS Tipi Bağlantı :
• Bu bağlantılarda her iki OSC bacağı kullanılır.
C1 ve C2 değerleri 15-22 pF civarında
seçilebilir.
NOT: Kullanılacak Osilatör tipi komut olarak veya programlama
esnasında belirtilmelidir. Bunun yolu ilerde açıklanacaktır.
44
MCLR (RESET) BACAĞI VE DEVRESİ
• Program herhangi bir nedenle
kilitlenirse…
• Ya da programı yeniden
(baştan) çalıştırmak istersek…
• Dışardan PIC ‘i Reset yapmamız
gerekir.
• PIC16F84 ‘de RESET fonksiyonu
gören 4 nolu bacak (MCLR) ‘dir.
• Resetleme işlemi için bu girişe
önce kısa bir süre lojik 0
verilmeli, daha sonra lojik 1
uygulanmalıdır.
• Not: MCLR üzerindeki çizgi “0” da
Reset gerçekleşir demektir.
MCLR
1
0
Butona basıldı.
Reset oldu
Buton bırakıldı.
Program baştan
başlar
45
PIC16F84 ve ASSEMBLY DİLİ
PROGRAMLAMA
• Biz programlarımızı PIC16F84 ‘ye ait…
• 35 farklı komuttan oluşan assembly programlama
dili ile yazacağız. (Bknz NOT)
• Önce basit bir metin editöründe (not defteri gibi)
yazılacak olan program .asm uzantılı olarak
kaydedilir.
• (NOT: Bu komutlar Lab. da incelenecek 40 bacaklı
PIC16F877 için de geçerlidir)
46
PIC16F84 ve ASSEMBLY DİLİ
PROGRAMLAMA (Devam)
• Yazdığımız Assembly Program PIC’in
çalıştırabileceği hale dönüştürmek üzere
MPASM veya MPLAB ile derlenmelidir.
• Derlenen (.asm) uzantılı dosya… (Örn: isim.asm)
• Aynı dosya ismiyle (.hex) uzantılı olarak aynı
klasörde üretilir. (Örn: isim.hex)
• Artık program “Makine Dili” olmuştur.
• Yani bir programlayıcı ile PIC’e yüklenebilir.
47
PIC16F84 Assembly Dili
• Assembly dili aslında yapılacak işlerin…
• Sırasıyla komutlar halinde yazılmasından başka bir
şey değildir.
• Komutlar ise yapılacak işlemlerin İngilizce dilindeki
karşılıklarının baş harflerinin birleşmesinden
meydana gelir.
• Ve “Komut Tablosu” halinde verilmiştir.
• Genel olarak Komut Tablosu’na göz atalım:
• NOT: Komutlar ders boyunca teker teker incelenecek
ve uygulanacaktır…
48
49
Assembly Dilinde Program Yazarken
Dikkat Edilecek Hususlar…
Noktalı Virgül ( ; )
o Bir satırın başına (;) konursa o satır ( hex ) koda
dönüştürülmez.
o Bir komuttan sonraki (;) den sonrası da aynı
şekilde sadece bilgi amaçlıdır.
o Örn:
MOVLW 0x2F ; Aküye 2F yaz
o Daha sonra programı değiştirir ya da geliştirirken
hatırlamak istediklerimizi de (;) den sonra
yazabiliriz.

50
Assembly Dilinde Program Yazarken
Dikkat Edilecek Hususlar (Devam)
 Program Bölümleri :
o Assembly programında…
o Başlık, Atama , Program ve Sonuç bölümleri
vardır.
o Ayrıca Program yazılmadan önce 3 kolona
bölünür. Bunlar;
– Etiket,
– Komut,
– Adres ya da Veri
dir…
51
Assembly Dilinde Program Yazarken
Dikkat Edilecek Hususlar (Devam)

Etiketlerin Özellikleri:
• Birinci sütunda yer alan Etiketler…
• PIC’in Program ya da Veri Hafızasındaki bir Komut ya da
Register adresine karşılık gelen ve hatırlatmayı kolaylaştıran
kelimelerdir.
• PORTB EQU 0x06
; PORTB bir etikettir.
• BEKLE GOTO BEKLE
; 1. BEKLE bu komutun etiketidir.
52
Örnek bir Program Yazılışında Bölümler
53
ASSEMBLY DİLİNDE SAYI VE KARAKTER YAZILIŞLARI
• Assembly dilinde program yazarken sayılar çeşitli formatlarda
(biçimlerde) yazılabilir :
Hexadesimal sayılar için:
EQU komutu gibi Atamalarda…
0x03 , 3 , 03 , 03h , h ‘03‘ şekillerinden biri kullanılabilir.
• Örn: PORTB EQU 03h veya PORTB EQU 3
• Ancak atama dışındaki diğer komutlarda 0x03 , h ‘03’ ya da 03 şeklinde
kullanılırlar…
• Örn : W registerine (03) heksadesimal sayısını yüklemek için;
MOVLW 0x03
MOVLW h’03’
MOVLW 03
•
;biçimlerinden biri yazılır.
Biz Derslerimizdeki programlarda genellikle h’03’ formatını tercih edeceğiz.
54
Binary ( ikili ) sayılar için:
• b’0010 0101‘
şeklinde yazılır.
• Örn : ( 0010 1100 )2 sayısını W (akümülatör)’e yüklemek için
gerekli komut;
MOVLW b’00101100’
;şeklinde ikili tabanda yazılabilir.
Desimal sayılar için:
• Desimal sayılar ise başına d harfi konup yine tırnak içinde
yazılır. d‘18‘ , d’255’ gibi.
• Örn. (15)10 sayısını W ye yüklemek için ;
MOVLW d’15’
;şeklinde yazılır
55
ASCII karakterler için :
•
Tırnak içinde karakterin kendisi yazılır .
•
Genellikle RETLW komutu ile beraber kullanılır.
•
Örn.
RETLW ‘B’
RETLW ‘X’
;(B heks. bir sayı değil harftir)
gibi komutlar B ve X karakterlerinin ASCII karşılığı
olan sayıyı W registerine yazar ve…
• Daha sonra inceleneceği gibi altprogramdan geri
dönüşü sağlar.
56
PIC16F84’DE ASSEMBLY DİLİ KOMUTLARI
• PIC 16F84 de toplam 35 komut vardır.
• Bu komutlar farklı şekillerde gruplandırılabilirse
de…
• Biz PIC komutlarını 4 ana grupta toplayarak
inceleyeceğiz :
1 ) Byte (bayt) Yönlendirmeli Komutlar
2 ) Bit Yönlendirmeli Komutlar
3 ) Sabitle Çalışan Komutlar
4 ) Kontrol Komutları
57
KOMUT FORMATLARI YAZILIRKEN KULLANILAN
BAZI KISALTMA HARFLERİ
•
•
f : (Özel veya Genel) File register (PORTA, STATUS vb. )
d : Destination (Hedef; sonucun gönderildiği yer)
d = W ise (Sonuç W registerine kaydedilir )
d = f ise (Sonuç komutta belirtilen File registerine kaydedilir)
•
•
•
•
k : Sabit veya adres etiketi (Örn: GOTO GIT )
b : Bit veya Binary sayı ( Örn : b’00001111‘ ) ifade eder.
d : Desimal sayı ifade eder ( Örn : d’18’ )
h : Heksadesimal sayı ( Örn : h’4F’ ) ifade eder
58
KOMUT GRUPLARI VE FORMATLARI
(Kullanılış Biçimleri)
1 ) Byte Yönlendirmeli Komutlar
• Bir register üzerinde işlem yapan komut türüdür. Komut Formatı:
• Örnekler :
• MOVF 0x03 ,W ; 0x03 adresindeki (STATUS daki) veriyi W (Akümülatör)‘e kopyala.
• MOVF STATUS ,W ; STATUS registerini W ‘nin içine kopyala.
; (STATUS EQU h’03’ komutu ile önceden tanımlıysa !)
• MOVF PORTA ,W
; PORTA ‘yı W ‘ye kopyala.(PORTA EQU h’05’ ile tanımlıysa !)
59
KOMUT GRUPLARI VE FORMATLARI
(Kullanılış Biçimleri)
2 ) Bit Yönlendirmeli Komutlar
• Bir register’da bulunan bitlerden sadece biri üzerinde işlem yapan
komutlar bu gruba girer. Komut Formatı:
•
•
•
•
Örnekler :
BCF 0x03,5 ; 0x03 adresindeki registerin (STATUS’un) 5. bitini 0 yap.
BSF PORTA,3 ; PORTA da bulunan verinin 3. bitini 1 yap.
BCF PORTB,3 ; PORTB ‘deki verinin 3. bitini 0 yap.
;(PORTB EQU h’06’ ile önceden tanımlıysa !)
60
KOMUT GRUPLARI VE FORMATLARI
(Kullanılış Biçimleri)
3 ) Sabit İşleyen Komutlar
• Bu tür komutlar belli bir sabit sayıyı işler. Komut Formatı:
• Örnekler :
MOVLW 0x2F
; W registerine h’2F’ yazar ( yükler )
MOVLW h’17’
; W registerine h’17’ yazar ( yükler )
ADDLW b’00011111‘
; O anda W registerinde bulunan sayıya
; ( 0001 1111 ) = ( 1F )16 ekler.
61
KOMUT GRUPLARI VE FORMATLARI (Devam)
(Kullanılış Biçimleri)
4 ) Kontrol Komutları
• Program akışını değiştiren komutlar bu tür komutlardır. Komut
Formatı:
•
•
•
•
Örnekler :
GOTO DONGU ; Program şartsız olarak DONGU etiketli satıra gider.
GOTO BASLA ; Program şartsız olarak BASLA etiketli satıra gider.
CALL GECIKME ; Program GECIKME etiketli altprograma gider.
62
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
•
•
•
•
•
Örnek olarak, PIC16F84 ye enerji verince …
PORTB’yi tamamen çıkış yaptıktan sonra…
PORTB nin 0. ve 2. bitlerini (RB0, RB2) lojik (1)…
Diğerlerini de Lojik (0) yapan bir program yazalım:
Bu durumda program çalıştıktan sonra PORTB nin
çıkışları şöyle olacaktır :
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0
0
0
0
0
1
0
1
• O halde programla PORTB’ yüklenecek sayı :
• (0 0 0 0 0 1 0 1)2 = (05)16 olacaktır.
63
• İstenen Assembly Programı yazmak için…
• Veri Hafızasındaki Özel Fonksiyon Registerlerinde …
o PORTB ‘nin 0x06 adresinde
o TRISB ‘nin 0x86 adresinde
o STATUS ‘ün 0x03 adresinde
olduklarını hatırlayalım…
• Bu soru için sadece bu programda ilgileneceğimiz…
• Söz konusu 3 registeri adresleriyle beraber Veri Hafıza
Haritasında Bank 0 ve Bank 1 ‘de gösterirsek:
64
BANK DEĞİŞTİRME İŞLEMİ…
• Daha önce de belirtildiği gibi herhangi bir file
registere ulaşmak için…
• O registerin bulunduğu Bank’a geçmek
şarttır.
• Ayrıca burada PORTB den …
• Dışarı Lojik değerler almak istediğimize göre…
• Önce PORTB yi tamamen Çıkış yapmak
gerekir.
65
BANK DEĞİŞTİRME İŞLEMİ (Devam)
• 16F84 ‘de Veri hafızasındaki Özel Fonksiyon
Registerlerinden STATUS Registerinin…
• 5. biti (RP0) Bank değiştirme için kullanılır.
• BSF gibi bir bit yönlendirmeli komutla RP0 = 1
yapılırsa Bank 1 ‘e geçilmiş olacaktır.
STATUS REGISTER (Adresi:0x03 ve 0x83)
7
6
5
4
IRP RP1 RP0 TO
3
2
PD Z
1
0
DC C
66
BANK DEĞİŞTİRME İŞLEMİ (Devam)
• O halde burada STATUS ‘un 5. bitini (RP0=1) yaparak…
• Bank 1 ‘e geçelim;
• Not: STATUS EQU h’03’ ;atama komutu ile önceden
;tanıtma yapıldığı kabul edilsin...
• BSF STATUS , 5 ; STATUS 5. biti RP0=1 yapılarak Bank 1 ‘e geçiliyor.
• Tersine Bank 1 de iken Bank 0’a dönülmek istenirse;
• BCF STATUS , 5 ; ile de aynı RP0 = 0 yapılarak Bank 0’a geçilebilir.
67
PORTB ‘Yİ GİRİŞ/ÇIKIŞ YAPMA İŞLEMİ
• GİRİŞ/ÇIKIŞ için ilgili PORT ‘a karşılık gelen
TRIS registerini…
• Belirli bitlerle (sayıyla) yüklemek gerekir.
• Bir portu çıkış yapmak için ilgili
• TRIS registeri bitlerini “0”,
• Giriş yapmak için “1” yapmak gerekir.
• Burada ilgilendiğimiz PORTB olduğuna göre…
• TRISB registeri ile Çıkış yapılacaktır.
68
PORTB ‘Yİ GİRİŞ/ÇIKIŞ YAPMA İŞLEMİ (Devam)
• PORTB ‘yi tamamen ÇIKIŞ yapacağımıza göre…
• TRISB de tüm bitler (0) yapılmalıdır.
• Bu durumda ;
• Sonuç olarak (00)16 sayısının TRISB registerine
yüklenmesi gerekir.
69
İlk Assembly Program
•
•
•
•
Artık…
ornek.asm olarak adlandıracağımız
ilk programımızı yazalım…
; den sonra yazılanların o komutun açıklaması
olduğunu hatırlayalım.
70
İŞTE PROGRAMIMIZ…
ETİKET
KOMUT
ADRES ya
da VERİ
AÇIKLAMA
; ORNEK.ASM – 01/10/ 2013
Programı hatırlamak için ad ve tarihi yazıldı
LIST
P = 16F84
; Başlık Bölümü, kullanılan PIC bildiriliyor.
PORTB
EQU
h’06’
; 0x06 adresi PORTB olarak tanıtıldı
STATUS
EQU
h’03’
; 0x03 adresi STATUS olarak tanıtıldı
TRISB
EQU
h’86’
; 0x86 adresi TRISB ‘ye olarak tanıtıldı
BSF
STATUS,5
; STATUS 5. biti 1 yap, Bank 1’e geç
MOVLW
h’00’
; W registerine ( 00 )16 sayısını yükle
MOVWF TRISB
; TRISB ye (00) yaz
; ve böylece PORTB yi tamamen çıkış yap.
BCF
STATUS,5
; Bank 0 ’a dön. (Giriş/Çıkış işlemi bitti )
MOVLW
h’05’
; W registerine ( 05 )16 sayısını yükle
MOVWF PORTB
; W deki sayıyı PORTB ‘ye yükle
END
; SON
71
PROGRAMIMIZI YAZALIM
• Hatırlatmalar :
• İlk satırdan sonraki LIST ile hangi PIC’i kullandığımız…
• END ile de programın sona erdiği belirtilir.
• Burada her bir Özel Fonksiyon Registerinin adresi
doğrudan yazılabileceği gibi…
• (örn: STATUS yerine h’03’ yazılabilirdi)
• Başlangıçta EQU komutları ile tanıtma yapılarak…
• Registerin adı Programda doğrudan kullanılabilir.
• Yukarıdaki programda biz bu yolu kullandık.
72
• Ve yukarıdaki örnek programın icrasından
sonra sonuçta PORTB çıkışında LED’ler varsa
RB0 ve RB2 ye bağlı bulunanların yandığı
diğerlerinin söndüğü görülür.
73
MPASM PROGRAMI İLE DERLEME ve
ÖNEMLİ DOSYALAR
•
•
•
•
Aslında bilgisayar ekranında tek bir pencereden ibaret olan
MPASM de Programı Derlemek için…
“Browse” (Gözat) ile ilgili klasörde yazdığımız program olan
Mesela ornek.asm ‘yi bulup “Assemble”(Derle) ye
tıklamak yeterli olacaktır.
• Sonuçta çıkan pencerede…
• “Assembly Successful” mesajı alınırsa derlemenin başarılı
olduğu…
• Ve artık bir programlayıcı kullanarak…
• PIC 16F84 e yükleyeceğimiz dosya olan…
• ornek.hex ‘in üretildiği anlaşılır.
74
MPASM PROGRAMI İLE DERLEME ve
ÖNEMLİ DOSYALAR (Devam)
•
•
•
•
Derleme sırasında hex dosya ile birlikte …
Bazı farklı dosyalar da üretilir.
Programda hata varsa…
Veya değişiklikler yapmak istendiğinde…
• Özellikle iki dosya üretilmelidir:
o ornek .err
(Hata dosyası)
o ornek .lst
(Liste dosyası)
75
INCLUDE DOSYALAR
• Yukarıda belirtildiği gibi Assembly dilinde programlar
yazarken kullanılacak…
• Özel Fonksiyon Register adreslerini (EQU) komutları ile
tanımlamak hem kolaylık sağlamakta hem de
anlaşılırlığı arttırmakta idi.
• Ancak özellikle programımızda çok sayıda register
kullanıyorsak…
• Her sefer bu tanımları tekrar tekrar yapmak gereksiz
gibidir.
• Bu EQU komutları programı da şişirecektir.
• Bunun yerine o PIC için Include Dosya kullanarak…
• Her PIC için sabit olan bu tanımları her programda
yeniden yapmaktan kurtulmuş oluruz.
76
INCLUDE DOSYALAR (Devam)
• Mesela; P16F84.INC adlı “hazır” dosya PIC16F84 için
gerekli tanımları içerir.
• Bu maksatla;
INCLUDE “P16F84.INC”
komutunu (satırını) programda LIST komutundan sonra
yazmamız yeterlidir.
• Not: Sadece Genel Amaçlı RAM bölgesinde ilerde
kullanacağımız (SAYAC gibi) özel bir değişkenimiz için…
SAYAC EQU h’0C’
şeklinde EQU komutu yazmamız gerekecektir.
77
KONFİGÜRASYON BİTLERİ
• Bu bitler PIC’ e gerilim verildiği anda geçerli
kuralları belirlemek içindir.
• Meselâ; PIC devremizin osilatörünü RC tipi
olarak kullanacaksak bunu bildirmemiz lazımdır.
• Benzer şekilde;
• Watchdog timer’ i (WDT) devreye sokmak(ON)
veya çıkarmak (OFF),
• Power-on Reset özelliğini devreye sokmak(ON)
ya da çıkarmak (OFF),
• Programı korumayı devreye almak(ON) veya
almamak (OFF) için bu konfigürasyon bitleri
kullanılır.
78
KONFİGÜRASYON BİTLERİ (Devam)
• Program içersinde bu komutun yazılışına ait…
• Bir örnek şöyle verilebilir:
_CONFIG _CP_ON & WDT_OFF & PWRTE_OFF & RC_OSC
•
•
•
•
CP_ ON
WDT_OFF
PWRTE_OFF
RC_OSC
: Program Koruması var
:Watchdog Timer OFF , kullanılmıyor
: Power-on Reset OFF , kullanılmıyor
: Osilatör Tipi (RC)
• Not: Devrede Kristal kullansaydık RC yerine XT yazılırdı.
79
KONFİGÜRASYON BİTLERİ (Devam)
• Burada “& “ : ve demektir.
• “_ “
Alt çizgi boşluk yerine kullanılıyor
 OFF Yok, devre dışı, kullanılmıyor,
 ON ise devrede, kullanılıyor anlamındadır.
• Aslında Konfigürasyon Bitleri böyle bir komutla programa
yazılmadan programlama esnasında programlayıcı yazılımı
üzerinde de doğrudan belirlenebilir.
• Biz Derste verdiğimiz örneklerde Programlama sırasında bu
bitlerin ayarlandığını varsayacağız.
•




Faydalanılan Kaynaklar :
Mikroişlemciler (6502) Ders Notları 1 - 2, Y. Doç. Dr. Hakan ÜNDİL
Mikrodenetleyiciler ve PIC Programlama, Orhan ALTINBAŞ
PIC Mikrodenetleyiciler , Fevzi AKAR – Mustafa YAĞIMLI
Microchip PIC16F8X ve PIC16F877 PIC Data Sheet
80

Benzer belgeler

Test Çalışma Notları

Test Çalışma Notları Microchip PIC’leri 12/14/16 bitlik kelime boylarında üretilmektedir ve buna göre aşağıdaki aile isimleri mevcuttur. • PIC 16C5XX ailesi 12 bit kelime boyu • PIC 16CXXX ailesi 14 bit kelime boyu • P...

Detaylı

Buradan - 320Volt

Buradan - 320Volt yazıcı bulunmuyorsa herhangi bir yazıcıdan A4 kağıdına çıktı alıp daha sonra bu çıktının asetat kağıdı üzerine fotokopisini çektirebilirsiniz. Ancak lazer yazıcı daha iyi sonuç verecektir. Çıktıyı ...

Detaylı

PIC_NOTLARI_1516_GUZ_Vize

PIC_NOTLARI_1516_GUZ_Vize biliriz. Ancak pratik hayatta çeşitli fiziksel büyüklüklerden onlu (desimal) tabanda söz ederiz. Örnek olarak 25OC sıcaklıktan bahsederken bunun “desimal” olduğunu belirtmesek de o şekilde anlaşılm...

Detaylı

HUNRobotX - Makaleler - PIC ile LED Yakıp Söndüren Devre

HUNRobotX - Makaleler - PIC ile LED Yakıp Söndüren Devre İkinci şekilde ise; bir düğmeye basarsınız (anahtar kapanır ve hemen tekrar açılır, yani bir sinyal gönderir) ve lamba yanar, tekrar basarsınız (yine aynı şekilde anahtar kapanır ve hemen kendiliği...

Detaylı

Ders 2: Çalışma Mantığı ve Komutlar

Ders 2: Çalışma Mantığı ve Komutlar Desimal sayılar için: • Desimal sayılar ise başına d harfi konup yine tırnak içinde yazılır. d‘18‘ , d’255’ gibi. • Örn. (15)10 sayısını W ye yüklemek için ; MOVLW d’15’

Detaylı