mikroişlemci (mikroprosesör - cpu) nedir? · pdf filemİkroİŞlemcİnİn...

90
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: builien

Post on 07-Feb-2018

270 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

• Mikroişlemciler; • Kişisel Bilgisayarlarda

(PC), tek bir chip (entegre) şeklinde kullanılırlar.

• 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? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

MİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ

• Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi (I/O) 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? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

MİKRODENETLEYİCİ (Microcontroller) • Kontrol gereken birçok

alanda ise …

• Mikrodenetleyiciler kullanılırlar.

• Mikrodenetleyicilerde, CPU yanında…

• 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? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

MİKRODENETLEYİCİ (Microcontroller) (Devam)

5

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

• Bu nedenlerle;

• Kontrol işlemlerinde, Sanayide …

• Haberleşmede ve sayısız alanlarda …

• CPU ile birlikte tek bir chip halindeki …

• Mikrodenetleyiciler tercih edilmektedir.

Page 6: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• 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

6

MİKRODENETLEYİCİ (Microcontroller) (Devam)

Page 7: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

7

Page 8: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

8

Page 9: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

9

Page 10: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Öncelikle …

• Uygulama ihtiyacımızın tamamını

karşılamasına;

• Sonra da Fiyatına bakarız.

• Ancak …

10

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

Page 11: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• 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? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• 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ı teknikerler için oldukça avantajlı gözükmektedir.

• Biz dersimizde çok sayıdaki PIC mikrodenetleyicilerden temel bir eleman olan PIC16F84 ‘ü inceleyeceğiz…

12

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

Page 13: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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ı

(devreleri) kurulabilir.

13

Page 14: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

14

PIC MİKRODENETLEYİCİLERİN BAZI AVANTAJLARI : (Devam)

Page 15: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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 )

15

Page 16: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

16

BİR PIC PROGRAMLAMAK İÇİN ENAZ (ASGARİ) İHTİYAÇLAR: (Devam)

Page 17: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• PIC ‘e Programın yüklenmesi için bir “Programlayıcı” ile Programlayıcı 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.

17

BİR PIC PROGRAMLAMAK İÇİN ENAZ (ASGARİ) İHTİYAÇLAR: (Devam)

Page 18: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Bazı uygulamalarda Doğrudan tasarladığımız uygulama devresi üzerinde de programlama yapabiliriz.

(ICSP : In circuit serial

Programming )

• Bu durumda devremizin seri bir ara birimi olmalıdır. (USB, RS232 gibi)

18

BİR PIC PROGRAMLAMAK İÇİN ENAZ (ASGARİ) İHTİYAÇLAR: (Devam)

Page 19: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

19

Page 20: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Komut Kelimesine örnek olarak bir PIC’de…

• “00 0001 0111 0000”

o Bu 14 bit uzunluğunda bir komut kelimesi…

o Mikroişlemciye (CPU)…

o “Aküyü sil” emri verir.

• Komut kelimeleri birleşince Program ortaya çıkar.

20

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

Page 21: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Komut kelimeleri farklı ailelerde değişebilir …

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

• Not: X, yerinde herhangi bir karakter olabilir.

21

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

Page 22: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

BİZ PROGRAMCI OLARAK …

• Biz bu kelime uzunlukları ile fazla ilgilenmeyiz .

• Bizim için önemli olan seçtiğimiz PIC ‘in:

o Hızı,

o Hafıza Tipi ve Miktarı,

o Giriş/Çıkış (I/O) ucu (port) sayısı ,

o Analog Giriş kabul edip etmemesi v.b. gibi

o donanım özelliklerinin ve…

22

Page 23: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

o Assembly dili komutlarının görev/çalışmalarının (Komut Tablosunun) … iyi öğrenilmesidir.

o Örn. Bir Komut Kelimesi(word) 11 0000 0011 0101 iken…

o Assembly Komutu karşılığı; MOVLW h’35’ olurki…

Biz programlamada bu şekli kullanacağız.

23

BİZ PROGRAMCI OLARAK … (Devam)

Page 24: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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 (RAM) birlikte kalıcı verilerin saklanması için (EEPROM) özel türleri de vardır.

24

Page 25: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

