pic18f452 mikrodenetleyicisinin donanımsal yapısı ve komut seti

77
T.C SAKARYA ワNİVERSİTESİ TEKNİK EĞİTİM FAKワLTESİ ELEKTRONİK VE BİLGİSAYAR EĞİTİMİ Mikroişlemci ve Mikrodenetleyici Uygulamaları II PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti Şahabettin Akca (B080510044) Sakarya - 2012

Upload: anka-bilisim-teknolojileri

Post on 04-Jul-2015

1.414 views

Category:

Education


10 download

DESCRIPTION

şahabettin akca tarafından sakarya üniversitesi mikro denetleyici uygulamaları dersi için ödev amaçlı hazırlanmıştır.

TRANSCRIPT

Page 1: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

T.CSAKARYA ÜNİVERSİTESİ

TEKNİK EĞİTİM FAKÜLTESİELEKTRONİK VE BİLGİSAYAR EĞİTİMİ

Mikroişlemcive Mikrodenetleyici

Uygulamaları IIPIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve

Komut Seti

Şahabettin Akca (B080510044)

Sakarya - 2012

Page 2: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

İÇİNDEKİLERBÖLÜM 1. GİRİŞ

1.1 Mikroişlemciler ve Mikrodenetleyiciler

BÖLÜM 2. DONANIMSAL YAPISI

2.1. Genel Özellikleri

2.2. İç Mimarisi

2.3. Hafıza Organizasyonu

2.4. 18F452 Mikrodenetleyicisi İç Mimarisinin TemelÖzellikleri

2.5. Çevresel Özellikler

BÖLÜM 3. KOMUT SETİ VE UYGULAMALAR

3.1. Veri Transferi

3.2. Döngü Düzenlemek

3.3. Zaman Gecikmesi ve Alt Programlar

3.4. Bit Kaydırma

3.5. Çevrim Tabloları

3.6. Kesmeler

3.7. Zamanlayıcılar

3.8. A/D VE D/A Dönüştürme

Page 3: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

3.8.1. PWM Metodu ile D/A Dönüşümü

3.8.2. A/D Dönüşümü

3.9. USART

Page 4: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Bölüm 1.GirişGünümüzde hızla gelişen teknoloji bilgisayarla kontroledilen cihazları bizlere çok yaklaştırdı. Öyle ki günlükhayatımızda sıkça kullandığımız bir çok elektronik cihaz(cep telefonu, faks, oyuncaklar, elektrikli süpürge, bulaşıkmakinası, vs.) artık çok küçük sayısal bilgisayarlarla (mikrodenetleyiciler) işlev kazandırılabilmektedir. Benzer işler,ilk zamanlarda mikroişlemci tabanlı bilgisayar kartları ileyapılabilmekteydi. Mikroişlemci ile bir cihazı kontrol etmeişlemi Giriş/Çıkış ve hafıza elemanı gibi ek birimlereihtiyaç duyar. Böylesi bir tasarım kolay olmamakla birlikte,maliyet ve programlama açısından da dezavantajlarasahiptir. İşte mikrodenetleyiciler bu sorunları ortadankaldırmak ve bir çok fonksiyonu tek bir entegrede toplamaküzere tasarlanmış olup, günümüzde hemen hemen bir çokelektronik cihazda farklı tipleri bulunmaktadır.

PIC mikrodenetleyicileri ise en yaygın ve en kullanışlımikrodenetleyici olarak karşımıza çıkmaktadır.PICmikrodenetleyicileri çok geniş bir ürün yelpazesine sahiptir.Her amaca yönelik bir mikrodenetleyici bulunabilmektedir.Bu mikrodenetleyicilerin en fazla kullanılmasının nedeni

Page 5: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Flash Hafızaya sahip olmasıdır. Flash Hafıza teknolojisi ileüretilen bu bir belleğe yüklenen program, chip‟e uygulananenerji kesilse bile silinemez. Yine bu tip bir belleğeistenilirse yeniden yazılabilir. Bu belleğe sahip olan PIC leriprogramlayıp deneylerde kullandıktan sonra, silip yenidenprogram yazmak PIC ile yeni çalışmaya başlayanlar içinbüyük kolaylık sağlar.PIC mikrodenetleyicileriniprogramlamak için kullanılacak olan komutlar oldukçabasit ve sayı olarak ta azdır. Bu nedenle tercihedilmektedirler.

Page 6: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

1.1 Mikroişlemciler veMikrodenetleyicilerMikroişlemci, saklı bir komut dizisini ardışıl olarak yerinegetirerek veri kabul edebilen ve bunları işleyebilen sayısalbir elektronik eleman olarak tanımlanabilir. Günümüzdebasit oyuncaklardan, en karmaşık kontrol ve haberleşmesistemlerine kadar hemen her şey mikroişlemcili sistemlerlekontrol edilmektedir.

Mikrodenetleyici veya sayısal bilgisayar üç temel kısım(CPU, Giriş/Çıkış Birimi ve Hafıza) ile bunlara ek olarakbazı destek devrelerinden oluşur. Bu devreler en basitten, enkarmaşığa kadar çeşitlilik gösterir.

Giriş / Çıkış (Input / Output) : Sayısal, analog ve özelfonksiyonlardan oluşur ve mikroişlemcinin dış dünya ilehaberleşmesini sağlar.

CPU (Central Processing Unit – Merkezi İşlem Birimi) :Sistemin en temel işlevi ve organizatörüdür. Bilgisayarın

Page 7: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

beyni olarak adlandırılır.Komutları yürütmek, hesaplarıyapmak ve verileri koordine etmek için 4, 8, 16, 32 ve 64bitlik sözcük uzunluklarında çalışır.

Hafıza : RAM, ROM, PROM, EPROM, EEPROM veyabunların herhangi bir birleşimi olabilir. Bu birim, programve veri depolamak için kullanılır.

Osilatör : Mikroişlemcinin düzgün çalışabilmesi içingerekli olan elemanlardan biridir. Görevi; veri vekomutların CPU 'ya alınmasında, yürütülmesinde, kayıtedilmesinde, sonuçların hesaplanmasında ve çıktıların ilgilibirimlere gönderilmesinde gerekli olan saat darbeleriniüretmektir. Osilatör, farklı bileşenlerden oluşabileceği gibihazır yapılmış bir modül de olabilir.

Diğer devreler : Mikroişlemci ile bağlantılı diğer devreler;sistemin kilitlenmesini önlemeye katkıda bulunanWatchdog Timer, mantık aşamalarını bozmadan birdenfazla yonganın bir birine bağlanmasını sağlayan adres veveri yolları (BUS) için tampon (buffer), aynı BUS 'abağlanmış devrelerden birini seçmeyi sağlayan, adres veI/O için kod çözücü elemanlar (decoder).

Mikrodenetleyici (microcontroller) bir bilgisayariçerisinde bulunması gereken temel bileşenlerden Hafıza,I/O ünitesinin tek bir chip(yonga) üzerinde üretilmişbiçimine denir.

Page 8: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti
Page 9: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

BÖLÜM 2. DONANIMSALYAPISIPIC18Fxxx serisinde yüksek performanslı RISC

İşlemci kullanılmaktadır.

Mimarisi ve yapısı optimize edilmiş C derleyicisikullanılmaktadır. Kaynak kodlar PIC16 ve PIC17

komut setleri ile uyumlu çalışmaktadır. Doğrusaladreslenebilir 32K program hafızası ve 1.5K veri hafızasınasahiptir.

2.1. Genel ÖzellikleriPIC18F452 Mikrodenetleyicisi;

- 40 Mhz’ye kadar işlemci saat hızı- 75 Adet komut- Tüm komutlar 1 saykıl sürer (4 komut hariç:

call,goto,btfss ve incfsz komutları 2 saykıl)- Power-on Reset (POR), Power-up Timer (PWRT)- Watchdog Timer (WDT);- 10 bit analog/dijital çevirici- Programlanabilen kod koruma;- Enerji tasarrufu için uyku (SLEEP) modu;- Program kodunun güvenliğini sağlayabilme

