mikroişlemci (mikroprosesör - cpu) nedir? · (ram,rom vb.), giriş/Çıkış birimleri(port vb.)...

80
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

Upload: others

Post on 12-Sep-2019

36 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 2: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 3: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 4: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 5: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 6: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• Kontrol işlemlerinde,

• Sanayide,

• Haberleşmede,

• ve sayısız alanlarda

• CPU ile birlikte tek bir chip halindeki…

• Mikrodenetleyiciler tercih edilmektedir.

6

MİKROİŞLEMCİ (CPU) (Devam)

Page 7: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 8: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 9: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 10: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 11: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• Ö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

Kullanılacak Mikrodenetleyici’yi seçerken (Devam)

Page 12: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 13: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 14: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 15: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 16: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 17: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 18: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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)

Page 19: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• Ö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

PIC MİKRODENETLEYİCİLERİN TÜRLERİ VE ÖZELLİKLERİ (Devam)

Page 20: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 21: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 22: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 23: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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)

Page 24: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 25: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 26: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 27: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 28: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

28

Öze

l Fo

nks

iyo

n R

egi

ste

rle

ri Ö

zel Fo

nksiyo

n R

egiste

rleri

PIC16F84 ‘DE VERİ HAFIZA HARİTASI (sadeleştirilmiş) (BANK 0 ve BANK 1 YAPISI)

Page 29: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

BANK 0 (Bütün Registerleri ile)

29

Page 30: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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

PIC16F84 ‘DE VERİ HAFIZA HARİTASI (BANK 0 ve BANK 1 YAPISI) (Devam)

Page 31: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

BANK 1 (Bütün Registerleri ile)

31

Page 32: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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)

Page 33: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• Ö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

PIC16F84 ‘DE VERİ HAFIZA HARİTASI (BANK 0 ve BANK 1 YAPISI) (Devam)

Page 34: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

Ö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

Page 35: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• Meselâ ;

• (PORTA) ‘yı (03) sayısı ile toplayıp…

• Sonucu PORTB ‘ye yazmak istersek…

• Akümülatörden (W ) faydalanmak gerekir…

35

ÖZEL BİR REGİSTER ( W : AKÜMÜLATÖR ) (Devam)

Page 36: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 37: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 38: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 39: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 40: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

40

• 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

SİNK VE SOURCE AKIMLARI (Devam)

Page 41: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 42: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 43: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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.

OSİLATÖR TİPLERİ VE BAĞLANTILARI

43

Page 44: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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.

44

OSİLATÖR TİPLERİ VE BAĞLANTILARI(Devam)

NOT: Kullanılacak Osilatör tipi komut olarak veya programlama esnasında belirtilmelidir. Bunun yolu ilerde açıklanacaktır.

Page 45: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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.

45

1

0

Butona basıldı. Reset oldu

Buton bırakıldı. Program baştan başlar

MCLR

Page 46: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 47: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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 ve ASSEMBLY DİLİ PROGRAMLAMA (Devam)

Page 48: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 49: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

49

Page 50: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 51: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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)

Page 52: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Assembly Dilinde Program Yazarken Dikkat Edilecek Hususlar (Devam)

Page 53: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

Örnek bir Program Yazılışında Bölümler

53

Page 54: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 55: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 56: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

ASCII karakterler için :

• Tırnak içinde karakterin kendisi yazılır .

• Genellikle RETLW komutu ile beraber kullanılır.

Örn.

RETLW ‘B’ ;(B heks. bir sayı değil harftir)

• RETLW ‘X’

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

Page 57: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 58: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 59: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 60: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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)

Page 61: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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 (Kullanılış Biçimleri)

Page 62: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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.

KOMUT GRUPLARI VE FORMATLARI (Devam) (Kullanılış Biçimleri)

62

Page 63: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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 :

• O halde programla PORTB’ yüklenecek sayı :

• (0 0 0 0 0 1 0 1)2 = (05)16 olacaktır.

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

0 0 0 0 0 1 0 1

63

Page 64: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• İ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

Page 65: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 66: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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)

66

IRP RP1 RP0 TO PD Z DC C

7 6 5 4 3 2 1 0

Page 67: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 68: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 69: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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

PORTB ‘Yİ GİRİŞ/ÇIKIŞ YAPMA İŞLEMİ (Devam)

Page 70: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

İ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

Page 71: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

İŞTE PROGRAMIMIZ…

71

Page 72: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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.

PROGRAMIMIZI YAZALIM

72

Page 73: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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

Page 74: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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

Page 75: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 76: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 77: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

• 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

INCLUDE DOSYALAR (Devam)

Page 78: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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

Page 79: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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 : Program Koruması var • WDT_OFF :Watchdog Timer OFF , kullanılmıyor • PWRTE_OFF : Power-on Reset OFF , kullanılmıyor • RC_OSC : Osilatör Tipi (RC)

• Not: Devrede Kristal kullansaydık RC yerine XT yazılırdı.

79

Page 80: Mikroişlemci (Mikroprosesör - CPU) Nedir? · (RAM,ROM vb.), Giriş/Çıkış Birimleri(Port vb.) Mikroişlemci dışında bulunan farklı entegrelerdedir. •PC için kullanılan

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