PIC16F84 ‘DE PROGRAM HAFIZASI

• Seçtiğimiz PIC16F84 ‘de…

o 1K komut kelime’lik (word)… o 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 (word) kullandığı için 1K bayt yerine 1K word ifadesi tercih edilmektedir.

25

Page 26: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Tekrar hatırlarsak gerçekte program hafızasında…

bu komutlar ikili tabanda (binary) olup…

heksadesimal olarak da ifade edilebilirler.

• Örn: (00 0001 0111 0000)2 = (0170)16

Aküyü sil anlamına gelen komut idi.

• Biz Program yazarken ise aynı komutu; (Assembly Dilinde)

CLRFW şeklinde kullanacağız.

26

PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)

Page 27: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)

• Her bir program hafıza hücresi içerisinde…

• 14 bit uzunluğundaki komut kelimeleri (komutlar) saklanır.

27

Page 28: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

PIC16F84 PROGRAM HAFIZASI (Devam)

• PIC16F84 de…

• Bu Komut Kelimelerinin (word) yazıldığı Program hafızası …

• Flash tipte olup…

PIC düşük gerilimle ( 5V) …

Kolaylıkla Programlanıp …

silinebilir.

28

Page 29: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

PIC16F84 ‘DE VERİ (DATA) HAFIZASI

• Her PIC ‘de bulunan diğer bir hafıza türü Veri Hafızası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 EEPROM türü hafızanın programlanması incelenmeyecektir.

29

Page 30: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

PIC16F84 ‘DE VERİ (DATA) HAFIZASI (Devam)

• PIC16F84’de Veriler…

• 8 bitlik (binary 8 basamaklı) = 1 bayt dır.

• (örn bir veri : 0110 0111)

• PIC16F84’de (RAM türü) Veri Hafızası ikiye ayrılır :

Bank 0

Bank 1

30

Page 31: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Ayrıca Veri Hafızasında …

iki çeşit Saklayıcı (Register) söz konusudur:

oÖzel Fonksiyon Registerleri

(STATUS, PORTA gibi isimleri belirli olanlar)

oGenel Amaçlı Registerler

( Genel Veri Depolama alanıdır.

Herhangi bir genel veri saklanabilir)

31

PIC16F84 ‘DE VERİ (DATA) HAFIZASI (Devam)

Page 32: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

32

Öze

l Fo

nks

iyo

n R

egi

ste

rle

ri Ö

zel Fo

nksiyo

n R

egiste

rleri

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

Page 33: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

BANK 0 (Bütün Registerleri ile)

33

Page 34: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• BANK 0:

o Hafıza Haritası da denilen bu tabloyu incelersek sol sütunda…

o (0X00 … 0X4F) adres aralığında…

o Toplam ( 50 )16=(80)10 adet 8 bit uzunluğunda VERİ HAFIZASI vardır.

Not: 0X: Heksadesimal sayı anlamındadır

34

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

Page 35: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

BANK 1 (Bütün Registerleri ile)

35

Page 36: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• BANK 1:

• Bank 0 ‘a benzer şekilde (0X80 … 0XCF) adres aralığında bulunur.

• Önemli Not: • Burada bazı Özel Fonk. Registerleri… • Hem Bank 0 ‘da hem Bank 1’ de olduğundan

birbirlerinin kopyasıdır. (INDF, STATUS gibi) • Genel Amaçlı Registerler ise Bank 0 ve Bank 1

de her zaman birbirinin kopyasıdır.

36

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

Page 37: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• PROGRAMLAMA İÇİN Ö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ılabilirler.

• İlk enerji verildiğinde PIC “Bank 0” da açılır. • Daha sonra Programcı yazdığı komutlarla “Bank 1” e

geçebilir.

37

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

Page 38: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

38

Page 39: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Meselâ ;

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

• Sonucu PORTB ‘ye yazmak istersek…

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

39

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

Page 40: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

PIC16F84’ ÜN BACAK (PİN) YAPISI VE PORTLARI

• PIC16F84 mikrodenetleyicisi 18 sayısal bacağa (pin) sahiptir

• VDD (+), VSS (-) 5 V besleme uçlarıdır.