CMOS Teknlojisi:

Page 10: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

- Düşük güç tüketimi, yüksek hızlı FLASH/EEPROMteknolojisi

- Tamamen statik dizayn;- Devre üzerinde seri programlama- 5 V’luk kaynak ile çalışma- Düşük güç harcama- < 2 mA typical @ 5V, 4 MHz- 20 mA typical @ 3V, 32 kHz- < 1 mA typical standby

2.3. Hafıza OrganizasyonuVeri ile program hafızası ayrı belleklerde saklanır

ve ayrı yolları kullanır. Bu özellik sayesinde bu bloklaraeş zamanlı erişim sağlanabilir. PIC18F452Mikrodenetleyicisindeki hızlı ve performanslıolmasının önemli sebeplerinden birisidir. Veriyollarında kilitlenmeler olmaz. Harvard Mimarisiolarakta bilinmektedir.Sahip olduğu bellek türleri;o 32K Flash Belleko 16384 Program Hafızası (Talimat)o 1536 Bytes RAM Belleko 256 Bytes EEPROM Bellek

Program sayıcı 2Mbyte lik boş program hafızası

alanında 21-bit adresleme yapabilmeye imkan tanımaktadır.

Page 11: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Reset kesme adresi 000h ve diğer kesme adresleride0008h ile 0018h aralığındadır. Şekil 3.1 de Program hafızasıve yığın için adresleme detaylarını inceleyebilirsiniz.

Şekil 3.1 de Program hafızası ve yığın için adresleme

Program Belleği; Çalıştırılacak komut kodlarınıtutmak için kullanılır.

Page 12: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Veri Belleği; Veri belleği kendi içinde, bank adı verilensayfalara bölünmüştür. Bunların her birinin başında,

özel fonksiyonlu kayıtçı (Special FunctionRegister-SFR) alanı ve daha sonra da genel amaçlı

kayıtçı (General Purpose Registers-GPR) alanı bulunur.

Bank0 ve Bank1 STATUS kaydedicisinin, 5 ve 6.bitleri olan RP0, RP1 adlı bitler; bank seçimi bitleri

olarak, bu bellek bölümlerini seçmede kullanılır.

Şekil 3.2 den veri belleği sayfalarını inceleyebilirsiniz.

Page 13: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Şekil 3.2. Veri Belleği Sayfaları İçeriği (Bank0-1)

Kayıtçılar ve işlevleri;

INDF (Indirect File Register): Dolaylı adreslemeyazmacıdır. Birbiri ardı sıra yapılacak erişim işlemlerinde,GPR-Genel amaçlı yazmaçlarla (statik RAM alanının)kullanımı hızlandırılır ve yazılacak programı küçültür.

TMR0 (Timer): Mikrodenetleyici içinde bulunanzamanlayıcı ve sayaç olarak çalıştırılan bölümü denetleyenyazmaçtır.

PCL (Program Counter Low Byte): Bir sonra çalıştırılacakkomutun program belleğindeki adresini tutar.

Page 14: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

STATUS: Mikrodenetleyici içindeki aritmetik işlem birimi(ALU), işlem sonuçlarına ait bazı bilgileri durumyazmacında tutar. Bank seçme bitleri de bu yazmaçtadır.Programa isteğine göre bu birimleri yönlendirir.

FSR (File Select Register): Dolaylı adreslemede INDF ilebirlikte kullanılır. Mikrodenetleyicinin içindeki RAMadresinde yapılacak işlemlerde, RAM adresini tutar. Budurumda INDF ‟ye yazılacak her veri, aslında adresi FSR‟de bulunan RAM‟ a yazılmıştır. Aynı şekilde INDF denokunan veri de adresi FSR de bulunan RAM danokunmuştur.

PORTA - PORTE: Portlar, mikrodenetleyicinin dışdünyadan bilgi alması ve kendi dışındaki devrelere veriaktarabilmesi amacıyla kullanılır. P1C18F842 nin beş portuvardır. A Portu 6 bit genişliğindedir. B, C, D portları 8 bit, Eportu ise 3 bit genişliğindedir.

TRISA - TRISE: Portların yönünü (yongaya veri girişi mi,yoksa yongadan veri çıkışı mı yapılacak?) belirleyenyazmaçlardır. Eğer portların herhangi bir pinindenmikrodenetleyici dışına veri gönderilecekse, önce ilgiliportun yön yazmacının aynı numaralı biti, “0” yapılır. Eğero pinden mikrodenetleyiciye veri girilecekse, yine önceden,o portun yön yazmacının aynı numaralı biti “1” yapılır.Özetle ilgili TRIS yazmacı pini çıkış için “0”, giriş için “l”yapılır.

Page 15: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

EEDATA ve EEADR: Mikrodenetleyici içindeki EEPROM(kısaca E2 veri belleğine ulaşmakta kullanılırlar. SonuçtaEEDATA yazmacındaki veri EEADR yazmacında adresnumarası bulunan EEPROM belleğine yazılır. Ya daEEADR yazmacında adres numarası bulunan veri,EEPROM veri belleğinden okunarak EEDATA yazmacınagetirilir.

PCLATH: Program sayacının yüksek öncelikli byte yani,üst 5 biti için kullanılır.

INTCON: Kesme (interrupt) işlemlerinde kullanılır.

Page 16: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

2.4. 18F452 Mikrodenetleyicisi İçMimarisinin Temel Özellikleri

Page 17: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Şekil 2.1 de 18F452 nin pin bağlantıları verilmiştir.Bubağlantıları kısaca açıklarsak; Mikro denetleyici toplam 5porttan meydana gelmektedir. Bunlar A,B,C,D ve Eportlarıdır.Bütün portlar dijital giriş/çıkış olarakkullanılabilir.

A portu 6 giriş/çıkışa sahiptir ve dijital giriş çıkış olarakkullanılabilir.

B portu 8 giriş/çıkışa sahiptir. Bu portun 0,1,2,3,4 nolupinleri harici kesme girişi olarak kullanılabilir.

C portu 8 giriş/çıkışa sahiptir. Pwm, capture/compare, spive bilgisayar ile seri iletişim kurma gibi işlevleri vardır.

D portu 8 giriş/çıkışa sahiptir. Paralel slave port ilemikroişlemci portu olarak kullanılabilir.

E portu 3 giriş/çıkışa sahiptir. Analog/dijital çevirici olarakkullanılabilir.

Page 18: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Şekil 2.1. 18F452 Pin Yapısı (40 Pin)

Şekil 2.2. 18F452 Pin Yapısı (44 Pin)

Page 19: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

2.5. Çevresel ÖzelliklerYüksek kaynak/sink akımına (25 mA/25 mA) sahiptir.

3 Adet harici kesme pini bulunmaktadır:

- Timer0 Modülü: 8/16 bit programlanabilirön-ölçeklemeli zamanlayıcı /sayıcı

- Timer1 Modülü: 16 bit zamanlayıcı/sayısı; harici birclock ile uyuma modunda iken arttırılabilir.

- Timer2 Modülü: 8 bit zamanlayıcı/sayısı (PWM)

- Timer3 Modülü: 16 bit zamanlayıcı/sayısı

- Opsiyonel ikincil osilatör Timer1/Timer3

- İki Kaydetme/Karşılaştırma/PWM(CCP) modülü

CCP pinleri olarak yapılandırılarak olabilir: Capture input: capture is 16-bit, max. resolution 6.25 ns (TCY/16) Compare is 16-bit, max. resolution 100 ns (TCY) PWM output: PWM resolution is 1- to 10-bit, max. PWM freq. @:

8-bit resolution = 156 kHz10-bit resolution = 39 kHz

- Ana Senkron Seri Port (MSSP) modülü,Iki çalışma modu:- 3 telli SPI ™ (destekleyen tüm 4 SPI modu)- I2C ™ Master ve Slave modu

- Adresli USART modülü:- Desteklenen RS-485 ve RS-232

- Paralel Slave Port (PSP) modülü

Page 20: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

BÖLÜM 3. KOMUT SETİ VEUYGULAMALARPIC serisi mikrodenetleyicileri programlamak için bazıyazılım ve donanım elemanlarına gerek duyulur. Bunlar;

Kişisel bilgisayarlar (PC) Programlama Devreleri Metin Editör Programları Assembly kodu derleyicileri (assembler) Program yükleme yazılımlarıdır.

Metin editör programı olarak genellikle Windowsişletim sistemi ile birlikte yüklenen “Not defteri” programıkullanılabilir. Yazılan bu assembly program kodları,Microchip tarafından ücretsiz olarak verilen MPSAMprogramı ile PIC‟in işlem yapabildiği HEX kodlarınadönüştürülür. Bu HEX kodlarının PIC‟e yüklenmesi için birprogramlayıcı devreye ve bu devrenin yazılımına ihtiyaçduyulmaktadır.

Programlayıcı devre çeşitleri olarak ta paralel, seri veyaUSB portlarını kullanan programlayıcılar kullanılmaktadır.

Paralel port üzerinden işlem yapacak olan devreler hariciolaraktan bir güç kaynağına ihtiyaç duyarlar. Diğer devrelergüç kaynağına ihtiyaç duymazlar. Bununla birlikte

Page 21: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

assembly komutları yazılmadan yüksek ve orta seviyelidiller kullanılarak da PIC programı yazabiliriz.

Örneğin; PICBasic PRO programı ile BASİC temelli birdilde ve PIC C programı ile C temelli bir dilde PICprogramı yazabiliriz. Yüksek ve orta seviyeli diller ileprogram yazmaya olanak sağlayan yazılımlar geneldeücretlidir. Kısıtlı sürümleri ücretsiz olarak kullanılmaktadır.

Şekil 4.1. Pic Programlama Adımları

Assembly dili, bir PIC‟e yaptırılması istenen işlerin belirlikurallara göre yazılmış komutlar dizisidir. Assembly dili

Page 22: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

komutları İngilizce dilindeki bazı kısaltmalardan meydanagelir. Bu kısaltmalar genellikle bir komutun çalışmasınıifade eden cümlenin baş harflerinden oluşur. Böylecekomut, bellekte tutulması kolay hale gelir. PICmikrodenetleyicileri RISC mimarisi ile üretildiklerinden azsayıda komut ile programlanırlar.

Assembly dilinin temel bileşenleri;

Etiketler (Labels)

Komutlar (Instructions)

İşlenecek veriler (Operands)

Bildirimler (Direktifler-Directives)

Yorumlar (Comments)

Etiketler PIC‟in program ve veri belleğindeki belirli biradresi isimlerle ifade etmeyi sağlar. Özellikle alt programçağrılmasında kullanılır. Assembler, programı derlerkenetiketi gördüğü anda ilgili etiketin adresini otomatik olarakyerine koyup işlemi yapacaktır. Etiketler bir harfle veya “_”karakteri ile başlamalıdır. Program yazılırken Türkçekarakter kullanmamaya dikkat etmeliyiz.

Aynı zamanda etiketler büyük- küçük harf ayrımına karşıduyarlıdır ve en fazla 32 karakter uzunluğundadır. Komutkullanımında dikkate alınması gereken bir noktada yazımhatalarının yapılmamasıdır.

Page 23: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Program kodunun açıklanması için kullanılan yorumlar“;” işaretinden sonra yazılır. Yani baş tarafına “;” konulansatırlar, assembler tarafından hex. kodlaradönüştürülmezler.

Bu satırlar programın geliştirilmesi esnasında hatırlatıcıaçıklamaların yazılmasında kullanılır.

#DEFINE

Örnek 3.1:

#define AC 1

#define LED PORTB,2

Bu program satırı ile artık programın herhangi biryerinde “AC” ifadesi kullanıldığında bu, “1” anlamına gelir.Aynı şekilde program kodunda “LED” ifadesikullanıldığında bu , PORTB nin 2. ucu anlamına gelir.

#INCLUDE

Programa ek bir dosya ilave edip komutlarınçalıştırılmasını sağlar.

Örnek 3.2:

#include <P18F842.inc>

#include “ degisken.h”

CONSTANT

Page 24: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Metin türü olan bir ifadeye sayısal bir değer atamayısağlar.

Örnek 3.3:

Constant MIN=50

Constant MAX=9600

Programımızın derlenmesi yapılırken yukarıda yazılanmetin türü ifadelerle karşılaşıldığında bu ifadelere atanansayısal değerler işleme alınır.

VARIABLE

Metinsel bir ifadeye değiştirilebilir bir sayısal değeratamayı sağlayan ifadedir.

Örnek 3.4:

Variable SICAKLIK=25

Variable DEGER=10

Variable ORTALAMA=50

SET

Önceden tanımlanan bir değişkenin değerini değiştiripyeni bir ifade atamamızı sağlar.

Örnek 3.5:

SICAKLIK set 35

DEGER set 40

Page 25: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

EQU

Program içerisinde sabit tanımlamamızı sağlayanifadedir.

Örnek 3.6:

SAYAC EQU 0x20

Bir etikete veri belleğinin bir adresini atamamızı sağlar.

ORG

Yazılan programımızın, mikrodenetleyicinin veribelleğinin hangi adresinden başlanıp yükleneceğini belirler.

Örnek 3.7:

ORG 0x000

IF, ELSE, ENDIF

IF şart deyimidir. Belirlenen koşul sağlandığında IFdeyimini takip eden program kodları işleme koyulur. Eğerşart sağlanmıyorsa ELSE deyiminden sonraki komutsatırları işleme girer. Eğer IF bildiriminden sonra ELSEkullanılmazsa ENDIF bildiriminden sonra gelen komutlarişleme koyulur. Kullanılan IF bildiriminden sonra mutlakaENDIF bildirimide kullanılmalıdır.

Örnek 3.8:

IF MAX==1000

movlw h „01‟

Page 26: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

else

movlw h „02‟

endif

Bu ifadeye göre MAX değeri 1000‟e eşitse movlw h „01‟komutu, değilse movlw h „02‟ komutu yüklenir.

END

Program sonunu belirten ifadedir.

Örnek 3.9:

…………

…………

End

WHILE, ENDW

While ifadesinden sonra yazılan koşul sağlanıncayakadar WHILE ile ENDW ifadeleri arasındaki programkodları derlenir.

Örnek 3.10:

While SAY<15

SAY=SAY+2

ENDW

Bu komut satırına göre SAY değişkeninin değeri15‟den küçük olduğu sürece 2 arttırılır.

Page 27: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

IFDEF

#Define ile atanan metnin tanımlı olduğu durumda ifdefbildirimine kadar olan program kodunun derlenmesinisağlar.

Örnek 3.11:

#define led 1

……

……

ifdef led

Page 28: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Sembol Tanımlamaları :f Register File Adress: kayıtçı adı veya adresi (0x00 ile 0x7F)

w Akümülatör, çalışma kayıtçısı

b Bit tanımlayıcısı; 8 bitlik kayıtçının 0~7 arasındaki bir biti veya etiket

(EQU komutu ile adresi tanımlanmış olması gerekir)

d Destination : Gönderilecek yer; komutun çalıştırılmasından sonra sonucun nereye yazılacağını belirler.

d = 0 W kayıtçısına, d = 1 dosya kayıtçısına

k Sabit bir sayı (0x0C veya 0CH, 00001100B, 10D) veya adres etiketi

x “0” yada “1” önemli değil

TO Zaman aşımı biti (Time-out bit)

PD Güç kesimi biti (Power-down)

Kayıtçı Adresleme Modları

PIC lerde başlıca üç tip adresleme modu vardır:

- Anında(Immediate) Adresleme:

Örnek 3.13: MOVLW HSözcüğü : 11 0000 0000 1111 =300F

Page 29: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

- Doğrudan (Direct) Adresleme :

Örnek 3.14:

Z EQU d„2‟ // Status kayıtçısının 2. biti Z (zero) dur.

BTFSS STATUS, Z0011=1D03

- Dolaylı (Indirect) Adresleme : FSR (özel fonksiyonlukayıtçı) kayıtçısına yazılır. FSR nin işaret ettiği adresiniçeriği için INDF kullanılır.

INDF = [FSR]; okuma

[FSR] = INDF; yazma

- Heksadesimal Sayılar

Heksadesimal sayılar “0x”, “0” veya “h” harfleriylebaşlamalıdır.

Örneğin, STATUS kayıtçısına 03 adresi atamak için ;

STATUS EQU 0x03

EQU 3

EQU 03

EQU 03h

EQU h „03‟

Page 30: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

kullanılır. MOVLW komutu kullanılarak w kayıtçısıiçerisine yüklenecek olan FF heksadesimal sabitler ise ;

MOVLW 0xFF

h „FF‟

- Binary Sayılar

Binary sayılar yazılırken b harfi ile başlamalıdır. Örneğin00001010 binary sayısı W kayıtçısının içerisineyüklenirken aşağıdaki gibi yazılmalıdır.

MOVLW b „00001010‟

- Desimal Sayılar

Desimal sayıların başına d harfi koyularak tırnak içerisindeyazılır. Örneğin 15 desimal sayısının W kayıtçısınıniçerisine yüklerken aşağıdaki gibi yazılmalıdır.

MOVLW d „15‟

6.4.4.4. ASCII Karakterler

ASCII karakterler yazılırken RETLW komutu ile yazılır.

RETLW „A‟

RETLW „T‟

3.1. Veri Transferi

Page 31: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVF PORTB,W ; PortB‟nin içeriğini W kayıtçısına taşı

MOVWF PORTA ; W kayıtçısının içeriğini PortA‟yagönder

Örneğin; PortB‟ye bağlı 8 adet LED bulunsun. Buledlerden ilk dört tanesini yakmak

istersek aşağıdaki komutlar yazılmalıdır.

MOVLW H‟0F‟ ; W kayıtçısına h„0F‟ yükle h „0F‟ verisini binary karşılığı b„00001111‟ dir

MOVWF PORTB ;W kayıtçısının içeriğini PortB‟ye gönderir.

Örnek 3.1.1: PortA‟nın uçlarına bağlı olan butonlardanhangisi basılı tutulursa PortB‟deki o butona karşılık gelen

LED‟i söndüren program ve akış şeması.

Bir kayıtçı içerisindeki herhangi bir biti test edilmek isteniyorsa BTFSC veya BTFSS komutları kullanılır. Bu testsonucuna göre program akışı istenilen komuta aktarılarak devam edilebilir.

Page 32: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

LIST P=18F842PORTA EQU h „05‟PORTB EQU h „06‟STATUS EQU h „03‟TRISA EQU h „85‟TRISB EQU h „86‟CLRF PORTB ; PortB‟ye bağlı ledleri söndürBSF STATUS,5 ; BANK1‟e geçCLRF TRISB ; PortB‟nin uçlarını çıkış yapMOVLW h„FF‟ ; W kayıtçısına h„FF‟ i yükleMOVWF TRISA ; PortA‟nın uçlarını giriş yapBCF STATUS,5 ; BANK0‟a geç

Page 33: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

BASLAMOVF PORTA,W ; Porta‟yı oku, sonucu W‟ya yazMOVWF PORTB ; Butonların durumunu PortB‟degösterDONGUGOTO DONGU ; Sonsuz döngüEND ; Programın sonuDuraklama komutu olmadığı için programda sonsuzdöngü kullanılmıştır. Sonsuz döngü içerisine istenirsekomut yazılabilir. Bu durumda reset tuşuna basılanakadar yada PIC‟ın enerjisi kesilene kadar aynı komutlartekrarlanır.

3.2 Döngü DüzenlemekProgram yazarken bazı işlemlerin belirli sayıdatekrarlanması gerekebilir. Bu durumda kayıtçılardan birisayaç olarak kullanılır. Daha sonra her işlemtekrarlandığında sayaç değeri bir azaltılır. Azaltma işleminiDECFSZ komutu ile yapılır.

Page 34: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

TEKRARDECFSZ SAYAC,FGOTO TEKRARBSF PORTB,0Örnek 3.2.1: A portunun 1. bitine bağlı butona 10 defabasıldıktan sonra B portunun 0. bitine bağlı

olan ledleri yakan program.

Kaynak Kod:

LIST p=P18F842INCLUDE “P18F842”SAYAC EQU h „20‟ ; Sayac isimli değişken tanımlanmasıCLRF PORTB ; PortB‟ye bağlı ledleri söndür

Page 35: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

BSF STATUS,5 ; Bank1 e geçCLRF TRISB ; PortB‟nin uçlarını çıkış yap.MOVLW h „FF‟ ; W kayıtçısına h „FF‟ yüklenirMOVWF TRISA ; PortA‟nın uçlarını giriş yapBCF STATUS,5 ; Bank0 „a geçBASLAMOVLW d‟10‟ ; W kayıtçısına d‟10‟ yükleMOVWF SAYAC ; SAYAC değişkenine W taşıTESTBTFSC PORTA,1 ; PortA‟nın 1 biti 0 mı?GOTO TEST ; Değilse, TEST isimli etikete geri dönNOPNOP ; Gecikme zamanı içinNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPDECFSZ SAYAC,F ; SAYAC değişkenin içeriği, 0 mı?GOTO TEST ; DeğilseBSF PORTB,0 ;PORTB‟nin 0. bitini 1 yapEND

Page 36: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Butona basma sayısı 10‟a ulaşmadan PortB‟nin 0.bitindekiLED‟in yandığı görülmektedir.

Burada pull-up olayı gerçekleşmiştir. Yani butonabasılmadığında +5 voltta basıldığında ise 0 V

olmaktadır. Butona basma ve çekme esnasında bir arkoluşur.

3.3. Zaman Gecikmesi ve AltProgramlarBazı işlemlerin yapılması sırasında belirli bir zaman hiçbirşey yapmadan beklenmesi

gerekir. Zaman geciktirme işlemlerini yazılım döngülerinikullanarak yapabildiğimiz gibi,

donanımın bize sunduğu özel geciktirmeler yapabiliriz. Bizzaman geciktirme döngüsünde, gecikme

zamanını tespit etmek için komutların çevrim süreleridikkate alınır.

Örnek 3.3.1: PIC ile yapılan devrede çalışan ledleri 39milisaniye aralılarla yakıp söndüren program

ve akış şeması. (PORTD deki RD3…RD0 bağlı olanledleri)

Page 37: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

LIST P18F842INCLUDE “P18F842.INC”SAYAC1 EQU 0x20SAYAC2 EQU 0x21ORG 0x003GOTO BASLAORG 0x004DURGOTO DURILK_DEGERLERCLRF PORTD ; PortD yazmanını temizleBCF STATUS,6 ; Bank1‟e geç

Page 38: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

BSF STATUS,5 ; Bank1‟e geçCLRF TRISD ; D Portundaki ledler çıkış seçilirBCF STATUS,5 ; Bank0‟a geçRETURNTEKRAR_YAKCLRF PORTD ; Ledleri söndürCALL GECIKME ; Gecikme alt programını çağırırMOVLW b‟00001111‟ ; W kayıtçısına b‟00001111‟değeri yüklendiMOVWF PORTD ; W içeriği PortD ye yüklendiRETURNGECİKMEMOVLW h „FF‟MOVWF SAYAC1 ; SAYAC1= d‟255‟DONGU11MOVLW h‟FF‟MOVWF SAYAC2 ; SAYAC2= d‟255‟DONGU12DECFSZ SAYAC2,FGOTO DONGU12DECFSZ SAYAC1,FGOTO DONGU11RETURNBASLACALL ILK_DEGERLERDONGUCALL TEKRAR_YAKCALL GECİKMEGOTO DONGUEND

Page 39: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Gecikme programında iç içe iki döngü kullanılmıştır. Heriki döngü kullanıldığında oluşan toplam komut çevrimsürelerini hesaplarsak;

KOMUTLAR KOMUT ÇEVRİM SÜRESİGECİKMEMOVLW h „FF‟ 1MOVWF SAYAC1 ; d‟255‟=M 1DONGU11MOVLW h‟FF‟ 1xMMOVWF SAYAC2 ; d‟255‟=N 1xMDONGU12DECFSZ SAYAC2,F 1xMxNGOTO DONGU12 2xMxNDECFSZ SAYAC1,F 1xMGOTO DONGU11 2xMRETURN 2M ve N yerine 255 yerleştirilirse; Toplam 196.608 çevrimsüresi

196.608 x (0.05 x 4)μsn = 39.321 μsn ≡39 msn

Gecikme sürelerini sayaçlara yüklediğimiz M ve Nsabitlerini değiştirerek ayarlamak mümkündür. Örneğingecikme süresinin 10 milisn olması için dış ve iç döngüsayaçlarının değerlerinin ne olması gerektiğini bulalım:

10.000/(0.05 x 4) = 3xNxN N=129

bu değer h‟81‟ değerine karşılık gelir. Böylece 10 milisngecikme elde edilir.

Page 40: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

3.4. Bit KaydırmaBit kaydırma komutları RLF, RRF, COMF ve SWAPFkomutlarıdır. Bı komutlar kullanılarak farklı

uygulamalar yapılabilmektedir.

Örnek 3.4.1: PortB‟ye bağlı 8 led üzerindeki bir ledinyanışını LED0‟dan LED7‟ye doğru kaydıran

program.

LIST P18F842INCLUDE “P18F842.INC”SAYAC1 EQU h „20‟ ;SAYAC1 „e adres atandıSAYAC2 EQU h „21‟ ;SAYAC2 „e adres atandıCLRF PORTB ; PortB ye bağlı ledleri söndürBCF STATUS,0 ; Carry flag‟ı sıfırlaBSF STATUS,5 ; Bank1‟e geçCLRF TRISB ; PortB‟nin uçlarını çıkış yapBCF STATUS,5 ;Bank0‟a geçMOVLW h „01‟ ; b „00000001‟ sayısını W‟ya yükleMOVWF PORTB ; W kayıtçısının içeriğini PortB‟ye yükleTEKRARCALL GECIKME ; Gecikme yapRLF PORTB,F ; PortB‟deki veriyi sola kaydırBTFSS STATUS,0 ; Carry flag 1 mi?GOTO TEKRAR ; HayırDONGUGOTO DONGU ;GECİKMEMOVLW h „FF‟

Page 41: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVWF SAYAC1 ; SAYAC1= d‟255‟DONGU11MOVLW h‟FF‟MOVWF SAYAC2 ; SAYAC2= d‟255‟DONGU12DECFSZ SAYAC2,FGOTO DONGU12DECFSZ SAYAC1,FGOTO DONGU11RETURNEND

Örnek 3.4.2: PortB‟ye bağlı olan 8 LED üzerinde birLED‟in yanışını sağa-sola kaydıran ve bu işlemi süreklitekrarlayan program ve akış şeması.(Karaşimşek devresi)

Page 42: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

LIST PP18F842INCLUDE “PP18F842.INC”SAYAC1 EQU h „20‟ ;SAYAC1 „e adres atandıSAYAC2 EQU h „21‟ ;SAYAC2 „e adres atandıCLRF PORTB ; PortB ye bağlı ledleri söndürBCF STATUS,0 ; Carry flag‟ı sıfırlaBSF STATUS,5 ; Bank1‟e geçCLRF TRISB ; PortB‟nin uçlarını çıkış yapBCF STATUS,5 ;Bank0‟a geç

Page 43: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVLW h „01‟ ; b „00000001‟ sayısını W‟ya yükleMOVWF PORTB ; W kayıtçısının içeriğini PortB‟ye yükleSOLCALL GECIKME ; Gecikme yapRLF PORTB,F ; PortB‟deki veriyi sola kaydırBTFSS STATUS,0 ; Carry flag 1 mi?GOTO SOL ;SAGCALL GECIKME ; Gecikme yapRRF PORTB,F ; PortB‟deki veriyi sağa kaydırBTFSS STATUS,0 ; Carry flag 1 mi?GOTO SAG ;GOTO SOL ;GECİKMEMOVLW h „FF‟MOVWF SAYAC1 ; SAYAC1= d‟255‟DONGU1MOVLW h‟FF‟MOVWF SAYAC2 ; SAYAC2= d‟255‟DONGU2DECFSZ SAYAC2,FGOTO DONGU2DECFSZ SAYAC1,FGOTO DONGU1RETURNEND3.5. Çevrim TablolarıÇevrim tabloları bir kodu başka bir koda çevirmek içinkullanılırlar. Örneğin PORTB‟ye bağladığımız 7 segment

Page 44: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

display‟in üzerindeki heksadesimal karakterleri görmekistiyoruz. Çevrim tablosuna yerleştirdiğimiz heksadesimalkoda karşılık gelen uygun kodu seçip, çıkışa göndermemizgerekir.Çevrilecek kod.Hex. sayı

Çevrilen 7 segmentkodu(PORTB’wye)

7 segmentuçlarındaki veri

7 segment ‘tegörülecek sayı

h „00‟ h „3F‟ 00111111 0h „01‟ h „06‟ 00000110 1h „02‟ h „5B‟ 01011011 2h „03‟ h „4F‟ 01001111 3h „04‟ h „66‟ 01100110 4h „05‟ h „6D‟ 01101101 5h „06‟ h „7D‟ 01111101 6h „07‟ h „07‟ 00000111 7h „08‟ h „7F‟ 01111111 8h „09‟ h „6F‟ 01101111 9h „0A‟ h „77‟ 01110111 Ah „0B‟ h „7C‟ 01111100 Bh „0C‟ h „39‟ 00111001 Ch „0D‟ h „5E‟ 01011110 Dh „0E‟ h „79‟ 01111001 Eh „0F‟ h „71‟ 01110001 FNokta h „80‟ 10000000 .

Örnek 3.5.1: 7 segmentli display üzerinde “5” sayısınıgösteren program.

LIST PP18F842INCLUDE “PP18F842.INC”CLRF PORTB ; PortB ye bağlı ledleri söndürBSF STATUS,5 ; Bank1‟e geçCLRF TRISB ; PortB‟nin uçlarını çıkış yapBCF STATUS,5 ;Bank0‟a geçBASLAMOVLW h „05‟CALL TABLOMOVWF PORTBDONGU

Page 45: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

GOTO DONGUTABLOADDWF PCL,F ; PCL ‟05‟)RETLW h „3F‟RETLW h „06‟RETLW h „5B‟RETLW h „4F‟RETLW h „66‟RETLW h „6DRETLW h „7D‟RETLW h „07‟RETLW h „7F‟RETLW h „6F‟RETLW h „77‟RETLW h „7C‟RETLW h „39‟RETLW h „5E‟RETLW h „79‟RETLW h „71‟RETLW h „80‟END