• RA ve RB ile başlayan bacaklar PORTA ve PORTB ye aittir.

• 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 Reset işlemi içindir.

40

Page 41: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

41

Page 42: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

42

Page 43: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

• Ayrıca besleme gerilimi 5 V olarak belirtilmişti…

• Bu değerin 5.5 V ‘un üzerine çıkarılması PIC’in bozulmasına sebep olabilecektir.

• Bu yüzden iyi bir besleme kaynağı kullanılmalıdır.

43

PIC16F84 ‘DE PORT BİTİ ÇIKIŞ İKEN

MAKSİMUM AKIMLAR (Devam)

Page 44: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

SINK 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 ile sınırlıdır !

• PORT 'tan içeri daha fazla akıtılan akım…

• PIC ‘in bozulmasına sebep olabilir !

44

Page 45: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Bu tür bağlantıda (Sink akımı) ancak PORT biti = Lojik 0 yapıldığında LED yanacaktır.

• Örnek olarak;

45

SİNK VE SOURCE AKIMLARI (Devam)

Page 46: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

46

• Source Akımı :

• PORT’un içinden toprağa doğru akan akımdır.

• Bu durumda akacak maksimum akım 20 mA dir.

• Bir başka ifade ile…

• PORT ’tan dışarı bu değerden fazla akım

çekilirse PIC bozulabilir.

SİNK VE SOURCE AKIMLARI (Devam)

Page 47: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Bu tür bağlantıda (Source akımı) PORT biti = Lojik 1 yapıldığında LED yanacaktır…

• LED’e seri direnç…

47

SİNK VE SOURCE AKIMLARI (Devam)

Page 48: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

48

Page 49: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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 )

49

Page 50: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• 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

50

Page 51: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

51

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 52: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

52

Page 53: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

53

MCLR (RESET) BACAĞI VE DEVRESİ (Devam)

Page 54: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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)

54

Page 55: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

55

PIC16F84 ve ASSEMBLY DİLİ PROGRAMLAMA (Devam)

Page 56: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

56

PIC16F84 ve ASSEMBLY DİLİ PROGRAMLAMA (Devam)

Page 57: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

57

Page 58: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

ASSEMBLY DİLİNDE PROGRAM YAZARKEN DİKKAT EDİLECEK HUSUSLAR…

Noktalı Virgül ( ; )

o Bir satırın başına (;) konursa o satır ( hex ) koda dönüştürülmez.

o Daha sonra programı değiştirir ya da geliştirirken hatırlamak istediklerimizi de (;) den sonra yazabiliriz.

o Bir komuttan sonraki (;) den sonrası da aynı şekilde sadece bilgi amaçlıdır.

o Örn: MOVLW 0x2F ; Akümülatöre 2F yaz

58

Page 59: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

Program Bölümleri :

o Assembly programında 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…

59

ASSEMBLY DİLİNDE PROGRAM YAZARKEN DİKKAT EDİLECEK HUSUSLAR (DEVAM)

Page 60: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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 ; İlk BEKLE bu komutun etiketidir.

60

ASSEMBLY DİLİNDE PROGRAM YAZARKEN DİKKAT EDİLECEK HUSUSLAR (DEVAM)

Page 61: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

61

Page 62: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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:

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

• Not: Biz Derslerimizdeki programlarda genellikle h’03’ formatını tercih edeceğiz.

62

Page 63: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

63

ASSEMBLY DİLİNDE SAYI VE KARAKTER YAZILIŞLARI

(Devam)

Page 64: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

ASCII karakterler için :

• Tırnak içinde karakterin kendisi yazılır . • Genellikle daha sonra incelenecek 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 yazarak altprogramdan dönüşü sağlar.

64

ASSEMBLY DİLİNDE SAYI VE KARAKTER YAZILIŞLARI

(Devam)

Page 65: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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ı

65

Page 66: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

KOMUT FORMATLARI YAZILIRKEN KULLANILAN BAZI KISALTMA HARFLERİ

• f : File register (Özel veya Genel, PORTA, STATUS vb. )

d : (Sonucun gönderileceği yeri belirtir)

d = W ise (Sonuç W registerine kaydedilir )

d = f ise (Sonuç komutta belirtilen File registerine kaydedilir)