3.6. Kesmeler

PIC‟in port girişlerinden veya donanım içerisindeki birsayıcıdan gelen sinyal nedeniyle

belleğinde çalışmakta olan programın kesilmesi olayıkesme (interrupts) olarak adlandırılır.

Page 46: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Program kesildiği andan hemen sonra ana program kaldığıyerden itibaren tekrar çalışmasına devam

eder. Kesme işlemi ana programın çalışmasını sadeceduraklatır. Ana programın çalışma işlevini

devam ettirmesini engellemez.

Şekil 3.6.1 Kesme Alt Programın Çalışması

Örnek 3.6.1: RB0/ INT ucundan girilen bir sinyal ile kesmeoluşturan program.

Page 47: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Şekilde görüldüğü gibi bu programın amacı PORTA nın0.bitine bağlı olan butonun basılı

olup olmadığı gösteren basit bir programdır. RB0/INTucundan bir sinyal girerek kesme oluşturmak

için RB0 ucuna bir buton bağlanmıştır. INT butonunabasılınca kesme oluşur ve kesme alt programı

çalışarak LED2 in yanma durumunda değişiklik görülür.

Kaynak Kod:

LIST PP18F842INCLUDE “PP18F842.INC”ORG h „000h‟GOTO BASLAORG h „008h‟GOTO INT_ALT_PROGBASLABSF STATUS,5 ; bank1 e geçMOVLW h „FFMOVWF TRISA ; PortA girişMOVLW b „00000001MOVWF TRISB ; PortB 0. bit giriş

Page 48: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVLW b „10111111MOVWF OPTION_REG; W yı Option kayıtçısına yükleBCF STATUS,5 ; Bank0 a geçCLRF PORTB ; PortB‟yi silBCF INTCON,1 ; INTF bayrağını sil, kesmeyi hazırlaBSF INTCON,7 ; Global kesmeyi aktif yapBSF INTCON,4 ; RB0/INT kesmesini geçerli yapTESTBTFSC PORTA,0 ; PortA‟nın 1. bitini test etGOTO SONDUR_LED1YAK_LED1BSF PORTB,1 ; PortB‟nin 1. bitini 1 yapGOTO TESTSONDUR_LED1BCF PORTB,1 ; PortB‟nin 1. bitini 0 yapGOTO TESTINT_ALT_PROGBCF INTCON,1 ; INTF bayrağını silMOVLW b „00000100‟ ; terslenecek olan biti W‟ya yükleXORWF PORTB,F ; RB2‟ yi tersleRETFIE ; Kesme alt programından dön.END

Page 49: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

RB0 ucundan girilen sinyalin düşen kenarında kesmeninoluşması programdaMOVLW h „10111111‟MOVWF OPTION_REGkomutları kullanılmıştır. INTCON kayıtçısının 7 biti GIEbayrağının bulunduğu bittir. Burada tüm kesme işlemleri aktifduruma getirilmiştir. Bu kayıtçının 4. biti INTE bayrağınınbulunduğu bittir ve harici kesmeyi aktif yapmayı sağlar. 1. bitise harici kesme bayrağıdır. 0 ise kesme var 1 ise kesmeyoktur. PIC‟de yazılan programlar mikrodenetleyicinin işlemyapma gücü artmaktadır.3.7. Zamanlayıcılar