– k : Sabit veya adres etiketi …

– b : Bit veya Binary sayıyı …

– d : Desimal sayıyı …

– h : Heksadesimal sayıyı ifade eder

66

Page 67: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

67

Page 68: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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. ; PORTA EQU h’05’ komutu ile önceden tanımlıysa !

BCF PORTB,4 ; PORTB ‘deki verinin 4. bitini 0 yap. ; PORTB EQU h’06’ ile önceden tanımlıysa !

68

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

Page 69: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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 )2 = ( 1F )16 ekler.

69

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

Page 70: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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)

70

Page 71: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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ükleyeceğimiz 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

71

Page 72: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• İstenen Assembly Programı yazmak için önce…

Veri Hafızasındaki Özel Fonksiyon Registerlerinde …

o PORTB ‘nin 0x06 adresinde (Bank 0 da)

o TRISB ‘nin 0x86 adresinde (Bank 1 da)

o STATUS ‘ün 0x03 ve 0x83 adreslerinde

olduklarını hatırlayalım…

72

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 73: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

73

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 74: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• BANK DEĞİŞTİRME İŞLEMİ için;

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

74

IRP RP1 RP0 TO PD Z DC C

7 6 5 4 3 2 1 0

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 75: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• O halde burada STATUS ‘un 5. bitini (RP0=1) yaparak… Bank 1 ‘e geçelim; 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.

75

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 76: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• 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 PORTB çıkış yapılacaktır. 76

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 77: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• PORTB ‘yi tamamen çıkış 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.

77

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 78: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

78

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 79: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

ETİKET KOMUT ADRES ya da VERİ

AÇIKLAMA

; ORNEK.ASM – 01/10/ 2014 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…

79

Page 80: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

80

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI

(Devam)

Page 81: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

81

)

ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI (Devam)

Page 82: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

ornek.asm ‘yi bulup “Assemble”(Derle)..

ye tıklamak yeterli olacaktır.

82

MPASM PROGRAMI İLE DERLEME ve ÖNEMLİ DOSYALAR

Page 83: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Sonuçta açılan pencerede…

“Assembly Successful” mesajı alınırsa…

derlemenin başarılı olduğu…

ve artık bir programlayıcı kullanarak…

PIC’ e yükleyeceğimiz dosya olan…

ornek.hex ‘in üretildiği anlaşılır.

83

MPASM PROGRAMI İLE DERLEME ve ÖNEMLİ DOSYALAR (Devam)

Page 84: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

MPASM PROGRAMI İLE DERLEME ve ÖNEMLİ DOSYALAR (Devam)

• Derleme sırasında ornek .hex dosyası ile birlikte …

bazı farklı dosyalar da üretilir.

• Programda hata varsa…

veya değişiklikler yapılmak istendiğinde…

Üretilen dosyalardan ikisi önem kazanır ;

o ornek .err (Hata dosyası)

o ornek .lst (Liste dosyası)

• Belirtilen dosyalar not defterinde açılarak incelenmelidir.

84

Page 85: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

85

Page 86: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Diğer taraftan bu EQU komutları yazacağımız 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.

• Mesela; P16F84.INC adlı “hazır” dosya PIC16F84 için gerekli tanımları içerir.

86

INCLUDE DOSYALAR (Devam)

Page 87: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

• Bu maksatla;

INCLUDE “P16F84.INC”

komutunu (satırını) programda… LIST komutundan sonra yazmamız yeterlidir. • Not: Artık 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 yine gerekecektir.

87

INCLUDE DOSYALAR (Devam)

Page 88: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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.

88

Page 89: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

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

89

Page 90: Mikroişlemci (Mikroprosesör - CPU) Nedir? · PDF fileMİKROİŞLEMCİNİN ÇEVRESİYLE İLETİŞİMİ •Mikroişlemci ile çevresindeki Hafıza (Memory), Giriş/Çıkış Birimi

KONFİGÜRASYON BİTLERİ (Devam) • Burada; & : Ve _ : Alt çizgi boşluk yerine OFF : Yok, devre dışı, kullanılmıyor, ON : Devrede, kullanılıyor anlamındadır.

• Not 1: 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.

• Not 2: 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

90