P18F842 ailesinde Timer0, Timer1, Timer2,Timer3adları verilen zamanlayıcılar bulunmaktadır.

Örnek 3.7.1: PortB‟nin 0. bitine bağlı LED‟i flash yaptıranprogram.

LIST PICP18F842INCLUDE “picP18F842.inc”BSF STATUS,5 ; Bank1‟e geçCLRF TRISB ; PORTB‟nin tüm uçları çıkışBASLACLRWDT ; Prescaler atama işlemini hazırla

Page 50: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVLW b „11010111‟ ; TMR0‟ı yeni prescaler değerini vesinyal kaynağı seçMOVWF OPTION_REG; OPTION registerine yazBCF STATUS,5 ; Bank0‟a geçCLRF PORTB ; PORTB‟nin tüm çıkışları temizleYAKBSF PORTB,0 ; LED‟i yakCALL GECIKME ; GECIKME alt programını çağırSONDURBCF PORTB,0 ; LED‟i söndürCALL GECIKME ; GECIKME alt programını çağırGOTO YAK ; yakıp-söndürmeye devam etGECIKMECLRF TMR0 ; TMR0‟ı h „00‟ dan saymaya başlaTEST_BITBTFSS TMR0,5 ; TMR0‟ın 5. bitini test etGOTO TEST_BIT ; Hayır 5. biti tekrar test et.RETURNEND

TMR0 kayıtçısının tamamı okunabilir bir kayıtçıdır.TMR0‟ın 5. biti 1 olduğunda ulaşılansayı 32 dir. Yani burada kullanılan sayıcı 0‟dan 32‟ye kadarsaydırılmaktadır. TMR0 içerisindeki

Page 51: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

sayılar TMR0 oranı 1/256 olduğu için 256 komut saykılındabir defa artacaktır.TMR0, 32 ye kadar sayacağından 32‟ye kadar sayma süresi;

örkullanıldığı düşünülürse)

3.8. A/D VE D/A DönüştürmeUygulamalarımızda port çıkışlarında sayısal sinyaller

elde ettik. Ancak bazı uygulamalarda da bize analog sinyallergerekmektedir. Analog sinyalleri oluşturmak

için dönüştürücüler kullanılır.3.8.1 PWM Metodu ile D/A Dönüşümü

PWM yöntemi, sinyalin iş çevrim süresini değiştirereksinyalin çıkışında bir kare dalga sinyal yaratma yöntemidir. İşçevrim süresi, sinyalin ledin gerçekten yandığı +5V olduğuaralıktır. Ledleri yakıp söndürürken bir kare dalga sinyalikullanılır. Ledin ucuna bir voltmetre bağladığımız takdirdegerilimi +2.5 V olarak ölçeriz. Halbuki bu sinyalin bir çevrimsürelik zamanın ilk yarısında gerilim +5V iken diğeryarısında 0V tur. Süre bakımından çok kısa olduğu içingözümüz bunu led yanıyor gibi algılar.

Page 52: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Örnek 3.8.1.1: PortD‟nin 0. bitine bağlı ilk ledin parlaklığını;PortB‟nin 4. bitine bağlı B4 butonuna basıldığında arttıran 5.bitine bağlı B5 butonuna basıldığında ise azaltan programınyazılması.

LIST PP18F842INCLUDE “PP18F842.INC”IS EQU H „21‟ ; İş süresiCEVRIM EQU H „22‟ ; Çevrim süresi=iş süresi+ beklemesüresiISGEC EQU H „23‟ ; İş süresinin geçici olarak saklandığıyazmacSAYAC1 EQU H „24‟ ; gecikme altprogram kayıtçılarıSAYAC2 EQU H „25‟ ; ” ”ORG 0x003 ; Reset vektörüGOTO ILK_DEGERGECIKMEMOVLW h „0F‟MOVWF SAYAC1DONGU1MOVLW h‟FF‟MOVWF SAYAC2DONGU2DECFSZ SAYAC2,F

Page 53: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

GOTO DONGU2DECFSZ SAYAC1,FGOTO DONGU1RETURNILK_DEGERCLRF PORTDCLRF PORTBBCF STATUS,RP1BSF STATUS,RP0BCF OPTION_REG, NOT_RBPU ; pull-up dirençleri aktifMOVLW B „00110000‟ ; PortB‟ye butonlar bağlıMOVWF TRISBCLRF TRISDBCF STATUS, RP0BASLAMOVLW D‟25‟MOVWF IS ; iş çevrim süresi=25MOVWF ISGEC ;BSF PORTD,2 ; iş süresi= bekleme süresi, kare dalgaDONGUMOVF ISGEC,WMOVWF ISMOVLW D‟250‟MOVWF CEVRIM ; Bir peryot 250 birimBSF PORTD,0

Page 54: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

BTFSS PORTB,4 ; B4 tuşuna basıldımı?GOTO ARTTIR_IS ;İş süresini arttırma altprogramına gitBTFSS PORTB,5 ; B5 tuşuna basıldımı?GOTO AZALT_IS ; İş süresini azaltmaya gitKONTROL_ISDECFSZ IS,F ; IS süresini 1 azalt, 0 mı?GOTO KONTROL_CEVRIMBCF PORTD,0 ;KONTROL_CEVRIMDECFSZ CEVRIM,F ;Çevrimi 1 azalt 0 mı?GOTO KONTROL_IS ; Çevrim sıfırlanmadı iş süresine bakGOTO DONGUARTTIR_ISCALL GECIKMEMOVF ISGEC,WMOVWF ISINCF IS,Fİbrahim Türkoğlu, Fırat Üniversitesi - Elektronik veBilgisayar Eğitimi Bölümü, Elazığ- 2010. 131MOVF IS,WMOVWF ISGECGOTO DONGUAZALT_ISCALL GECIKMEMOVF ISGEC,W

Page 55: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVWF ISDECF IS,FMOVF IS,WMOVWF ISGECGOTO DONGUEND

3.8.2. A/D DönüşümüÖrnek 3.8.2 PORTA‟nın 0,1 ve 3. bitlerine bağlı 3potansiyometrenin direncinin sayısal değerini (AN0, AN1,AN3) butonlarına basıldığında PORTD‟ye bağlı LCDbiriminde gösteren programın yazılması.

Kaynak Kod:

Title “A/D çevrim uygulaması”list p=P18F842#include <PP18F842.INC>;MPASM standart değişkentanımları_CONFIG(_CP_OFF&WDT_ON&_PWRTE_OFF&_RC_OSC)errolevel-302 ;ignore error when storing to bank 1****************************************************************

Page 56: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Değişken tanımları****************************************************************variable KRAM=0x03 CBLOK…ENDCcblock KRAMAN0 ;Analog değişkenler *AN0 EQU „20‟AN1 *ANI EQU „21‟AN3 *AN3 EQU‟22‟SAYACEndcVariable KRAM=SAYAC+1****************************************************************org 0x03 ;program başlangıç adresigoto Basla****************************************************************Altprogramlar ve altprogram kitaplıkları#inlude <PBS.INC>; Buton kontrol rutini#inlude<B2D.INC>;#include<LCD.INC>;****************************************************************A/D dönüştürmede dahili RC saati kullanılır. Okunan herkanal kendisine ait bir yazmaçta saklanmaktadır. A0 kanalı

Page 57: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

yani RA0 bacağında okunan analog değer 8 bit olarak AN0yazmacında saklanmaktadır.Aynı şekilde RA1 bacağındakideğer AN1 , RA3 „deki değerse AN3 yazmacında saklanır.****************************************************************AN0_KanalınıOkuMovlw b‟11000001‟ ; RC osilatör ve A0 kanalının seçilmesi.movwf ADCON0call Gecikmebsf ADCON0,GO ; A/D dönüştürme işlemini başlatan bit.btfsc ADCON0,GOgoto $-1movf ADRESH,Wmovwf AN0returnAN1_KanalınıOkumovlw b‟11001001‟ ; RC osilatör ve A0 kanalının seçilmesi.movwf ADCON0call Gecikmebsf ADCON0,GO ;A/D dönüştürme işlemini başlatılmaktadırbtfsc ADCON0,GOgoto $-1movf ADRESH,Wmovwf AN1return

Page 58: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

AN3_KanalınıOkumovlw b‟11011001‟ ; RC osilatör ve A0 kanalının seçilmesi.movwf ADCON0 ; birlikte seçilmesicall Gecikmebsf ADCON0,GO ; A/D dönüştürme işlemini başlatılmakta.btfsc ADCON0,GOgoto $-1movf ADRESH,Wmovwf AN03returnAN0_değerlerini LCD ye yazMovf AN0,WCall B2DMovlw 0x30Addwf BIRLER,1Addwf ONLAR,1Addwf YÜZLER,1Call LCD SıfırlaMovlw‟A‟Call LCDyeKarakterGonderMovlw‟N‟Call LCDyeKarakterGonderMovlw‟.‟Call LCDyeKarakterGonderMovlw‟0‟

Page 59: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Call LCDyeKarakterGonderMovlw‟ ‟Call LCDyeKarakterGonderMovlw‟=‟Call LCDyeKarakterGonderMovlw‟ ‟Call LCDyeKarakterGonderMovf YUZLER,0Call LCDyeKarakterGonderMovf ONLAR,0Call LCDyeKarakterGonderMovf BİRLER,0Call LCDyeKarakterGonderReturnAN1_değerlerini LCD ye yazMovf AN1,WCall B2DMovlw 0x30Addwf BIRLER,1Addwf ONLAR,1Addwf YÜZLER,1Call LCDSıfırlaMovlw‟A‟Call LCDyeKarakterGonderMovlw‟N‟

Page 60: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Call LCDyeKarakterGonderMovlw‟.‟Call LCDyeKarakterGonderMovlw‟1‟Call LCDyeKarakterGonderMovlw‟ ‟Call LCDyeKarakterGonderMovlw‟=‟Call LCDyeKarakterGonderMovlw‟ ‟Call LCDyeKarakterGonderMovf YUZLER,0Call LCDyeKarakterGonderMovf ONLAR,0Call LCDyeKarakterGonderMovf BİRLER,0Call LCDyeKarakterGonderReturnAN3_değerlerini LCD ye yazMovf AN3,WCall B2DMovlw 0x30Addwf BIRLER,1Addwf ONLAR,1Addwf YÜZLER,1

Page 61: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Call LCD SıfırlaMovlw‟A‟Call LCDyeKarakterGonderMovlw‟N‟Call LCDyeKarakterGonderMovlw‟.‟Call LCDyeKarakterGonderMovlw‟3‟Call LCDyeKarakterGonderMovlw‟ ‟Call LCDyeKarakterGonderMovlw‟=‟Call LCDyeKarakterGonderMovlw‟ ‟Call LCDyeKarakterGonderMovf YUZLER,0Call LCDyeKarakterGonderMovf ONLAR,0Call LCDyeKarakterGonderMovf BİRLER,0Call LCDyeKarakterGonderReturn****************************************************************

Page 62: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

“Gecikme” rutini A/D işleminin başlayabilmesi için gerekenve yazılımla sağlanan yaklaşık 10 us. lik gecikme sağlayanrutindir. 4 MHZ „lik bir saat osilatöründe aşağındaki döngü3us.almaktadır .Eğer “SAYAC” değerine başlangıç değeriolarak 3 atanırsa , toplamda 10 us.den biraz daha büyük birdeğere ulaşan gecikme süresi elde edilir.****************************************************************GecikmeMovlw 0x03 ;SAYAC „a 3 değerini ata.Movwf SAYACDecfsz SAYAC,F ;Gecikme döngüsüGoto $-1Return****************************************************************Ana Program****************************************************************BaslaMovlw 0xFF ;PORTD‟nin tüm bitleri”1”Movwf PORTDBsf STATUS,5 ;bank1Movwf TRISA ; PortAnın tüm bitleri girişClrf TRISD ; PortD nin tüm bitleri çıkış

Page 63: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Movlw b „00000100‟ ; RA0,RA1,RA3 analog girişMovwf ADCON1Bcf STATUS,5 ; bank0Call ButonKontrolBaslangicCall LCDBaslangicGuncelleCall AN0_KanaliniOkuCall AN1_KanaliniOkuCall AN2_KanaliniOkuCall ButonKontrolCall ButonTitresimGecikmesiBtfsc PB1Call AN0_DegeriniLCDyeYazBtfsc PB2Call AN1_DegeriniLCDyeYazBtfsc PB3Call AN3_DegeriniLCDyeYazGoto Guncelleİbrahim Türkoğlu, Fırat Üniversitesi - Elektronik veBilgisayar Eğitimi Bölümü, Elazığ- 2010. 136EndMakro dosyalarının listeleri:BD2.INC dosyasının listesi---------------------------------B2D.INC-------------------------------

Page 64: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

cblock KRAMSAYI ; w kayıtçısındaki sayının kopyasıYUZLER ; Yuzler basamağıONLAR ; Onlar basamağıBIRLER ; Birler basamağıEndcVariable KRAM=BIRLER+1B2D movwf SAYIClrf YUZLERClrf ONLARClrf BIRLERYuzBMovlw .100Subwf SAYI,WBtfsc STATUS,CGoto YuzlerBasamagıOnBMovlw .10Subwf SAYI,WBtfsc STATUS,CGoto OnlarBasamagıMovf SAYI,WMovwf BIRLERReturnYuzlerBasamagi

Page 65: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

İncf YUZLER,1Movwf SAYIGoto YuzBOnlarBasamagiİncf ONLAR,1Movwf SAYIGoto OnB------------------------------PBS.INCdosyası---------------------------------TUŞ TAKIMICblock KRAMBUTON18BUTON916SAYAC1SAYAC2EndcVariable KRAM=SAYAC2+1#define PB1 BUTON18,0#define PB2 BUTON18,1#define PB3 BUTON18,2#define PB4 BUTON18,3#define PB5 BUTON18,4#define PB6 BUTON18,5#define PB7 BUTON18,6#define PB8 BUTON18,7

Page 66: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

#define PB9 BUTON916,0#define PB10 BUTON916,1#define PB11 BUTON916,2#define PB12 BUTON916,3#define PB13 BUTON916,4#define PB14 BUTON916,5#define PB15 BUTON916,6#define PB16 BUTON916,7ButonKontrolBaslangicClrf BUTON18 ; PB1..8 arası tuş değerleri BUTON18yazmacının 0..7 bitlerinde,Clrf BUTON916;Movlw 0xFFMovwf PORTBBsf STATUS,5Bsf OPTION_REG,7 ; PortB çekme dirençleri devredeMovlw 0xF0Movwf TRISBBcf STATUS,5ReturnButonKontrol; PB1..4 arası tuş kontroluTs1 movlw b‟11111110‟Movwf PORTBBtfss PORTB,4

Page 67: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Goto Tus1Bcf PB1Ts2 Btfss PORTB,5Goto Tus2Bcf PB2Ts3 Btfss PORTB,6Goto Tus3Bcf PB3Ts4 Btfss PORTB,7Goto Tus4Bcf PB4;PB5..8 arası tuş kontroluTs5 movlw b‟11111101‟Movwf PORTBBtfss PORTB,4Goto Tus5Bcf PB5Ts6 Btfss PORTB,5Goto Tus6Bcf PB6Ts7 Btfss PORTB,6Goto Tus7Bcf PB7Ts8 Btfss PORTB,7Goto Tus8

Page 68: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Bcf PB8;PB9..12 arası tuş kontroluTs9 movlw b‟11111011‟Movwf PORTBBtfss PORTB,4Goto Tus9Bcf PB9Ts10 Btfss PORTB,5Goto Tus10Bcf PB10Ts11 Btfss PORTB,6Goto Tus11Bcf PB11Ts12 Btfss PORTB,7Goto Tus12Bcf PB12;PB13..16 arası tuş kontroluTs13 movlw b‟11110111‟Movwf PORTBBtfss PORTB,4Goto Tus13Bcf PB13Ts14 Btfss PORTB,5Goto Tus14Bcf PB14

Page 69: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Ts15 Btfss PORTB,6Goto Tus15Bcf PB15Ts16 Btfss PORTB,7Goto Tus16Bcf PB16ReturnTus1Bsf PB1Goto Ts2Tus2Bsf PB2Goto Ts3Tus3Bsf PB3Goto Ts4Tus4Bsf PB4Goto Ts5Tus5Bsf PB5Goto Ts6Tus6Bsf PB6Goto Ts7

Page 70: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Tus7Bsf PB7Goto Ts8Tus8Bsf PB8Goto Ts9Tus9Bsf PB9Goto Ts10Tus10Bsf PB10Goto Ts11Tus11Bsf PB11Goto Ts12Tus12Bsf PB12Goto Ts13Tus13Bsf PB13Goto Ts14Tus14Bsf PB14Goto Ts15Tus15

Page 71: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Bsf PB15Goto Ts16Tus16Bsf PB16Returnİbrahim Türkoğlu, Fırat Üniversitesi - Elektronik veBilgisayar Eğitimi Bölümü, Elazığ- 2010. 139ButonTitresimGecikmesiMovlw 0x40Movwf SAYAC1Yukle Movlw 0xFFMovwf SAYAC2Azalt Decfsz SAYAC2,FGoto AzaltDecfsz SAYAC1,FGoto YukleReturnLCD.INC dosyasının listesi;******************* LCD.INC*************************; değişkenlercblock KRAMSAY1SAY2Endc

Page 72: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Variable KRAM=SAY2+1#define RS PORTE,0#define EN PORTE,1#define RW PORTE,2LCDBaslangicBsf STATUS,RP0Movlw b‟00000010‟Movwf ADCON1 ;A portunun RA4 hariç, bitleri analog girişMovlw b‟00000000‟Movwf TRISDMovwf TRISEBcf STATUS,RP0Bcf RW ; LCD‟ye yazma işlemiBcf EN ;Bcf RS ;Call _125us_gecikme ; 125 mikrosaniye gecikmeMovlw 0x38 ;8 bit 5x7Movwf PORTD ; 00111000Call Darbe ;Movlw 0x0FMovwf PORTD ; 0000 1111Call DarbeMovlw 0x01 ; göstergeyi temizlerMovwf PORTD ; 0000 0001Call Darbe

Page 73: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Call _5ms_gecıkmeReturnLCDyeKarakterGonderMovwf PORTDBcf RWBsf RSCall DarbeReturnLCDsıfırlaBcf RWBcf ENBcf RSCall _125us_gecikmeMovlw 0x01Movwf PORTDCall DarbeCall _5ms_gecikmeİbrahim Türkoğlu, Fırat Üniversitesi - Elektronik veBilgisayar Eğitimi Bölümü, Elazığ- 2010. 140Return_125us_gecikme ; Ortalama 42*3=126 çevrim eldeetmektedir.Movlw 0x2AMovwf SAY1Gec1 decfsz SAY1,f

Page 74: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Goto Gec1Return_5ms_gecikmemovlw 0x29movwf SAY2Gec2 call _125us_gecikmeDecfsz SAY2,FGoto Gec2ReturnDarbeBsf ENNopBcf ENCall _125us_gecikmeReturn

3.9. USARTPIC 18F842 de kullanılan ilk seri giriş ve çıkış birimi

usart olarak adlandırılmaktadır. Bu arabirim CRT terminaller,PC‟ler, çevre birimler, seri EPROM gibi birimlerle iletişimegeçer.

Aşağıda yazılan bu program ile asenkron modda seriiletişimin kurulmasını sağlar.

Page 75: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

LIST P18F842INCLUDE “P18F842.INC”Variable KRAM=0x20cblock KRAMSAYACEndcVariable KRAM=SAYAC+1ORG 0X03GOTO BASLANGICİbrahim Türkoğlu, Fırat Üniversitesi - Elektronik veBilgisayar Eğitimi Bölümü, Elazığ- 2010. 141ORG 0X05BASLANGICBSF STATUS,RP0MOVLW h „19‟MOVWF SPBRGMOVLW b „00100100‟MOVWF TXSTABCF STATUS,RP0MOVLW b „10010000‟MOVWF RCSTACALL LCDBASLANGICCALL LCDSIFIRLAANADONGUCALL VERİAL

Page 76: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

MOVWF TXREGCALL LCD;ye karakter gönderGOTO ANADONGUVERİALMOVLW h „06‟ANDWF RCSTA,WBTFSS STATUS,ZGOTO VERİALIMIHATALIVERİHAZIRMIBTFSS PIR1,5GOTO VERİHAZIRMIMOVF RCREG,WBCF PIR1,5RETURNVERİALIMIHATALIBCF RCSTA,4BSF RCSTA,4GOTO VERİALİNCLUDE <LCD.İNC>END

Page 77: PIC18F452 Mikrodenetleyicisinin Donanımsal Yapısı Ve Komut Seti

Kaynaklar- PIC18FXX2 Data Sheet, 2006, Microchip Technology

Inc. , A.Z- A.B.D.- O. Altınbaşak, 2001. “Mikrodenetleyiciler ve PIC

Programlama”, Atlaş Yayıncılık, İstanbul.- İbrahim Türkoğlu, 2011, Ders Notları, Fırat Üniversitesi -

Elektronik ve Bilgisayar Eğitimi Bölümü, Elazığ.- http://www.mikroe.com- http://www.microchip.com/- http://www.320volt.com