You are on page 1of 114

T.C.

MLL ETM BAKANLII













ELEKTRK-ELEKTRONK TEKNOLOJS











MKRODENETLEYC PROGRAMLAMA
523EO0020













Ankara, 2012





















Bu modl, mesleki ve teknik eitim okul/kurumlarnda uygulanan ereve
retim Programlarnda yer alan yeterlikleri kazandrmaya ynelik olarak
rencilere rehberlik etmek amacyla hazrlanm bireysel renme
materyalidir.
Mill Eitim Bakanlnca cretsiz olarak verilmitir.
PARA LE SATILMAZ.


i

AIKLAMALAR ................................................................................................................... iii
GR ....................................................................................................................................... 1
RENME FAALYET-1 ..................................................................................................... 2
1. MKRODENETLEYC PROGRAMI YAZMA ................................................................. 2
1.1. Ak Diyagram Oluturma ve Sembolleri ..................................................................... 2
1.2. Mikrodenetleyici Assembler Program ve Yazm Kurallar ......................................... 3
1.2.1. Noktal Virgl ........................................................................................................ 4
1.2.2. Balk ..................................................................................................................... 4
1.2.3. Sabitler ................................................................................................................... 8
1.2.4. Org Deyimi ............................................................................................................ 8
1.2.5. Girintiler ve Program Blmleri ............................................................................ 8
1.3. Mikrodenetleyici Komutlar ........................................................................................ 10
1.3.1. Byte Ynlendirmeli Komutlar ............................................................................. 11
1.3.2. Bit Ynlendirmeli Komutlar ................................................................................ 21
1.3.3. Sabit leyen Komutlar ........................................................................................ 23
1.3.4. Kontrol Komutlar ............................................................................................... 27
1.4. Say ve Karakterlerin Yazl ..................................................................................... 30
1.4.1. Heksadesimal Saylar........................................................................................... 30
1.4.2. Binary Saylar ...................................................................................................... 30
1.4.3. Desimal Saylar .................................................................................................... 31
1.4.4. ASCII Karakterler ................................................................................................ 31
1.5. Mikrodenetleyici in Gerekli Yazlmn Kullanm ................................................... 31
1.5.1. Programn Kurulmas........................................................................................... 32
1.5.2. Menlerin Tantlmas ......................................................................................... 34
1.5.3. Mikrodenetleyici ve Dier Donanmlarn Seilmesi ........................................... 34
1.6. Programlama Teknii .................................................................................................. 35
1.6.1. Bank Deitirme .................................................................................................. 36
1.6.2. Portlarn Giri ve k Olarak Ynlendirilmesi ................................................. 38
1.6.3. Her Adm in Ak Diyagram izme ................................................................ 38
1.6.4. Konfigrasyon Bitlerinin Yazlmas .................................................................... 39
1.6.5. W Kaytsnn Kullanm .................................................................................... 40
1.6.6. Bitleri Test Ederek lem Yapma ........................................................................ 41
1.6.7. Saya Kullanarak Dng Dzenlemek ................................................................ 42
1.6.8. Karlatrma Yaparak Dng Dzenlemek ........................................................ 43
1.6.9. Status Kayts .................................................................................................... 44
1.6.10. Zaman Geciktirme Dngleri ............................................................................ 46
1.6.11. Altprogramlar .................................................................................................... 51
1.6.12. Bit Kaydrma ..................................................................................................... 52
1.6.13. Mantksal lemler ............................................................................................. 55
1.6.14. Aritmetik lemler .............................................................................................. 58
1.6.15. evrim Tablolar ................................................................................................ 61
1.6.16. Kesmeler ............................................................................................................ 64
1.6.17. Donanm Sayclar ............................................................................................ 72
1.6.18. D/A ve A/D evirme ......................................................................................... 81
UYGULAMA FAALYET .............................................................................................. 90
LME VE DEERLENDRME .................................................................................... 92
NDEKLER

ii
RENME FAALYET-2 ................................................................................................... 94
2. MKRODENETLEYC KONTROL PROGRAMININ MAKNE DLNE EVRLMES
................................................................................................................................................ 94
2.1. Programn Derlenmesi ................................................................................................ 94
2.1.1. Derleme leminin Yaplmas .............................................................................. 94
2.1.2. Derleme Sonucu Elde Edilen Dosyalar ............................................................... 96
UYGULAMA FAALYET ............................................................................................ 103
LME VE DEERLENDRME .................................................................................. 104
MODL DEERLENDRME ............................................................................................ 106
CEVAP ANAHTARLARI ................................................................................................... 108
KAYNAKA ....................................................................................................................... 109


iii
AIKLAMALAR
KOD 523EO0020
ALAN Elektrik-Elektronik Teknolojisi
DAL/MESLEK Otomasyon Sistemleri
MODLN ADI Mikrodenetleyici Programlama
MODLN TANIMI
Mikrodenetleyici programnn yazlmas ve derlenmesi ile ilgili
bilgi ve becerilerin kazandrld renme materyalidir.
SRE
40/32
N KOUL
Mikroilemci ve Mikrodenetleyiciler modln tamamlam
olmak.
YETERLK Mikrodenetleyiciyi programlamak
MODLN AMACI
Genel Ama
Bu modl ile eitim retim ortamlar ve donannmlarnda
belirtilen ortam salandnda, yaplacak ileme gre gerekli
teknikleri kullanarak mikrodenetleyici programn hatasz
yapabileceksiniz.
Amalar
1. Kurulacak devre iin mikrodenetleyici programlama
yazlmn eksiksiz olarak kullanabileceksiniz.
2. Yaplan mikrodenetleyici programn makine (heksadesimal
kodlara) diline hatasz olarak evirebileceksiniz.
ETM RETM
ORTAMLARI VE
DONANIMLARI
Ortam: Atlye
Donanm: Mikrodenetleyici programlama kart,
mikrodenetleyici programlama kart yazlm, mikrodenetleyici
uygulama kart, bilgisayar , avometre, aktif ve pasif devre
elemanlar, lehimleme malzemeleri, dier faydal el ve g
aralar donanmlar
LME VE
DEERLENDRME
Modl iinde yer alan her renme faaliyetinden sonra verilen
lme aralar ile kendinizi deerlendireceksiniz.
retmen modl sonunda lme arac (oktan semeli test,
doru-yanl testi, boluk doldurma, eletirme vb.) kullanarak
modl uygulamalar ile kazandnz bilgi ve becerileri lerek
sizi deerlendirecektir.


AIKLAMALAR

1
GR

Sevgili renci,

Mikrodenetleyiciler gnlk hayatta kullandmz pek ok cihaz ierisine girmi
durumdadr. yle ki mikrodenetleyicileri otomobillerde, cep telefonlarnda, kameralarda,
faks-modem cihazlarnda, fotokopi, radyo, TV ve baz oyuncaklar gibi saylamayacak kadar
pek ok alanda kullanmn grmek mmkndr.
Mikrodenetleyici kullanmnn bu kadar yaygn olmasnn nemli nedenleri vardr.
Daha nce mikroilemci kullanm gereken yerlerde, ayrca hafza niteleri (RAM, ROM) ve
giri/k arabirim devrelerine (I/O) ihtiya duyuluyordu. Bu da sistemin maaliyetini
ykselmesi , devrenin karmak olmas ve fazla yer kaplamas, programlamann zorluu gibi
problemler oluturuyordu. Fakat mikrodenetleyicilerle bu sorunlar ortadan kaldrld. nk
fiyatlar son derece makul olan bu entegreler, ayrca hafza niteleri (RAM, ROM) ve
giri/k arabirim devrelerine (I/O) ihtiya duyulmadan istenilen tasarmn yaplabilmesine
imkn tanmaktadr. Bununla beraber programlanmas da olduka kolay ve programlama dili
olan assembly iin de bir bedel gerekmemektedir. Ayrca flash bellekleri sayesinde bir
denetleyicinin onlarca defa programlanabilip silinebilmesine imkn tanr. te bu gibi
zelliklerinden dolay mikrodenetleyiciler pek ok alanda mikro ilemcilerin yerini almtr.
Gnmzde birok firma mikrodenetleyici retmekte ve bunlar donanm
tasarmclarnn kullanmna sunmaktadr. Biz, bundan nceki modldeki olduu gibi bu
modlde de chip(ip) firmasnn rettii mikrodenetleyicileri anlatacaz. Konular genelde
ilgili firmann rettii PIC16F84 mikrodenetleyicisi zerinden ilenecektir. Bu ekilde,
modl sonunda artk siz de bir mikrodenetleyiciyi tanm ve amaca gre programnn
yazabilme seviyesine km olacaksnz.

GR

2

RENME FAALYET-1


Uygun ortam salandnda kurulacak devre iin mikrodenetleyici programn
eksiksiz olarak yapabileceksiniz.



Mikrodenetleyici eitlerini aatrnz.
Mikrodenetleyici komutlarn aratrnz.
Mikrodenetleyicilerin donanmsal farkllklarn aratrnz.

Aratrma ilemleri iin internet ortam ve mesleki kitaplarn bulunduu ktphaneler
ile bu sektr zerinde alan teknik elemanlardan faydalanabilirsiniz.

1. MKRODENETLEYC PROGRAMI
YAZMA

Assembly dili bir mikrodenetleyiciden (Bundan sonra sadece denetleyici veya PIC
olarak bahsedilecek.) beklenen veya denetleyicinin yapmas istenen ilemlerin belirli
kurallara uygun olarak yazlm komutlar dizisidir. Assembly komutlar ngilizcedeki
manalarnn ksaltmalarndan meydana gelmektedir. Bu komutlar genellikle bir komutun
yapt ii ifade eden ngilizce szcklerin ba harflerinden meydana gelmektedir. rnein,
BTFSC Bit Test F Skip if Clear [File kaytdaki (kaydedici) biti test et] vb.

1.1. Ak Diyagram Oluturma ve Sembolleri

Assembler ile bir program yazmadan evvel, denetleyicinin hangi admlarla program
ileyeceini planlamamz gerekmektedir. Bu planlama ilemi ak diyagramlar ile yaplr.
Ak diyagram ilenecek komutlarn srasdr. Uzun ve karmak programlarda, ak
diyagramlar, hangi seviyeden programn ayrlacan ve hangi komutlar yerine getireceini,
sonra tekrar nereye dneceini gstermesi sebebiyle faydaldr. Ak diyagramlarnn
kendine has sembolleri de vardr. ekil 1.1de ak diyagram sembolleri grlmektedir.
RENME FAALYET-1

ARATIRMA
AMA

3

ekil 1.1: Ak diyagram sembolleri
1.2. Mikrodenetleyici Assembler Program ve Yazm Kurallar

PIC assembly programlarnn yazlabilmesi iin kullanlan metin editrlerinden
Windows altnda alan NOTPAD veya dos altnda alan EDIT en uygun olanlarndan
birka tanesidir. Bunun dnda printer kontrol komutlar iermeyen ve ASCII kodunda
dosya retebilen herhangi bir editr de kullanlabilir. MPLAB kullanldnda ayrca editr
kullanmaya gerek yoktur. nk MPLABn iinde hem bir text editr hem de MPASM
bulunmaktadr.

Bunun dnda PIC mikrodenetleyicisi iin program yazmann baka yollar da vardr.
Pic Basic Pro, C diliyle yazlm program PIC iin derleyici programlar veya PLC
mantyla grsel olarak PIC programlayclar (PICBIT) ile de PIC denetleyicileri iin
program yazlabilir. Fakat bu programlar da arka planda kendi ASM uzantl ktklerini
kullanr. Bu yzden btn bu programlara da temel tekil eden assembly dili kullanlacaktr.

MPASM assembler programnn yazlan komutlar doru olarak alglayp PICin
anlayabilecei heksadesimal kodlara dntrlmesi, u bilgilerin program ierisinde zel
formatta yazlmas gerekir:

Komutlarn hangi PIC iin yazld
Programlarn bellekteki hangi adresten balayaca
Komutlarn ve etiketlerin neler olduu
Programn biti yeri


4
1.2.1. Noktal Virgl

Ba tarafna (;) konulan satr, assembler tarafndan heksadesimal kodlara
dntrlemez. Bu satrlar programn gelitirilmesi esnasnda hatrlatc aklamalarn
yazlmasnda kullanlr. Aada rnekte CLRF ile balayan satrda portBnin iini sfrla
cmlesi, CLRF komutunun ne i yaptn aklar. Programn blmlerini birbirinden
ayrmak iin (------- veya = = = = ) izgileri kullanmak, program grsel olarak daha okunur
hle getirdii gibi bu izgiler arasna uyarlar ve aklamalar da yazlabilir.

;==========bu satr derleyici tarafndan dikkate alnmaz.======
CLRF PORTB ; portBnin iini sfrla.
;==========bu satr da derleyici tarafndan dikkate alnmaz.=====

1.2.2. Balk

Programn bandaki bilgilere balk blm denilir.

;= = = = PROGRAM1. ASM = = = = = = = = = = = = = = = = = = = = = = = =
LIST P=16F84
;---------------------------------------------------------------------------------------------
INCLUDE P16F84.INC

Balk blmnde program dosyasnn ad ve hazrland tarih, istenirse hazrlayann
ad ya da farkl bir ad yazlabilir. lk satr, bir aklama satrdr ve assembler tarafndan
derlenmez.

LIST P=16F84 satr, programn hangi PIC iin yazldn belirtir. LIST bir derleyici
bildirisidir. Yani derleyiciyi ynlendiren bir komuttur ve yegane kullan amac ve yeri
burasdr.

Balk blmnde INCLUDE komutu da kullanlabilir. Bir program yazlrken tm
kaytlar tek tek tanmlamak olduka zordur. Bu yzden include dosyas denilen bu
tanmlarn iinde bulunduu ve assembler tarafndan tannan bir dosya kullanlr. Assembler
tarafndan tannmas iin program giriinde tanmlanr.

rnein, PORTB, STATUS ve TRISB kaytlarn kullanan bir program yazld
varsaylsn. Eer programnzn balk ksmnda

INCLUDE P16F84.INC

eklinde bir ifade kullanlrsa programda kaytlar kullanc tantmak zorunda
kalmaz. Aksi hlde aadaki gibi bellek adresleri tantlmaldr.
PORTB EQU h06
STATUS h03
TRISB h86

5
Aada PIC16F84 mikrodenetleyicisi iin bu rn reten tarafndan hazrlanm
INC dosyas grlyor. Burada kaytlarn bellek adreslerinin ve kayt bitlerinin tek tek
tanmlandna dikkat edilmelidir.

LIST
; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc.

NOLIST

; This header file defines configurations, registers, and other useful bits of

; information for the PIC16F84 microcontroller. These names are taken to match

; the data sheets as closely as possible.

; Note that the processor must be selected before this file is

; included. The processor may be selected the following ways:

; 1. Command line switch:
; C:\ MPASM MYFILE.ASM /PIC16F84
; 2. LIST directive in the source file
; LIST P=PIC16F84
; 3. Processor Type entry in the MPASM full-screen interface

;=================================================================
=========
;
; Revision History
;
;=================================================================
=========

;Rev: Date: Reason:

;2.00 07/24/96 Renamed to reflect the name change to PIC16F84.
;1.01 05/17/96 Corrected BADRAM map
;1.00 10/31/95 Initial Release

;=================================================================
=========
;
; Verify Processor
;
;=================================================================
=========


6
IFNDEF __16F84
MESSG "Processor-header file mismatch. Verify selected processor."
ENDIF

;=================================================================
=========
;
; Register Definitions
;
;=================================================================
=========

W EQU H'0000'
F EQU H'0001'
;----- Register Files------------------------------------------------------

INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
PORTA EQU H'0005'
PORTB EQU H'0006'
EEDATA EQU H'0008'
EEADR EQU H'0009'
PCLATH EQU H'000A'
INTCON EQU H'000B'

OPTION_REG EQU H'0081'
TRISA EQU H'0085'
TRISB EQU H'0086'
EECON1 EQU H'0088'
EECON2 EQU H'0089'

;----- STATUS Bits --------------------------------------------------------

IRP EQU H'0007'
RP1 EQU H'0006'
RP0 EQU H'0005'
NOT_TO EQU H'0004'
NOT_PD EQU H'0003'
Z EQU H'0002'
DC EQU H'0001'
C EQU H'0000'
;----- INTCON Bits --------------------------------------------------------

GIE EQU H'0007'
EEIE EQU H'0006'

7
T0IE EQU H'0005'
INTE EQU H'0004'
RBIE EQU H'0003'
T0IF EQU H'0002'
INTF EQU H'0001'
RBIF EQU H'0000'

;----- OPTION Bits --------------------------------------------------------

NOT_RBPU EQU H'0007'
INTEDG EQU H'0006'
T0CS EQU H'0005'
T0SE EQU H'0004'
PSA EQU H'0003'
PS2 EQU H'0002'
PS1 EQU H'0001'
PS0 EQU H'0000'

;----- EECON1 Bits --------------------------------------------------------

EEIF EQU H'0004'
WRERR EQU H'0003'
WREN EQU H'0002'
WR EQU H'0001'
RD EQU H'0000'

;=================================================================
=========
;
; RAM Definition
;
;=================================================================
=========

__MAXRAM H'CF'
__BADRAM H'07', H'50'-H'7F', H'87'
;=================================================================
=========
;
; Configuration Bits
;
;=================================================================
=========
_CP_ON EQU H'000F'
_CP_OFF EQU H'3FFF'
_PWRTE_ON EQU H'3FF7'
_PWRTE_OFF EQU H'3FFF'

8
_WDT_ON EQU H'3FFF'
_WDT_OFF EQU H'3FFB'
_LP_OSC EQU H'3FFC'
_XT_OSC EQU H'3FFD'
_HS_OSC EQU H'3FFE'
_RC_OSC EQU H'3FFF'

LIST

1.2.3. Sabitler

PIC assembly dilinde heksadesimal saylar birer sabittir. Sabitler MOVLW ve baz
mantksal ve aritmetik ilem komutlarnda kullanlr.

Etiket
Komut
START MOVLW 0 X 02
Sabit

1.2.4. Org Deyimi

Org ngilizcedeki origin kelimesinden gelmektedir. Org deyimi iki ama iin
kullanlr: Program komutlarnn hangi adresten itibaren baladn ve PICin kesme alt
programnn balang adresini gstermek iin kullanlr.

ORG 0 x 000 ; ilk program komutunun bellek adresi

ORG 0 x 004 ; h004 adresi, PIC16F84 denetleyicisinin kesme alt
programnn balang adresi

1.2.5. Girintiler ve Program Blmleri

Metin editrlerinde birbirinden farkl uzunlukta girintiler veren TAB zellii vardr.
Bu zellikten yararlanarak assembly komutlar kolona blnerek yazlr. Bir assembly
program temel olarak drt blme ayrlr. Bunlar: Balk, atama, program ve sonu
blmleridir.

9

ekil 1.2: Girintiler ve program blmlerinin grn
Assembler, yukarda ekil 1.2de belirtildii gibi komutlarn kolona blnerek
yazlm olduunu varsayar. Belirtilen kolona yazlmayan bir komut olduunda ise bunu da
kabul eder. Ancak, heksadesimal kodlara dntrme esnasnda bu tip hatalar bir uyar
olarak belirtir. Assembly komutlar yazlrken kolonlar arasnda verilen TABlarn uzunluu
nemli deildir. Boluk tuu ile verilen aralk da assembler tarafndan TAB olarak alglanr.
PICe yaptrlacak herhangi bir ilem iin zellikle uzun ve zor programlar yazmaya
baladktan sonra yaplacak aklamalar, blmlere ayrlm programlarn daha kullanl
olduu grlr. nk programlar bu ekilde yazldnda daha sonraki gelitirmelere
aktr. Aradan zaman gese bile bir program gelitirmek iin tekrar ele aldnda, program
ierisine yazlan aklamalar ihtiya olan hatrlatmalar yapacaktr.

1.2.5.1. Balk Blou

Programnn bandaki bilgilere balk blm denilir. Bu blm daha nce balk
konusunda anlatlmtr.


10
1.2.5.2. Atama Blou

EQU deyimi PICin belleindeki bir heksadesimal adresi belirlenen bir etikete atamak
iin kullanlr. Aada atama deyimine bir rnek gsterilmitir.

Etiket
Atama deyimi

PORTB EQU 0 X 06
Heksadesimal adres
Heksadesimal sayy ifade eder.

1.2.5.3. Program Blou

Programcnn asembly komutlar kullanarak ii yaptracak program yazd, iinde
altprogramlarnda bulunabilecei ana blmdr. Modl iindeki programlar incelenerek
program blou bulunabilir.

1.2.5.4. Sonlandrma Blou

PIC 16F84n duraklama (halt) komutu yoktur. Program belirli bir yerde duraklatmak
iin bazen sonsuz dng kullanlr.

DONGU
GOTO DONGU
END

Yukardaki sonsuz dngde DONGU etiketine assembler otomatik olarak bir adres
verir. GOTO DONGU komutu ise program akn devaml olarak ayn adrese gnderir.
Bu durumda program belirlenen adreste duraklatlm olur.

END deyimi ise program komutlarnn sona erdiini assemblere bildirir. Her
program sonunda END deyimi muhakkak kullanlmaldr. Aksi hlde program devam
ederken dosya sonunun belirtilmediini gsteren bir hata mesaj verecektir.

1.3. Mikrodenetleyici Komutlar

PIC16F84 denetleyicisinin toplam 35 tane komutu vardr. Dier PIC serisinin baka
komutlarda olmasna ramen bu 35 komut temel tekil ettii iin bu komutlar
gsterilecektir. Bu komutlarn yazl biimi drt grupta toplanabilir .

Byte-ynlendirmeli komutlar
Bit-ynlendirmeli komutlar
Sabit ileyen komutlar
Kontrol komutlar

11
Komutlarn yazl biimlerini aklarken baz tanmlama harfleri kullanlcaktr. Bu
harflerin anlamlar yledir:

f = Dosya kayts (kaydedicisi) (File Register)
d = Gnderilen yer (destination) iki durum sz konusudur ;
d=0 ..Hedef W kaytsdr.
d=1 ..Hedef dosya (F) kaytsdr .
k = Sabit veya adres etiketi
b = Bit tanmlayc
b = Binary saylar belirleyen harf (rnein b00001111 gibi)
d = Desimal saylar belirleyen harf (rnein d 16 gibi)
h = Hexadesimal saylar belirleyen harf (rnein h 0A gibi)

1.3.1. Byte Ynlendirmeli Komutlar

Bu grup komutlarda hedef kayt W veya bir dosya kayts (f) olabilir. Kaytlar
aras veri transferleri ve ilemleri bu komutlarla gerekleir. Bu komutlar:

ADDWF W ve f kaytlarn topla.
Dizim: [etiket] ADDWF f,d
Operandlar: 0f127 d[0,1]
lem: (W)+(f) (hedef)
Etkilenen bayraklar: C,DC,Z
Kodlama: 00 0111 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: W kaytsnn ieriini f kaytsna ekler. Eer d=0 ise sonu W kaytsnn
ierisinde depolanr. d=1 ise sonu f kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt):1
Saat pals:1

rnek: ADDWF FSR, 0

Komuttan nce;
W = h17
FSR= hC2 olsun.
Komuttan sonra
d=0 olduundan sonucun W de olduuna dikkat ediniz.
W = hD9
FSR= hC2 olur.

12

ANDWF Wyi f ile mantksal ANDle.
Dizim: [etiket] ANDWF f,d
Operandlar: 0f127 d[0,1]
lem: (W).AND.(f) (hedef)
Etkilenen bayraklar: Z
Kodlama: 00 0101 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:W kaytsn f kayts ile mantksal ANDler. AND mantnda
girilerden birinin 0 olmas sonucu 0 yapacaktr.Sonucun 1 olmas iin tm girilerin 1
olmas gerekir. Eer d=0 ise sonu W kayts iinde saklanr. Eer d=1 ise sonu f
kayts iinde geri saklanr.
Hafza alan (Bayt):1
Saat pals:1

rnek: ANDWF FSR, 1

Komuttan nce
W = h17
FSR= hC2 olsun.
Komuttan sonra
h17=b0001 0111
AND hC2=b1100 0010
b 0000 0010=h02 ve ;
d=1 olduundan sonucun f (burada FSR ) de olduuna dikkat edilir.
W = h17
FSR= h02

CLRF F kaytsn sil. ( Clear f )
Dizim: [etiket] CLRF f
Operandlar: 0f127
lem: 00h (f) 1 Z
Etkilenen bayraklar: Z
Kodlama: 00 0001 1fff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:f kaytsnn ierii silinir ve Z biti kurulur.
Hafza alan (Bayt):1
Saat pals:1

rnek: CLRF SAY

Komuttan nce
SAY = h5A
Komuttan sonra

13
SAY = h00
Z = 1

CLRW W Kaytsn Sil.
Dizim: [etiket] CLRW
Operandlar: Yok
lem: 00h (W) 1 Z
Etkilenen bayraklar: Z
Kodlama: 00 0001 0000 0011
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:W kayts silinir. Z biti set edilir.
Hafza alan (Bayt):1
Saat pals:1

rnek: CLRW

Komuttan nce
W = h5A
Komuttan sonra
W = h00
Z = 1

COMF F kaytsn tmle ( tersini al ).
Dizim: [etiket] COMF f,d
Operandlar: 0f127
d[0,1]

lem:
(f) (hedef)
Etkilenen bayraklar: Z
Kodlama: 00 1001 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:F kaytsnn ierii tmlenmitir. Eer d=0 ise sonu W kaytsnn
ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt):1
Saat pals:1

rnek: COMF test, 0

Komuttan nce
test = h13 olsun.
Komuttan sonra
d=0 olduundan sonucun Wde olduuna dikkat edilmelidir.
test = h13=b0001 0011

14
terslenirse b1110 1100=hEC ve test = h13 W= hEC olur.

DECF f kaytsnn deerini 1 azalt.
Dizim: [etiket] DECF f,d
Operandlar: 0f127 d[0,1]
lem: (f) 1 (hedef)
Etkilenen bayraklar: Z
Kodlama: 00 0011 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: f kaytsnn deerini 1 azaltr. Eer d=0 ise sonu W kaytsnn ierisinde
depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt):1
Saat pals:1

rnek: DECF SAY, 1

Komuttan nce
SAY = h01
Z = 0 olsun.
Komuttan sonra
d=1 olduundan sonucun f (burada SAY) de olduuna dikkat edilmelidir.
SAY = h00
Z = 1

DECFSZ f kaytsnn deerini 1 azalt , sonu 0 ise bir sonraki komuta atla.
Dizim: [etiket] DECFSZ f,d
Operandlar: 0f127 d[0,1]
lem: (f)1 (hedef); sonu=0 ise atla
Etkilenen bayraklar: Yok
Kodlama: 00 1011 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: f kaytsnn ierii 1 azaltlr. Ayn zamanda
sorgulama yapar. Kayt ierii 0 olursa program bir sonraki komuta atlar, deilse alttaki
komut ilenir. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f
kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt): 1
Saat pals: 1(2)
Sonu 0sa 2 saat pals , deilse 1 saat pals alr.Yani atlama olmad durumda
uygulanmas 1, atlama durumunda 2 saat pals alr.

15

rnek: DON DECFSZ CNT,1
GOTO LOOP
DEVAM
programn devam

Komuttan nce
PC = Adres DON
Komuttan sonra
CNT= CNT-1
Eer CNT= 0
PC= {Adres DEVAM}
Eer CNT0,
PC={Adres DON+1} yani GOTO komutunun olduu satr ilenir.

INCF f kaytsnn deerini 1 artr.
Dizim: [etiket] INCF f,d
Operandlar: 0f127 d[0,1]
lem: (f) + 1 (hedef)
Etkilenen bayraklar: Z
Kodlama: 00 1010 dfff ffff
MSB tarafndaki 5 bit komut kodu, d biti hedef biti, f ile belirtilen LSB tarafndaki 5
bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: f kaytsnn deerini 1 artrr. Eer d=0 ise sonu W kaytsnn ierisinde
depolanr. d=1 ise,sonu f kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt): 1
Saat pals: 1

rnek: INCF CNT,1

Komuttan nce
CNT= hFF
Z =0
Komuttan sonra
d=1 olduundan sonucun f (burada CNT) de olduuna dikkat ediniz. Ayrca FF+1=00
olacana da dikkat edilmelidir.
CNT= h00
Z= 1

INCFSZ f kaytsnn deerini 1 artr, sonu 0 ise bir sonraki komuta atla.
Dizim: [etiket] INCFSZ f,d
Operandlar: 0f127 d[0,1]
lem: (f)+1(hedef),sonu=0 ise atla
Etkilenen bayraklar: Yok
Kodlama: 00 1111 dfff ffff

16
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: f kaytsnn ierii 1 arttrlr. Ayn zamanda sorgulama yapar. Kayt ierii
0 olursa program bir sonraki komuta atlar, deilse alttaki komut ilenir. Eer d=0 ise sonu
W kaytsnn ierisinde depolanr, d=1 ise sonu f kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt):1
Saat pals:1(2)

Sonu 0sa 2 saat pals, deilse 1 saat pals alr. Yani atlama olmad durumda
uygulanmas 1 , atlama durumunda 2 saat pals alr.

rnek: DON DECFSZ CNT,1
GOTO LOOP
DEVAM
programn devam

Komuttan nce
PC = Adres DON
Komuttan sonra
CNT = CNT+1
Eer CNT= 0 ise
PC= {Adres DEVAM}
Eer CNT0 ise
PC={Adres DON+1} Yani GOTO komutunun bulunduu satr ileme sokulur.

IORWF f ile W kaytlarn mantksal OR ilemine tabi tut.
Dizim: [etiket] IORWF f,d
Operandlar: 0f127 d[0,1]
lem: (W).OR.(f) (W)
Etkilenen bayraklar:Z
Kodlama: 00 0100 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: f ile W kaytlarn mantksal OR ilemine tabi tutar. OR mantnda
girilerden birinin 1 olmas sonucu 1 yapacaktr. Sonucun 0 olmas iin tm girilerin 0
olmas gerekir. Eer d=0 ise sonu W kaytsnn ierisinde depolanr, d=1 ise sonu f
kaytsnn ierisinde geri saklanr.
Hafza alan (Bayt):1
Saat pals:1

rnek: IORWF RESULT, 0
Komuttan nce
RESULT = h13
W = h91
Komuttan sonra
d=0 olduundan sonucun Wde olduuna dikkat edilmelidir.

17
h13=b0001 0011
OR h93=b1001 0011
b 1001 0011=h93 ve ; RESULT = h13 W = h93 olur.

MOVF F kayt ieriini hedefe ta.
Dizim: [etiket] MOVF f,d
Operandlar: 0f127 d[0,1]
lem: (f) (hedef)
Etkilenen bayraklar: Z
Kodlama: 00 1000 dfff ffff
MSB tarafndaki 5 bit komut kodu, d biti hedef biti, f ile belirtilen LSB tarafndaki 5
bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: F kayt ieriini belirtilen hedefe tanr. Eer d=0 ise f ierii W kaytsna
tanr. d=1 ise f ierii f kaytsna tanr. d=1 durumu, status kaytsnda Z bayran
etkileyeceinden dolay, bir file kaytsnn ieriinin 0 olup olmadnn testinde
kullanlabilir.
Hafza alan (Bayt): 1
Saat pals: 1

rnek: MOVF FSR, 0

Komuttan sonra;
d=0 olduundan sonucun Wde olduuna dikkat edilmelidir.
W=FSR olur.

MOVWF Wnin ieriini f kaytna ta.
Dizim: [etiket] MOVWF f
Operandlar: 0f127
lem: (W) (f)
Etkilenen bayraklar: Yok.
Kodlama: 00 0000 1fff ffff
MSB tarafndaki 5 bit komut kodu, f ile belirtilen LSB tarafndaki 5 bit ise dosya
adresini (f kayt adresi) tanmlar.
Tanm:W kaytsnn ierii f kaytsna tanr.
Hafza alan (Bayt): 1
Saat pals: 1

rnek: MOVWF OPTION

Komuttan nce
OPTION = hFF
W = h4F
Komuttan sonra
Bu komutta hedefin (d) belirtilmediine dikkat edilmelidir.
OPTION = h4F
W = h4F

18
NOP lem yok.
Dizim: [etiket] NOP
Operandlar: Yok
lem: Yok
Etkilenen bayraklar: Yok
Kodlama: 00 0000 0xx0 0000
Tanm: 1 saat pals zaman gecikmesi salar.
Hafza alan (Bayt): 1
Saat pals: 1

rnek: NOP
1 saat pals zaman gecikmesi salar.

RLF f kaytsn elde biti (Carry) araclyla sola dndr.
Dizim: [etiket] RLF f,d
Operandlar: 0f127 d [0,1]
lem: Aadaki tanma baknz.
Etkilenen bayraklar: C
Kodlama: 00 1101 dfff ffff
MSB tarafndaki 5 bit komut kodu, d biti hedef biti f ile belirtilen LSB tarafndaki 5
bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm: f kaytsnn ierii elde biti (C) iinden bir bit sola dndrlr. C biti f
kaytsnn MSB bitini tar. Eer d=0 ise sonu W kaytsnn ierisine yerletirilir. Eer
d=1 ise sonu f kaytsnn ierisinde geri depolanr.




Hafza alan (Bayt): 1
Saat pals: 1
rnek: RLF REG1,0
Komuttan nce
REG1 = b1110 0110
C = 0
Komuttan sonra
REG1 = b1110 0110 W = b1100 1100 C = 1 olur.

RRF f kaytsn elde biti (Carry) araclyla saa dndr.
Dizim: [etiket] RRF f,d
Operandlar: 0f127 d [0,1]
lem: Aadaki tanma baknz.
Etkilenen bayraklar: C
Kodlama: 00 1100 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
C F kayts

19
Tanm:f kaytsnn ierii elde biti (C) iinden bir bit saa dndrlr. C biti f
kaytsnn LSB bitini tar. Eer d=0 ise sonu W kaytsnn ierisine yerletirilir. Eer
d=1 ise sonu f kaytsnn ierisinde geri depolanr.





Hafza alan (Bayt): 1
Saat pals: 1
rnek: RRF REG1,0

Komuttan nce
REG1 = b1110 0110
C = 0
Komuttan sonra
REG1 = b1110 0110
W = b0111 0011
C = 0

SUBWF F kaytsndan W kaytsn kart.
Dizim: [etiket] SUBWF f,d
Operandlar: 0f127 d[0,1]
lem: (f) (W) (hedef)
Etkilenen bayraklar: C,DC,Z
Kodlama: 00 0010 dfff ffff
MSB tarafndaki 5 bit komut kodu, d biti hedef biti, f ile belirtilen LSB tarafndaki 5
bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:W kayts f kaytsndan kartlr. d=1 ise sonu f kayts ierisinde geri
saklanr.
Hafza alan (Bayt):1
Saat pals:1

1.rnek: SUBWF REG1,1

Komuttan nce
REG1 = 3
W = 2
C = ?
Z = ?
Komuttan sonra
REG1 = 1
W = 2
C = 1, sonu pozitif
Z = 0

C
F kayts

20
2. rnek: Komuttan nce
REG1 = 2
W = 2
C = ?
Z = ?
Komuttan sonra
REG1 = 0
W = 2
C = 1,sonu sfr
Z = 1

3. rnek: Komuttan nce
REG1 = 1
W = 2
C = ?
Z = ?
Komuttan sonra
REG1 = FF
W = 2
C = 0,sonu negatif
Z = 1

SWAPF fyi takas et
Dizim: [etiket] SWAPF f,d
Operandlar: 0k255 d[0,1]
lem: (f<3:0>)(hedef<7:4>), (f<7:4>)(hedef<3:0>)
Yani f kaytsnn LSB tarafndaki 4 biti (1.Dijiti) ile MSB tarafndaki 4 biti (2.dijiti)
yer deitirir. Eer d=0 ise sonu W kaytsnn ierisine yerletirilir. Eer d=1 ise sonu f
kaytsnn ierisinde geri depolanr.
Etkilenen bayraklar: Yok.
Kodlama: 00 1110 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:f kaytsnn yksek ve alak baytlar dntrlr. d=0 ise sonu W kayts
iine yerletirilir. Eer d=1 ise sonu f kayts iine yerletirilir.
Hafza alan (Bayt): 1
Saat pals: 1

rnek: SWAP F ISIK, 0

Komuttan nce;
ISIK = hA5 olsun .
Komuttan sonra;
ISIK = hA5
W = h5Aolur.


21
XORWF f ile Wnin ieriini mantksal EXORla.
Dizim: [etiket] XORWF f,d
Operandlar: 0k127 d[0,1]
lem: (W) .XOR. (f) (hedef)
Etkilenen bayraklar: Z
Kodlama: 00 0110 dfff ffff
MSB tarafndaki 5 bit komut kodu , d biti hedef biti , f ile belirtilen LSB tarafndaki
5 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:W kaytsnn ierii, f kayts ile mantksal EXORlanr. EXOR mantnda
ayn bitlerde k 0, farkl bitlerde k 1 olur. Eer d=0 ise sonu W kayts iinde
depolanr, d=1 ise sonu f kayts iine geri yerletirilir.
Hafza alan (Bayt):1
Saat pals:1

rnek: XORWF REG , 1

Komuttan nce
REG = hAF
W = hB5
Komuttan sonra
hAF= b1010 1111
EXOR hB5= b1011 0101
b 0001 1010=h1A ve ;
REG = h1A
W = hB5

1.3.2. Bit Ynlendirmeli Komutlar

Bit ynlendirmeli komutlarda dikkat edilirse hedef (d) belirtilmemitir. Sonu her
zaman f kaytsnn iersindedir.

BCF F kaytsnn belirtilen bitini sfrla.
Dizim: [etiket] BCF f,b
Operandlar: 0f127
lem: 0 (f<b>)
Etkilenen bayraklar: Yok
Kodlama: 01 00bb bfff ffff
MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile
belirtilen LSB tarafndaki 7 bit ise dosya adresini (f kayt adresi) tanmlar.
Tanm:f iindeki b. biti silinir.
Hafza alan (Bayt): 1
Saat pals: 1

22

rnek: BCF TEST,7

Komuttan nce
TEST = hC7 olsun.

Komuttan sonra
hC7=b 1100 0111

0 olur ve;
TEST = h47 olur.

BSF F kaytsnn belirtilen bitini kur (birle).
Dizim: [etiket] BSF f,b
Operandlar: 0f127 0b7
lem: 1 (f<b>)
Etkilenen bayraklar: Yok
Kodlama: 01 01bb bfff ffff
MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile
belirtilen LSB tarafndaki 7 bit ise dosya adresini
(f kayt adresi) tanmlar.
Tanm:f kayts iindeki b. Bit 1e kurulur.
Hafza alan (Bayt): 1
Saat pals: 1
rnek: BSF TEST, 7
Komuttan nce
TEST = h0A olsun.
Komuttan sonra
h0A=b 0000 1010

1 olur ve; TEST = h1A olur.
BTFSC f kaytsnn belirlenen biti 0 ise bundan sonraki komutu atla.
Dizim: [etiket] BTFSC f,b
Operandlar: 0f127 0b7
lem: F(<b>)=0 ise atla
Etkilenen bayraklar: Yok
Kodlama: 01 01bb bfff ffff
MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile
belirtilen LSB tarafndaki 7 bit ise dosya adresini
(f kayt adresi) tanmlar.
Tanm: f kayts iindeki b. Bitin 0 olup olmad test edilir. Eer b. bit 0 ise bu
komutun altndaki komut ilenmez bir sonraki komuta saplr. Aksi durumda ise sradaki
komut ilenir.
Hafza alan (Bayt):1
Saat pals:1(2)


23
Test edilen bit 1 ise 1 saat pals , 0 ise 2 saat pals alr.
rnek:BASLA BTFSC PORTB,1 ;B portunun 1.bitini test et.
GOTO BASLA ; 0 deilse bu satr ilenir, BASLA etiketine dallanr.
;Yani 0 olana kadar test etmeye devam edecek.
BSF PORTB,1 ;0 ise bu satr ilenir ve B portunun 1. biti bu komut ile
;1 yaplr. Eer bu pine bir led bal ise yanar.

BTFSS f kaytsnn belirlenen biti 1 ise bundan sonraki komutu atla.
Dizim: [etiket] BTFSS f,b
Operandlar: 0f127 0b127
lem: Eer (f<b>)=1 ise atla
Etkilenen bayraklar: Yok.
Kodlama: 01 11bb bfff ffff
MSB tarafndaki 4 bit komut kodu (opcode), 3 tane b biti hedef biti belirler, f ile
belirtilen LSB tarafndaki 7 bit ise dosya adresini
(f kayt adresi) tanmlar.
Tanm: f kayts iindeki b. Bitin 1 olup olmad test edilir. Eer b. bit 1 ise bu
komutun altndaki komut ilenmez bir sonraki komuta saplr. Aksi durumda ise sradaki
komut ilenir.
Hafza alan (Bayt): 1
Saat pals: 1(2)
Test edilen bit 0 ise 1 saat pals , 1 ise 2 saat pals alr.
rnek: BASLA BTFSS PORTA,1 ;A portunun 1.bitini test et.
GOTO BASLA ;1 deilse bu satr ilenir, BASLA etiketine dallanr.
;Yani 1 olana kadar test etmeye devam edecek.
BSF PORTB,1 ;1 ise bu satr ilenir ve B portunun 1. biti bu komut ile 1
;yaplr. Eer bu pine bir led bal ise yanar.

1.3.3. Sabit leyen Komutlar

Sabit ynlendirmeli komutlarda dikkat edilirse hedef (d) belirtilmemitir. Sonu her
zaman W kaytsnn iersindedir. Ayrca bu gruptaki komutlarn W dndaki kaytlar ile
kullanlamadna dikkat edilmelidir.

ANDLW W ile birlikte 8 bitlik k sabitini mantksal ANDle.
Dizim: [etiket] ANDLW k
Operandlar: 0k255
lem: (W).AND.(k) (W)
Etkilenen bayraklar: Z
Kodlama: 11 1001 kkkk kkkk

MSB tarafndaki 5 bit komut kodu , k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat ediniz.

Tanm:W kaytsnn ierii 8-bitlik sabit k ile mantksal ANDlenir. Sonu,W
kaytsna geri konur.

24

Hafza alan (Bayt): 1
Saat palsi: 1
rnek: ANDLW h5F

Komuttan nce
W = hA3
Komuttan sonra
hA3= b1010 0011
AND h5F= b0101 1111
b 0000 0011=h03 ve;
W = h03 olur.

ADDLW W ile birlikte 8 bitlik k sabitini topla.
Dizim: [etiket] ADDLW k
Operandlar: 0k255
lem: (W)+k (W)
Etkilenen bayraklar: C,DC,Z
Kodlama: 11 111x kkkk kkkk

MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.
Hafza alan (Bayt):1
Saat palsi:1

rnek: ADDLW h15

Komuttan nce
W = h10
Komuttan sonra W = h25 olur.

IORLW W ile birlikte kapsayan OR yazm
Dizim: [etiket] IORLW k
Operandlar: 0k255
lem: (W).OR.(k) (W)
Etkilenen bayraklar: Z
Kodlama: 11 1000 kkkk kkkk

MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.
Tanm:W kaytsnn ierii 8-bitlik sabit k ile ORlanr. Sonu, W kaytsna geri
konur.
Hafza alan (Bayt):1
Saat pals:1



25
rnek: IORLW h35

Komuttan nce
W= h9A
Komuttan sonra
h9A= b1001 1010
OR h35= b0011 0101
b 1011 1111=hBF ve ; W= hBF ve Z=1 olur.

MOVLW W kaytsna bir say/sabit ykle.
Dizim: [etiket] MOVLW k
Operandlar: 0k255
lem: k (W)
Etkilenen bayraklar: Yok.
Kodlama: 11 00xx kkkk kkkk
MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.
Tanm: 8-bitlik sabit k, W kaytsna yklenir.
Hafza alan (Bayt):1
Saat pals:1

rnek: MOVLW h5A

Komuttan nce
W= h9A olsun ;
Komuttan sonra
W= h5A olur.

RETLW Altprogramdan Wye bir say/sabit ykle ve geri dn.
Dizim: [etiket] RETLW k
Operandlar: 0k255
lem: (k) (W)
TOS (PC)
Etkilenen bayraklar: Yok
Kodlama: 11 01xx kkkk kkkk

MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.

Tanm:Altprogramdan Wye bir k say/sabiti ykleyerek dnmek iin kullanlr.
Dn TOS (ynn st- yani geri dn adresinin bulunduu hafza alan) deerinin PC
(program sayc) ye aktarlmasyla yaplr. Bu komut daha ok evrim tablolarnda kullanlr.
lerde detayl ilenecektir.
Hafza alan (Bayt):1
Saat pals:2


26
rnek: RETLW h3F

Komuttan nce Wnin ierii ne olursa olsun komuttan sonra W=h3F yaplr ve
anaprograma geri dnlr.

SUBLW Bir k say/sabitten Wyi kart.
Dizim: [etiket] SUBLW k
Operandlar: 0k255
lem: k (W) (W)
Etkilenen bayraklar: C,DC,Z
Kodlama: 11 110x kkkk kkkk
MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.
Tanm:W kayts (2nin tmleyeni metodu ile) sekiz bitlik k yazmndan kartlr.
Sonu, W kayts ierisine yerletirilir.
Hafza alan (Bayt):1
Saat pals:1

rnek 1:

SUBLW h02
Komuttan nce
W = 1
C = ?
Z = ?
Komuttan sonra
W = 1
C = 1, sonu pozitif
Z = 0
rnek 2:Komuttan nce
W = 2
C = ?
Z = ?
Komuttan sonra
W = 0
C = 1, sonu sfr
Z = 1
rnek 3:Komuttan nce
W = 3
C = ?
Z = ?
Komuttan sonra
W = FF
C = 0, sonu negatif
Z = 1


27
XORLW Bir k say/sabit ile Wyi mantksal EXORla.
Dizim: [etiket] XORLW k
Operandlar: 0k255
lem: (W) .XOR. k (W)
Etkilenen bayraklar: Z
Kodlama: 11 1010 kkkk kkkk
MSB tarafndaki 5 bit komut kodu, k ile belirtilen LSB tarafndaki 8 bit ise 1 baytlk
sabit deeri tanmlar. Burada hedef (d) in kodlanmadna dikkat edilmelidir.
Tanm: W kaytsnn ierii, sekiz bitlik k yazm ile mantksal EXORlanr.
EXOR mantnda ayn bitlerde k 0, farkl bitlerde k 1 olur. Sonu W kayts iine
yerletirilir.
Hafza alan (Bayt): 1
Saat pals: 1

rnek: XORLW hAF

Komuttan nce
W = hB5 olsun.
Komuttan sonra
hAF= b1010 1111
EXOR hB5= b1011 0101
b 0001 1010=h1A ve;
W = h1A olur.

1.3.4. Kontrol Komutlar

Kontrol komutlar program akn belirleyen komutlardr. Alt program arma,
artsz dallanma ve uyku moduna geme gibi olaylar bu komutlarla gerekleir. Bu
komutlarda hedef genelde bir adres deeridir.

CALL Alt program ar .
Dizim: [etiket] CALL k
Operandlar: 0k2047
lem: (PC)+1 TOS,
PC: Program sayc (program counter)
TOS: Ynn st (Top Of Stack)
k (PC<10:0>),
(PCLATH<4:3>)(PC<12:11>)
Etkilenen bayraklar: Yok.
Kodlama: 10 0kkk kkkk kkkk
MSB tarafndaki 3 bit komut kodu, k ile belirtilen LSB tarafndaki 11 bit ise
altprogram balang adresini tanmlar. Burada hedef (d) in kodlanmadna dikkat
edilmelidir.
Tanm: Alt program arr. lk olarak geri-dn adresi (PC+1) yna itilir. Onbir
bitlik altprogramn balang adresi , PC bitleri <10:0> ierisine yklenir. PCn st bitleri

28
PC<12:11> , PCLATHin <4:3> bitlerinden yklenir. CALL mutlaka RETURN komutu
ile birlikte kullanlmaldr. RETURN komutu ilerde anlatlacaktr.
Hafza alan (Bayt): 1
Saat pals: 2

rnek: DON CALL SAYAC

DONun bir etiket olduuna ayn zamanda CALL komutunun u anki adresini
tuttuuna dikkat ediniz. SAYAC ise altprogramn balang adresini tutan etikettir. Bu
durumda;
Komuttan nce
PC = {Adres DON}
Komuttan sonra
PC = {Adres SAYAC}
TOS = {Adres DON} olur.

CLRWDT Beki kpei zamanlaycsn (Watchdog Timer) sil.
Dizim: [etiket] CLRWDT
Operandlar: Yok
lem: 00h WDT
0 WDT n-lcs
1 T0
1 PD
Etkilenen bayraklar:T0 ,PD
Kodlama: 00 0000 0110 0100

Tanm: CLRWDT komutu, Watchdog Timer reset eder. Bu komut ayn zamanda
WDTnin n blcsnn de resetlenmesine sebep olur. T0 ve PD durum bitleri de set edilir.
Bu bitlerin ilevleri iin status kayts konusuna baklmaldr.
Hafza alan (Bayt):1
Saat pals:1

rnek: CLRWDT

Komuttan nce
WDT sayac = ?
Komuttan sonra
WDT sayac = h00
WDT n-blc deeri = 0
T0 =1
PD = 1

GOTO Adrese git
Dizim: [etiket] GOTO k
Operandlar: 0k2047
lem: k (PC<10:0>)

29
(PCLATH <4:3>) (PC<12:11>)
Etkilenen bayraklar: Yok
Kodlama: 10 1kkk kkkk kkkk
Tanm: GOTO, koulsuz bir sapma komutudur. Knin belirledii 11-bitlik adres PC
bitlerinin <10:0> ierisine yklenir. PCn st bitleri (PC<12:11>) , PCLATH<4:3>ten
yklenir ve oluan adrese saplr.
Hafza alan (Bayt):1
Saat pals:2

rnek: GOTO SAYAC
Komuttan sonra;
PC = {Adres SAYAC} olur.

RETFIE Kesme altprogramndan geri dn.
Dizim: [etiket] RETFIE
Operandlar: Yok
lem: TOS (PC) ; 1 GIE TOS da geri dn adresi bulunur.
Etkilenen bayraklar: Yok
Kodlama: 00 0000 0000 1001
Tanm: Kesme altprogramndan geri dnmek iin kullanlr. Ynda (TOS) bulunan
geri dn adresi PCye yklenir. INTCON kesme kaytsnn GIE (Genel kesme yetkisi)
biti set edilir. Bu, iki dnglk bir komuttur.
Hafza alan (Bayt): 1
Saat pals: 2

rnek: RETFIE

Komuttan sonra;
PC = TOS
GIE = 1

RETURN Altprogramdan geri dn.
Dizim: [etiket] RETURN
Operandlar: Yok
lem: TOS (PC)
Etkilenen bayraklar: Yok
Kodlama: 00 0000 0000 0000
Tanm: Altprogramdan geri dnmeyi salar. Ynda (TOS) bulunan geri dn
adresi PCye yklenir. Bu, iki dnglk bir komuttur.
Hafza alan (Bayt):1
Saat pals:2

rnek: RETURN

Komuttan sonra
PC= TOS; yani PCye geri dn adresi yklenir ve ana programa yklenir.

30

SLEEP Uyku (Standby) moduna gir.
Dizim: [etiket] SLEEP
Operandlar: Yok
lem: 00h WDT
0 WDT n-blcs
1 TO
0 PD
Etkilenen bayraklar: TO , PD
Kodlama: 00 0000 0110 0011
Tanm: G yok durum biti PD (Power down) sfrlanr. Sre am TO (Time-out)
durum biti ise 1e kurulur. Watchdog zamanlaycs ve n-blcs silinir. Osilatrn
durmasyla ilemci SLEEP moduna girer. PIC bu durumda ok az g harcar. Arada bir
kontrol gereken gvenlik ilerinde ya da belirli srelerde yaplacak iler bittiinde PIC
uyuma moduna sokulur.
Hafza alan (Bayt):1
Saat pals:1

rnek: SLEEP

1.4. Say ve Karakterlerin Yazl

PIC assembly komutlarnda saylar heksadesimal, binary veya desimal formda
kullanlabilir. Deiik kaynaklarda kullanlan say ve karakter gsterili biimleriyle
karlaldnda bunlar okuyabilmek iin aada rnekler verilmitir.

1.4.1. Heksadesimal Saylar

Heksadesimal saylar 0x, 0 veya h harfleriyle balamaldr. rnein, STATUS
kaytsna 03 adresini atamak iin aada gsterilen yazl biimleri kullanlabilir.

STATUS EQU 0x03
EQU. 03h
EQU. h 03

MOVLW komutu ile W kayts ierisine yklenecek olan FF heksadesimal sabiti
ise aadaki gibi yazlabilir.
MOVLW 0 x FF veya MOVLW h FF
Biz hexadesimal format h xx eklinde kullanlacak.

1.4.2. Binary Saylar

Binary saylar b harfi ile balamaldr. rnein 00001010 binary saysn W kayts
ierisine yklemek iin aadaki gibi yazlmaldr.

MOVLW b00001010

31
1.4.3. Desimal Saylar

Desimal saylarn bana d harfi konularak trnak ierisinde yazlr. rnein, 15
desimal says W kayts ierisine yklemek iin aadaki gibi yazlmaldr.

MOVLW d 15

1.4.4. ASCII Karakterler

Genellikle RETLW komutu ile birlikte kullanlan ASCII karakterler trnak ierisine
alnarak aadaki gibi yazlr.

RETLW A
RETLW T

1.5. Mikrodenetleyici in Gerekli Yazlmn Kullanm

Mikrodenetleyici programlamak iin (Burada PIC16F84) yazlm ve donanm
ihtiyalarmz olacaktr. Yazlm olarak

ASM uzantl dosyamz yazabilmek iin bir metin editr,
ASM dosyamz makine koduna (HEX dosyas) evirecek derleyici program
HEX dosyasn bir programlama kartna ykleyecek PIC programlayc yazlm
ihtiyac olacaktr.

Metin editr olarak windowsun kendi NOTPAD program veya MPLAP ierisindeki
kendi editr de kullanlabilir. Resim 1.1de MPLAPnin ASM editr arabirimi grlyor.

32

Resim 1.1: MPLAPnin ASM editr arabirimi
Donanm olarak ise IBM uyumlu bir bilgisayara ve kullanlan mikrodenetleyiciyi
programlayabilecek programlayc karta ihtiya vardr. Bu kartn yaplmas ve
programlaycnn nasl kullanaca Mikro lemci ve Mikrodenetleyiciler modlnde
anlatlmtr. Burada sadece derleme (compiler) olaynn nasl yapldna deinilecek

1.5.1. Programn Kurulmas

Chip(ip) firmasnn MPASM derleyicisi ile yazlm olunan assembly dosyalar,
mikrodenetleyiciye yklemek zere .HEX uzantl dosyalara evrilebilir. Bu program
internet sitesinden cretsiz datlan MPLAB programnn iinde bulunabilir. Bu program
yaklak 30MBlk dosyadr (MPLAB710.zip).

Gelen zip dosyasn alr ve iindeki Setup.exe dosyasn altrlarak yklenir.
Resim 1.2de kurulum grlmektedir.

33

Resim 1.2: MPLAB kurulumu
Ykleme ilemi bittikten sonra, balat mensnden porgramlarm iinde MPASM
program aldnda ekrana Resim 1.3teki pencere gelecek.

Resim 1.3: MPASM derleyici program arayz

34
1.5.2. Menlerin Tantlmas

MPASM derleyicisinin ayarlar yledir:

Source File Name ile derlenecek ASM uzantl kaynak dosya seilir. Bunun
iin Browse tklanarak kaynak dosya seilir.
Radix radyo dmelerinden hexadecimal seilmelidir.
Warning level, ikaz seviyesi ayarlanabilecek bir ayar grubudur. Programn
hangi durumlarda ikaz vereceini belirler.Tercihen Warning and errors
seilmelidir.
Hex Output, derleme sonucunda oluacak hex dosyasnn k formatn
belirler. Tercihen INHX8M seilmelidir.
Generated Files, derleme sonucunda hangi dosyalarn oluturulacan
belirler. Tercihen Error File ve List Fileseilmelidir. Bir problem durumunda
bu dosyalar incelenerek hatalar giderilebilir.
Macro expansions, makro uzantlarnn kabul edilip/edilmemesini belirleyen
bu ayar tercihen default olmaldr.
Processor, ile kullanlacak mikrodenetleyici seilir.
Tab size , sekme uzunluu deeri 8 seilebilir.
Extra Option, zel parametreler girmek iin kullanlr. rnein, buraya
/LTEST.LST yazlrsa derleme sonucunda HEX dosyas ile beraber TEST.LST
dosyasnn da olutuu grlr.
1.5.3. Mikrodenetleyici ve Dier Donanmlarn Seilmesi

Mikrodenetleyiciler ile bir proje tasarlanrken seilecek mikrodenetleyicinin seimi
ok nemlidir. Mikrodenetleyicilerin komut saylar, kullandklar kaytlar, bellek deerleri
vb. birbirinden farkldr. Bu yzden ncelikle kullanlacak mikrodenetleyici seilmelidir.
Bunun iin mikrodenetleyicilerin kataloglar incelenmelidir. Chip firmasnn sitesinde
retilen tm mikrodenetleyicilerin (PIC serisi) kataloglarna ulalabilir. Bu modlde daha
ok PIC16F84 mikrodenetleyicisinin programlanmas grlecektir. Yalnz analog/dijital
dnm konusunda, PIC16F84 denetleyicisinin dhil ADC modl olmadndan, bunun
iin 16F877 denetleyicisi kullanlacak. ekil 1.3 ve ekil 1.4te en ok kullanlan
denetleyicilerin baz teknik verileri verilmitir.


35

ekil 1.3: 18 pinli baz denetleyicilerin teknik verileri

ekil 1.4: 40 pinli baz denetleyicilerin teknik verileri
Yaplacak ie, kullanlan denetleyicinin teknik zelliklerine gre kullanlacak dier
donanmlar (ADC /DAC dntrcler, LCD display, sensrler vs. ) seilmelidir.

1.6. Programlama Teknii

Program yazarken 4 temel kural izlenmelidir.

Yazlm hakknda daima aklamalar yaplmaldr. Yoksa kanlmaz olarak geri
dnldnde, neyin, neden yapldn anlamak ok zor olur.

36
Programlar iin evrensel bir (Header) balk kullanlmaldr. Bu, i ykn
hafifletir, tutarl bir format yaratr ve hatrlanmas gereken deiken saysn
azaltr.
Tm alt rutinler tek blgede toplanmaldr. PICle alrken bu evrensel blge,
her bellek sayfasnn stnde (00-FFh) olmaldr.
Yazlmn ne yapmasn gerektiini hatrlamak iin bir ak diyagram
izilmelidir.

1.6.1. Bank Deitirme

STATUS kaytsnn 5. ve 6. bitleri (RP0,RP1) bank deitirmek iin kullanlr.
Bank deitirme ilemi o banktaki kaytlar kullanabilmek iin yaplr. ekil 1.5te
PIC16F84 iin Bank 0 ve Bank 1de bulunan kaytlar ve bellekteki adresleri grlmektedir.
PIC16F84n sadece 2 bank bulunduundan bank seimi sadece STATUS kaytsnn 5.
biti ( RP0) ile yaplr.Yani 6. bitin deeri daima 0 olmaldr. Zaten PIC enerjilendii anda
power-On-Reset (POR) gerekleir ve bu iki bit 0 olur. Bu bitler ayn zamanda MCLR
ucundan yaplan hric reset ve WDT reseti durumunda da 0 olur. Bank geileri iin
aadaki komut ikilisi kullanlr (PIC16F84 iin).

BSF STATUS,5 ; Bank 1 seilir.
BCF STATUS,5 ; Bank 0 seilir.


37

ekil 1.5: PIC 16F84 denetleyicisinin bank ve kayt yaps

38
1.6.2. Portlarn Giri ve k Olarak Ynlendirilmesi

Portlara bal bulunan bir giri/k elemann kullanabilmek iin portlarn giri/k
olarak ynlendirilmesi gerekir. PIC16F84de A portunu TRISA kayts, B portunu TRISB
kayts ynlendirir.

PortA/PortBnin hangi bitleri giri yaplacaksa TRISA/TRISB kaytlarnn o bite
karlk gelen bitleri 1 yaplr. Ayn ekilde k yaplacaksa TRISA/TRISB kaytlarnn
o bite karlk gelen bitleri 0 yaplr.

1. rnek: Port A nn ilk 4 biti giri, 5. biti k olarak kurulsun (PIC16F84de A
portu 5 bitlik bir porttur.).

CLRF PORTA ; PORTAy sfrla.
BSF STATUS, 5 ; Bank 1e ge. nk TRISA bank1de.
MOVLW h0F ; TRISAya yklemek iin deer hazrla.
MOVWF TRISA ; TRISAya deeri ykle. TRISA<0:3> giri, TRISA<4> k iin
;ayarland.
BCF STATUS, 5 ; Bank 0e ge. nk PORTA bank1de ve I/O ilemleri portlardan
gerekleir.

2. rnek: PortAnn tamam giri, Port Bnin tamamn k olarak kurulsun
(PIC16F84de B portu 8 bitlik bir porttur.).

CLRF PORTB ; PORTBy sfrla.
BSF STATUS, RP0 ; Bank1e ge.nk TRISA ve TRISB bank1de.
CLRF TRISB ; TRISBya deeri ykle.TRISB<0:7> 0olacandan tm bitler
; k olarak kuruldu.
MOVLW hFF ; A portunun tamam
MOVWF TRISA ; giri olarak ayarland.
BCF STATUS, 5 ; Bank 0e ge. nk PORTA ve PORTB bank 1de ve I/O
ilemleri; portlardan gerekleir.

1.6.3. Her Adm in Ak Diyagram izme

Ak diyagram oluturma ve sembolleri konusunda ak diyagramlar hakknda bilgi
verilmiti. Burada Port ynlendirmesine bir rnek olarak PICe enerji verildiinde
PORTBnin 1.bitine bal ledi yakacak programn ak diyagramn ve her sembolde
ilenecek assembly komutlar yazlsn.

39

Ak diyagram izmenin amac karmak ve/veya ok uzun programlar yazarken
ilem sras oluturup dnme kolayl salamasdr.

1.6.4. Konfigrasyon Bitlerinin Yazlmas

Konfigrasyon bitleri, PICe gerilim uygulandnda PICin uymas gereken koullar
belirlemede kullanlr. Bu bitler aadaki koullar belirlemede kullanlr:

Osilatr tipi
WDTin aktif/pasif yapma
PORi (Power-On-Reset) aktif/pasif yapma
Kod korumay aktif/pasif yapma


40
Bu konfigrasyon bitlerini program ierinde yazlabilecei gibi PIC programlaycnn
kendi programndaki fuses penceresinden de yaplabilir.

Konfigrasyon bitlerini belirleyen tanmlar:

_CP_ ON / OFF ; kod koruma var/yok.
_WDT_ ON / OFF ; WDT aktif /pasif.
_ PWRT_ ON / OFF ; Power-On-Reset var/yok.
_RC_OSC ; RC osilatr kullanlyor.
_LP_OSC ; Alak g (low power) osilatr kullanlyor.
_XT_OSC ; Kristal osilatr kullanlyor.
_HS_OSC ; Yksek hzl (High speed) osilatr kullanlyor.

Konfigrasyon cmlesi yazarken unlara dikkat edilmelidir:

CONFIG ifadesinin yanndaki alt izgi ift olmaldr ___.
Daha sonra yazlan ifadeler tek alt izgili olmaldr _.
Konfigrasyonlar arasnda bir boluk olmaldr.
Boluktan sonra & iareti kullanlmaldr.
& iaretinden sonra ara vermeden konfigrasyon yazlr.

Aadaki rnek incelenmelidir.

__CONFIG _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC
Bu ifadede ;
_CP_OFF ; kod koruma yok.
_WDT_ON ; WDT aktif
_ PWRT_ON ; Power-On-Reset var.
_RC_OSC ; RC osilatr kullanlyor.

1.6.5. W Kaytsnn Kullanm

PIC16F84'n RAM bellek alannda grlmeyen bir de W registeri vardr. W register
bir akmlatrdr. W registerine direkt olarak ulalmayabilinir. Ancak dier registerlerin
ierisindeki verileri aktarrken erimek mmkndr. Bir PIC'te gerekleen tm aritmetik
ilemler ve atama ilemleri iin W register kullanlmak zorunluluu vardr. rnein, iki
register iindeki veriler toplanmak istendiinde ilk olarak registerlerden birinin ierii W
registere aktarlr (ekil 1.6). Daha sonra da dier registerin ierisindeki veri W registeri
ierisindekiyle toplanr. Bu registerin kullanm zellikleri yine programlama konusunda
detayl olarak ele alnacaktr.




ekil 1.6: W kayts kullanm

Port A

Port B
W
kayts

41
1.6.6. Bitleri Test Ederek lem Yapma

Bir kayt ierisindeki herhangi bir bit BTFSS veya BTFSC komutlar ile test
edilebilir. Mikrodenetleyici komutlar konusunda ilenen bu komutlarn ilevi ksaca
hatrlanrsa BTFSS komutu belirtilen f kaytsndaki biti test eder, eer 1 ise bir sonraki
komuta geer.

BTFSC komutu ise belirtilen f kaytsndaki biti test eder, eer 0 ise bir sonraki
komuta geer.

rnek : A portunun 0.bitine bal olan bir butona basldnda B portuna bal 8 ledi
yakacak program yazlsn.

zm: nce programn ak diyagram karlr.




















hayr

evet






ekil 1.7: rnek progamn algoritmas

imdi de program yazlsn.
Bala
PortByi sil.
PIC16F84
tant.
Tekrar test et.
PORTA giri
PORTB k
PORTA<0>=1
mi?
PORTBdeki ledleri yak.
son

42
;====led.asm======
LIST P=16F84 tanmlamalarn yapld
INCLUDE P16F84.INC blm

CLRF PORTB
BSF STATUS,5 A portu giri, B portu k olarak CLRF
TRISB ayarland.
MOVLW hFF
MOVWF TRISA
BCF STATUS,5
TEST_PORTA
BTFSS PORTA,0 ; PORTA<0>=1 mi?
GOTO TEST_PORTA ; hayr.Tekrar test et.
MOVLW hFF ; evet. W=hff ykle.
MOVWF PORTB ; B portundaki tm ledleri yak.
SON PIC16F84de duraklama komutu olmad
GOTO SON iin burada yazlm ile sonsuz dng
END oluturup PICi aldatyoruz. RESET
olana kadar PIC sonsuz dngde kalr.

1.6.7. Saya Kullanarak Dng Dzenlemek

Baz ilemlerin nceden belirlenen sayda tekrarlanmas gerekebilir. Bu durumda
programc tarafndan belirlenen bir kayt saya olarak kullanabilir. Saya u ekilde
hazrlanr:

nce saya ierisine tekrar saysn belirleyen say yklenir.
Her ilem tekrarnda saya 1 azaltlr(DECFSZ komutu kullanlr.).
Saya 0 olduunda program ya bitirilir ya da baka bir yere dallandrlr.

Olaylarn ak diyagram izilsin.

Ak diyagramnn komut listesi:

TEKRAR
DECFSZ SAYAC,F
GOTO TEKRAR
BSF PORTB,1


hayr
evet



ekil 1.8: DECFSZ komutu ile yaplan sayacn algoritmas
Tekrar test et.
SAYAC=0
m?
PORTBnin 1.bitini 1 yap.
SAYAC=SAYAC-1

43
Bilindii gibi DECFSZ komutu, kaytdan 1 kart eer sonu 0 ise bir sonraki
komuta dallan ilevini yapmaktadr. Detayl bilgi iin mikrodenetleyici komutlar
konusunda DECFSZ komutu incelenmelidir.

Zaman geciktirme dngleri konusunda saya kullanarak yaplan dngler
incelenmelidir.

1.6.8. Karlatrma Yaparak Dng Dzenlemek

SUBLW, SUBWF, INCF, DECF komutlar kullanlarak da sayalar dzenlenebilir.
Bu komutlar hakknda detayl bilgi iin mikrodenetleyici komutlar konusuna baklmaldr.

Saya u ekilde hazrlanr:

nce saya ierisi sfrlanr.
Her ilem tekrarnda saya 1 arttrlr(INCF komutu kullanlr.).
Saya istenilen sayya ulatnda STATUS kaytsnn Z biti BTFSS
komutu ile sorgulanarak program ya bitirilir ya da baka bir yere dallandrlr.
imdi de bu olaylarn ak diyagram izilsin.
Ak diyagramnn asm kodlar

CLRF SAYAC
TEKRAR
INCF SAYAC,F
MOVLW dtekrar says
SUBWF SAYAC,W
BTFSS STATUS,Z
GOTO TEKRAR
BSF PORTB,1






hayr



evet




ekil 1.9: SUBWF komutu ile yaplan sayacn algoritmas
Tekrar test et.
STATUS<2>=0
m?
PORTBnin 1.bitini 1 yap.
W=SAYAC-W
SAYAC=SAYAC+1
We tekrar saysn ykle.
SAYAC=h00

44
Yukardaki program parasnda SAYAC deeri Wye yklenen tekrar saysna
ulatnda SUBWF SAYAC, W komut satr icrasnda STATUS kaytsnn Z bayra
1 olacaktr ve B portunun 1.biti 1 yaplarak buna bal led yanacaktr. Burada dikkat
edilmesi gereken konu, GOTO TEKRAR komut satr, Wye yklenen d tekrar saysndan
1 eksik sayda icra edilecektir. Yani MOVLW d10 yapldysa GOTO TEKRAR komut
satr 9 defa icra edilecektir.

1.6.9. Status Kayts

STATUS kayts ALU`nun aritmetik statsn, RESET statsn ve veri
belleinin kme seim bitlerini iermektedir.

Herhangi bir kaytla olduu gibi STATUS kayd herhangi bir komut iin hedef
olabilir. Eer STATUS kayd, Z, DC, veya C bitini etkileyen komutun hedefiyse o zaman
bu bit zerine yazma etkin deildir.Yani sadece okunabilir durumdadr. Bu bitler aygtn
lojik durumuna gre uygun olarak kurulmu veya silinmitir. Daha tesinde, TO ve PD
bitleri sadece okunabilir bitlerdir.

rnein, CLRF STATUS komutu yukar biti temizleyerek Z bitini kuracaktr.
Bu STATUS kaydndan 000u uluu olarak kacaktr. (u=deimeyen). STATUS kaydn
deitirmek iin yalnzca BCF, BSF, SWAPF ve MOVWF kullanlmaktadr. nk bu
komutlar hibir stats bitini etkilememektedir.

STATUS kayd, Z, DC ve C bitini etkileyen komutun hedefi olduu durumlarda bu
bitin zerine yazma etkinsizdir.

kartmalarda, C ve DC bitleri dn alan bitler olarak almaktadr.

Aada STATUS kaytsnn her bir bitinin hangi durumlarda 1 ve 0 olaca
gsterilmitir.

ekil 1.10: Status kayd (O3h, 83h adresi)
R= Okunabilir bit
W= Yazlabilir bit
N= POR resetindeki deer.
n=Bilinmez 1 ya da 0 olabilir.

rnein, 2.bit olan Z biti R/W-n ifadesiyle hem okunabilir hem de yazlabilir bir bit
olduunu, ayrca g reseti durumunda lojik seviyesi iin bir ey sylenemeyecei anlamn
tar. Ama 3.bitin g reseti durumundaki lojik deeri 1dir.


45
Bit 7: IRP: Bank kmesi seim biti (dolayl adresleme iin kullanlr).
0: Bank 0,1 (h00-hff)
1:Bank 2,3 (h100-h1ff)
IRP biti PIC16F87X serisinde kullanlmaktadr. 16CXX, 16F8X serisi
mikrodenetleyicilerde kullanlmaz.

Bit 6-5: RP1:RPO: Bank seim bitleri (Dorudan adresleme iin kullanlr.)
00:Bank 0
01:Bank 1
10:Bank 2
11:Bank 3

PIC16F84te sadece bank 0 ve bank1 bulunduu iin bank seimini sadece RP0 biti
kullanlarak yaplr. Her bir bank 128 bayttr.

Bit 4:TO: Zaman aral biti (Time-out)
1= PICe enerji verildiinde, CLRWDT komutuyla veya SLEEPden g
verme durumuna geirildiinde 1 olur.
0= WDT sre am ilemi gereklemi ise 0 olur.

Bit 3:PD: G kesme biti (Power down).
1= PICe enerji verildiinde veya CLRWDT komutu ile olur.
0= SLEEP komutunun yrtlmesi ile olur.

Bit 2 :Z: Sfr Bit (zero)
1= Aritmetik veya mantksal ilemin sonucu sfrdr.
0= Aritmetik veya mantksal ilemin sonucu sfr deildir.

Bit 1:DC: Dijit elde (Digit Carry/Borrow) biti. (ADDWF ve ADDLW komutlar iin)
1= Alt 4 bitin (1.dijit) 4. bitinde tama meydana geldiinde olur.
0= Alt 4 bitin (1.dijit) 4. bitinde tama meydana gelmediinde olur.

Bit 0 :C: Elde (Digit Carry/Borrow) biti. (ADDWF ve ADDLW komutlar iin)
1= Meydana gelen sonucun en nemli bitinden (7.bit) tama olursa 1 olur.
0= Meydana gelen sonucun en nemli bitinden (7.bit) tama olmazsa 0 olur.

RRF, RLF komutlarn yrtlmesi srasnda , bu bit, kaynak kaydndaki dk veya
yksek deerlikli ( MSB veya LSB) biti ile yklenmektedir.


46
1.6.10. Zaman Geciktirme Dngleri

Bu konumuzda dng gecikmelerinde geen zamann hesaplanmasn ve dier
komutlar reneceiz. Bunun iin ncelikle dhil komut saykl kavramn bilmemiz
gerekir.

PIC16F84e uygulanan 4 Mhzlik osilatr sinyalinin 1 komutu icras iin 4 pals
gerekir. Dolaysyla PICin 1 komutu icra etmek iin kulland frekans, dardan uygulanan
sinyalin ne der ve 1 Mhz olur. te Fosc/4 deerindeki bu deere dhil komut saykl
denir. 1Mhzlik sinyalin dhil komut peryotu da 1S olacaktr. Baz komutlarn icras ise 2
komut saykllk zaman alr. Bu komutlar Tablo 1.1de verilmitir.

Komut Komut saykl
GOTO 2
RETURN 2
CALL 2
PCye veri yazan komutlar 2
DECFSZ 1 (Kayt iindeki deer 0 deilse)
2 (Kayt iindeki deer 0 ise)
RETLW 2
RETFIE 2
INCFSZ 1 (Kayt iindeki deer 0 deilse)
2 (Kayt iindeki deer 0 ise)
BTFSC 1 (Kayt iindeki deer 0 deilse)
2 (Kayt iindeki deer 0 ise)
BTFSS 1 (Kayt iindeki deer 1 deilse)
2 (Kayt iindeki deer 1 ise)
Tablo 1.1: 2 komut saykl eken komutlar
Tek dng ile gecikme alt programnn ak diyagramn izip program yazlsn ve
maksimum ne kadarlk bir zaman gecikmesi yapt hesaplansn.











hayr
evet


ekil 1.11: Tek dnglk zaman gecikmesi algoritmas
SAYAC=hFF=d255
SAYAC=0
m?
SAYAC=SAYAC-1
RETURN
Bu yol GOTO
komutu ile
icra edilir ve
254 defa
tekrarlanr.
Sonuta 2x254
tane komut
saykl eker.

47
GECIKME MOVLW hFF ;1 saykl
MOVWF SAYAC ;1 saykl
SAY DECFSZ SAYAC,F ;1x254+2 saykl
GOTO SAY ;2x254 saykl
RETURN ;2 saykl
TOPLAM: 766 komut saykl.

Yukardaki hesaplamada dikkat edilmesi gereken nokta DECFSZ komutunun
icrasdr. SAYAC deeri 0 olana kadar bu komut bir komut saykl ekecektir.
SAYAC deeri 0 olunca ise 2 komut saykl eker. SAYAC sfr olana kadar 254 defa
komut icra edileceinden toplamda bu komut (1x254+2=256) komut saykl ekecektir.

Ayn ekilde GOTO komutu icras 2 saykl alr (Tablo 1.1). Bu komut proram
sonuna kadar 254 defa icra edileceinden toplam 2x254=508 komut saykl eker.

GECIKME alt program sonunda ise toplan 766 komut saykl sresi kadar bir
gecikme olur . imdi de bu kadar saykln 4 Mhz kristal osilatr kullanan bir PICC16F84te
ne kadar srelik bir gecikme yapld bulunsun.

Osilatr frekans 4Mhz ise dhil komut frekans F=Fosc/4 olduundan 1 Mhz
olacaktr. O hlde bir komut saykl sresi,

t=1/f=1/1Mhz= 1S olacaktr.

GECIKME alt programnn sresi ise 1S x766 = 766S = 0.766mS olacaktr. Bu
sre tek dng ile yaplabilecek maksimum zaman gecikmesidir.

Uygulamalarda tek dng ile yeteri kadar gecikme yaplamad iin, en az iki dng
yapmak gerekmektedir.
Aada iki dng ile yaplm gecikme altprogramnn ak diyagram grlmektedir.

48
















hayr

evet
evet



hayr


evet


ekil 1.12:ift dnglk zaman gecikmesi algoritmas
GECKME alt programnn assembly program yazlp geen zaman bulsun.

ekil 1.13: ift dnglk zaman gecikmesi assembly program
Burada SAYAC1 deerine M, SAYAC2 deerine N denilirse toplam saykl saysn
yaklak TSS=3MN+5M+4 kadar bulunur. Buradaki 4 deeri rahatlkla ihmal edilebilir.
GECIKME
SAYAC2=SAYAC2-1
SAYAC2=0
m?
RETURN
SAYAC2= hFF
SAYAC1=hFF=d255
SAYAC1=0
m?
SAYAC1=SAYAC1-1
M
N

49
Hatta ok hassas bir zamandan bahsedilmiyorsa 5M deeri de ihmal edilebilir. Eer M=N
alnrsa TSS=3M
2
olarak sadeletirilebilir. Maksimum zaman gecikmesi yapmak iin
sayalara d225 yklenmitir. Yani M=N=255tir. Bu durumda toplam komut saykl says
yaklak olarak.

TSS=3x255x255+5x255+4=196.354 kar.
Eer sadelemi forml kullanlrsa
TSS=3M
2
=3x255
2
=195.075 kar.

Bu da 4 Mhz frekans iin 196,35 mS = 0.196 saniye yaklak 0,2 saniye eder. Bu
deer 2 dng ile yapabileceimiz maksimum gecikme sresidir. imdi de istenen bir
gecikme deeri iin sayalara yklenilecek deerin nasl bulunaca grlsn. rnein, 2
dngl bir gecikme ile 40 mSlik bir zaman gecikmesi yapmak iin kaytlara hangi
deerler yklenilecei bulunsun. Kolaylk bakmndan saya deerleri ayn say ile
yklensin(PIC 16F84in osc frekans 4Mhz kabul edilecek.). zm: 40 mS=40000S
yapar. Bu da dhil komut saykl sresi 1S olan bir PIC iin TSS=40000yapar. TSS=3M
2
,
40000=3M
2
ve M=(4000/3=116 desimal deeri bulunur.

Eer PICinin osc frekans 10Mhz olsayd ne deiirdi?

ok ey. Bu durumda dhil komut saykl f=Fosc/4=2,5 Mhz ve t= 1 / f =0.4 S
olurdu. 40mS=40000S olduundan bu srenin gemesi iin gereken saykl says
TSS=40000/0.4=100000 saykl gerekir.TSS=3M
2
, 100000=3M
2
ve M=(100000/3=183
desimal deeri bulunur.

Bu bilgiler nda Min bulunmas iin genel bir forml yazlrsa

bulunur. Burada; GS=Gecikme sresi(S), sresi

Fosc=PICin osilatr frekans (Mhz)
M=Saya deerini (desimal) ifade eder.

Yukardaki rnekleri bir bu formlle zerek sonularn ayn olduu grlr. imdi de
3 dngl bir gecikme alt program yazlsn. Fosc=4 Mhz iin toplam 50.070.529
mikrosaniye ve yaklak 50 saniye eder.

50

ekil 1.14: ift dnglk zaman gecikmesi assembly program
Demek ki 3'l dng ile yeteri kadar zaman elde edilebilir.

Eer 4'l bir dng dzenlenirse o zaman saatlerce srecek bir zaman gecikmesi elde
etmek mmkn olur. imdi de bir tablo izilerek drtl bir dng hlinde ne olabilecei
grlsn.

ekil 1.15: ift dnglk zaman gecikmesi assembly program
Sonu olarak 12.767 bir gecikme elde edilir. Bu da 212 dakika ve yaklak 3.5 saatlik
bir gecikme olur. Bu yaklak 255 X50 saniye demektir, burada ilk 255 yerine decimal 100
girilirse 100X50 saniye yani 5000 saniye elde edilir, bu da 83 dakika eder. 1 girilirse 50 sn.
10 girilirse 8.3 dakika elde edilir. lk 255 says yerine 1den 255'e kadar deien rakamlar
girildiinde 4l bir dng iin 50 sn.den 3.5 saate kadar uzanan bir zaman gecikmesi elde
edilir. Tek ve iki dnddeki gibi istenirse 3l ve 4l dnglerde formlize edilebilir. 5li
bir dng hlinde ise bu zaman bir ay (900 saat) civarndadr.

51
1.6.11. Altprogramlar

Program ierisinde defalarca tekrar edilmesi gereken komut dizilerini srekli yazmak
yerine, bu komut dizilerini altprogramlar eklinde yazarak hem bellek alanndan tasarruf
edilmi olur hem de program sadelik kazanr. Altprogramlar ana programdan CALL komutu
ile arlr ve altprogramn almas bittikten sonra ana programa RETURN komutu ile
dn salanr.

Altprogramlar iki eittir:

CALL komutu ile arlan altprogramlar
Kesme altprogramlar (Kesme alt programlar Kesme alt programlarnn
dzenlenmesi konusunda ilendiinden burada ilenmemitir.)

Bir alt programn almasn ematik olarak ekil 1.16' daki gibi gsterilebilir.




PC=>TOS (Yn) ve
SAYAC adresi=>PC gerekleir.













TOS (Yn) =>PC yaplarak
Ana programa dnlr.


ekil 1.16: Alt program kurgusu
SAYAC


Alt program


RETURN
Ana program


CALL SAYAC







52
Yukardaki ekilde unlar dikkati ekmi olmaldr:

CALL komutundan sonra alt programn isimi yazlarak altprogram arlr.
Burada alt programn ismi SAYACtr.
Alt program arldnda program sayc (PC) kaytsnn ierii (yani geri
dn adresi) yna (TOS) itilir ve SAYAC altprogram adresi PCye yazlr.
Bu olay mikrodenetleyici tarafndan otomatik olarak gerekleir. Bylece
altprograma dallanma gereklemi olur.
Altprogramn altrlmas bittikten sonra RETURN komutu ile ana programa
dn salanr. nk RETURN komutu, daha nce yna itilmi geri dn
adresini PCye tekrar ykler.
Ayrca altprogram iinde baka altprogramlar da arlabilir.

Sradaki Bit pozisyonlarn sola kaydrma konumuzda led.asm programnda bir
gecikme altprogram kullanlmtr.

1.6.12. Bit Kaydrma

1.6.12.1. Bit Pozisyonlarn Sola Kaydrma

Bit pozisyonlarn sola kaydrmak iin RLF komutunu kullanlr. Bu komut belirlenen
bir kayt ierisindeki bitleri her defasnda 1 bit sola kaydrr. Detayl bilgi iin
mikrodenetleyici komutlar konusunda RLF komutu incelenebilir.

rnek: PORTBye bal 8 led srayla periyodik olarak yansn. yle ki PORTB<0>dan
PORTB<7>ya doru tek bit srayla yansn ve 7. bitten sonra ilem baa dnsn.

;====led.asm======
LIST P=16F84
INCLUDE P16F84.INC
SAYAC1 EQU h0C tanmlamalarn yapld
SAYAC2 EQU h0D blm
CLRF PORTB
BSF STATUS,5 B portu k olarak
CLRF TRISB ayarland.
BCF STATUS,5
BASLA
BCF STATUS,0 ;Elde biti sfrland. Ana
MOVLW h01 ;ilk deeri ykle ve Program
MOVWF PORTB ;B portundan kar.
TEKRAR
CALL GECIKME ;2.deer iin bekle.
RLF PORTB,F ;sola kaydr
BTFSS STATUS,0 ;C=1 mi?
GOTO TEKRAR ;hayr.TEKRARa dallan.
GOTO BASLA ;evet.BASLAya dallan.

53

GECIKME
MOVLW hFF
MOVWF SAYAC1
DON1
MOVLW hFF
MOVWF SAYAC2 GECKME altprogram.
DON2
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN
END

1.6.12.2. Bit Pozisyonlarn Saa Kaydrma

Bit pozisyonlarn saa kaydrmak iin RRF komutunu kullanlr. Bu komut belirlenen
bir kayt ierisindeki bitleri her defasnda 1 bit saa kaydrr. Detayl bilgi iin
mikrodenetleyici komutlar konusunda RRF komutu incelenebilir.

rnek: PORTBye bal 8 led kara imek dzeninde yansn. Yani PORTB<0>dan
PORTB<7>ya doru tek bit sola doru srayla yansn ve 7. bitten sonra ilem saa doru
dnsn ve bu ilemler periyodik olarak tekrarlansn.

;====karaimek.asm======
LIST P=16F84
INCLUDE P16F84.INC
SAYAC1 EQU h0C tanmlamalarn yapld
SAYAC2 EQU h0D blm
CLRF PORTB
BSF STATUS,5 B portu k olarak
CLRF TRISB ayarland.
BCF STATUS,5
BCF STATUS,0 ;Elde biti sfrland.
MOVLW h01 ;ilk deeri ykle ve
MOVWF PORTB ;B portundan kar.

SOL
CALL GECIKME ;Yeni deer iin bekle.
RLF PORTB,F ;sola kaydr
BTFSS PORTB,7 ;PORB<7>=1 mi?
GOTO SOL ;hayr.SOLa dallan.

SAG
CALL GECIKME ;evet. Yeni deer iin bekle.
RRF PORTB,F ; saa kaydr.

54
BTFSS PORTB,0 ; PORB<0>=1 mi?
GOTO SAG ;hayr.SAGa dallan.
GOTO SOL ;evet.SOLa dallan,

GECIKME
MOVLW hFF
MOVWF SAYAC1
DON1
MOVLW hFF
MOVWF SAYAC2 GECKME alt program
DON2
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN
END

1.6.12.3. Bit Pozisyonlarn Tersleme

COMF komutu bir kayt ierisindeki bitleri tersine evirir (complement). Detayl
bilgi iin mikrodenetleyici komutlar konusunda COMF komutunu incelenebilir. Bu komut,
2li tmleme yntemiyle karma ilemi yaparken baz mantksal devre zmlerine, k
ovlar tasarlarken ie yarayabilir.

rnek: PORTBye bal 8 ledleri dnml olarak ilk nce ilk 4 bitindeki, sonrada son 4
bitindeki ledleri yakan program yazlsn.

;====TERSLE.asm======
LIST P=16F84
INCLUDE P16F84.INC
SAYAC1 EQU h0C tanmlamalarn yapld
SAYAC2 EQU h0D blm
CLRF PORTB
BSF STATUS,5 B portu k olarak
CLRF TRISB ayarland.
BCF STATUS,5
MOVLW h0F ;ilk deeri ykle ve
MOVWF PORTB ;B portundan kar.
TERSLE
CALL GECIKME ;Yeni deer iin bekle.
COMF PORTB,F ;PORTByi tersle.
GOTO TERSLE ; saa kaydr.




55
GECIKME
MOVLW hFF
MOVWF SAYAC1
DON1
MOVLW hFF
MOVWF SAYAC2 GECIKME alt program
DON2
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN
END

1.6.13. Mantksal lemler

Mantksal ilem komutlar bir kaytdaki istenilen bitleri deitirmek (maskelemek
veya kurmak), test etmek amacyla kullanlr. Bu komutlar ANDLW, ANDWF, IORLW,
IORWF, XORLW, XORWF ve COMF komutlardr. Detayl bilgi iin mikrodenetleyici
komutlar konusunda bu komutlar incelenebilir.

1.6.13.1. stenen Bitleri Sfrlamak

ANDLW komutu W kayt ierisinde bulunan istenilen bitleri sfrlamak
(maskelemek) iin kullanlr. Burada sonu daima W kaytsndadr.

rnein, W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden sfrlamak
(meskelemek) isteniyor. Bunun iin kullanlacak komut satr,

ANDLW hE7 ; olmaldr.

Burada sabit hE7 olarak kuruldu. nk;
W =b(xxxx xxxx)
AND hE7=b1110 0111
W=bxxx0 0xxx olur.

Sonuta W kaytsndaki 3. ve 4. bitleri dier bitler deitirilmeden sfrlanm
(meskelemek) oldu. Burada dikkat edilmesi gereken maskelenecek bitler 0, dier bitler 1
ile ANDlenecek ekilde say seilmelidir (hE7).

ANDWF komutu da maskelemek iin kullanlabilir. Ancak bu komutta maskeleme
iin kullanlan deer sabit bir saydan deil, bir dosya kaytsndan (f) alnr ve sonu deer
hedef (d) bitine gre W yada F kaytsndadr.

evrim tablolarnn kullanm yerleri ve kullanm konusunda verilen hex.asm
programnda da bu komutun kullanm grlebilir.


56
1.6.13.2. stenen Bitleri Bire evirmek

IORLW komutu W kayt ierisinde bulunan istenilen bitleri 1 yapmak (kurmak)
iin kullanlr. Burada sonu daima W kaytsndadr.

rnein, W kaytsndaki 3. ve 4. bitlerini dier bitleri deitirmeden 1 yapmak
istiyoruz Bunun iin kullanacamz komut satr,

IORLW h18 ; olmaldr.

Burada sabit h18 olarak kuruldu. nk;
W =b(xxxx xxxx)
OR h18=b0001 1000
W=bxxx1 1xxx olur.

Sonuta W kaytsndaki 3. ve 4. bitleri dier bitler deitirilmeden sfrlanm
(meskelemek) oldu. Burada dikkat edilmesi gereken kurulacak bitler 1, dier bitler 0 ile
ORlanacak ekilde say seilmelidir (h18).

IORWF komutu da maskelemek iin kullanlabilir. Ancak bu komutta maskeleme iin
kullanlan deer sabit bir saydan deil, bir dosya kaytsndan (f) alnr ve sonu deer
hedef (d) bitine gre W ya da F kaytsndadr.

1.6.13.3. stenen Bitleri Terslemek

XORLW komutu W kayt ierisinde bulunan istenilen bitleri terslemek iin
kullanlr. Burada sonu daima W kaytsndadr.

rnein, W kaytsndaki deer h4Colsun. Wnin 3. ve 4. bitlerini dier bitleri
deitirilmeden terslenmek isteniyor . Bunun iin kullanlacak komut satr,

XORLW h18; olmaldr.

Burada sabit h18 olarak kuruldu. nk;
W = b0100 1100
XOR h18=b0001 1000
W= b0101 0100 olur.

Sonuta W kaytsndaki 3. ve 4. bitleri dier bitler deitirilmeden sfrlam
(meskelemek) oldu. Burada dikkat edilmesi gereken terslenecek bitler 1, dier bitler 0 ile
XORlanacak ekilde say seilmelidir (h18).

XORWF komutu da maskelemek iin kullanlabilir. Ancak bu komutta maskeleme
iin kullanlan deer sabit bir saydan deil, bir dosya kaytsndan (f) alnr ve sonu deer
hedef (d) bitine gre W ya da F kaytsndadr.



57
1.6.13.4. Bir Baytlk ki Veriyi Karlatrmak

W kaytsnn bir baytlk sabit bir veriyle ayn olup olmadn test etmek iin
XORLW komutu kullanlabilir.Benzer ekilde W kaytsnn, bir dosya kayts ierii ile
ayn olup olmadn test etmek iin de XORWF komutu kullanlabilir. Eer veriler eit ise
STATUS kaytsndaki sfr bayra (Z) 1 olur. te bu biti test ederek verilerin ayn olup
olmadn kontrol edilebilir.

rnein. B portundaki deerin h4C olup olmadn test etmek iin gereken
program paras yazlsn. Bunun iin kullanlacak komut satr,

MOVLW h4C ;W= h4C
TEST_PORTB
XORWF PORTB,F ;PORTB=(PORTB XOR W)
BTFSS STATUS,2 ; STATUS<2>=1 mi? (Z=1 mi?)
GOTO TEST_PORTB; hayr.Tekrar test et.
DEVAM ;evet. Sonraki komutlar
MOV .
.
.

XORLW ve XORWF komutlaryla sadece verilerin eit olup olmad testi yaplabilir.

Bu ilem iin istenirse SUBLW ve SUBWF komutlar da kullanlabilir. Ayrca bu iki
komutla byk / kk m? testleri de yaplabilir.

1.6.13.5. Bir Baytlk Veriyi Sfr ile Karlatrmak

W kaytsnn ieriindeki 1 baytlk verinin 0 olup olmadn anlamak iin h00
sabit verisiyle ORlanr. Bu ilem iin IORLW komutu kullanlr.

Bir kaytnn (f) ieriindeki 1 baytlk verinin 0 olup olmadn anlamak iin nce
W kaytsna h00 sabit verisi yklenir. Sonrada W ile F kaytlar ORlanr. Bu ilem iin
ise IORWF komutu kullanlr.

ORlama sonucunda sonu 0 ise STATUSun 2.biti (Z) 1 , deilse 0 olacaktr. Bu biti
kontrol ederek program ynlendirilebilir.

rnein, W kaytsnn 0 olup olmad aadaki gibi test edilebilir:

TEST_W IORLW h00 ;W=(W OR h00)
BTFSS STATUS,Z ;Sonu sfr m? (Z=1 mi?)
GOTO TEST_W ;hayr.Tekrar kontrol et.
DEVAM . ;evet.Programn devam..




58
1.6.14. Aritmetik lemler

PICler baz aritmetik ilemlerin yaplmasna da izin verir. Bu modlde 8 ve 16 bitlik
saylarn toplanmas ve karlmas grlecektir. Bunun iin ADDLW, ADDWF, SUBLW,
SUBWF komutlarn kullanlacandan, mikrodenetleyici komutlar konusunda ilgili
komutlarn incelenmesi yerinde olacaktr.

1.6.14.1. 8 Bit Toplama

8 bitlik ( 1 Bayt ) lik iki veri iki ek ilde toplanabilir:

W kayts ile sabit bir say toplanr, sonu W kaytsndadr (ADDLW).
W kayts ile dosya kayts (f) toplanr, sonu hedef kaytsndadr
(ADDWF).

ki saynn toplamndan elde edilen sonu hFFden bykse tama olaca iin
STATUS kaytsndaki elde bayra (C) 1 olacaktr.

rnek: nce W kaytsna h25 deerini ykleyip daha sonrada W ile hA3 sabiti
toplayan program paras yazlsn. Elde bayrann durumunu bulunuz.

MOVLW h25 ;W= h25
ADDLW hA3 ;W= h25+ hA3= hC8 olur. Tama olmandan
C=0da kalr.

rnek: nce W kaytsna h7A deerini, TOPLAM kaytsna da hDD ykleyip daha
sonrada W ile TOPLAM kaytlarn toplayan ve sonucu TOPLAM kaytsna kaydeden
program paras yazlsn. Elde bayrann durumunu bulunuz.

MOVLW hDD ;W= hDD
MOVWF TOPLAM ;TOPLAM= hDD
MOVLW h7A ;W= h7A
ADDWF TOPLAM,1 ;TOPLAM= hDD+ h7A= h57

Tama olduundan C=1 olur. Sonucun C bitinin dikkate alnmamas durumunda
yanl olacana dikkat edilmelidir.

1.6.14.2. 16 Bit Toplama

Kaytlar 1 baytlk olduklar iin 16 bitlik (2 bayt) verilerin toplanmas iin 2 kayt
kullanmak gerekecektir. 2 baytlk veri 0-65535 onlu saylar ifade edebilecektir. Bu ilemi
yapmak iin,

Toplanacak iki saynn nce alt (LSB) baytlar yoplanr.
Eer alt baytlarn toplamndan elde oluursa st baytlardan birine 1 eklenir.
st baytlar toplanr.

59

rnek: A= h33A5 ve B= h8EDE saylarn toplayan sonucu C adnda bir kaytya atan
program paras yazlsn.
zm: A= 33 A5 B= 8E DE

AH AL BH BL eklinde saylar yklemek iin 4 kayt
gerekiyor. Ayrca sonucun bulunaca kayt da CH ve CL olarak 2 tane olmaldr.

MOVLW hA5 ;W= hA5
MOVWF AL ;AL= hA5
MOVLW h33 ; W= h33
MOVWF AH ; AH= h33 saylar kaytlara ykleniyor.
MOVLW hDE ; W= hDE
MOVWF BL ; BL= hDE
MOVLW h8E ; W= h8E
MOVWF BH ; BH= h8E
TOPLA MOVF AL,0 ;W=AL
ADDWF BL,0 ;W=BL+W(AL)
MOVWF CL ;Sonucun dk bayt
BTFSC STATUS,0 ;C=0 mi?
INCF BH,1 ;Hayr(C=1) BH 1 arttr.
MOVF AH,0 ;Evet. W=AH
ADDWF BH,0 ;W=BH+W(AH)
MOVWF CH ;Sonucun yksek bayt.

1.6.14.3. 8 Bit karma

8 bitlik ( 1 Bayt ) lik iki veri iki ekilde karlabilir:

Sabit bir saydan W kayts karlr, sonu W kaytsndadr (SUBLW).
Dosya kayts (f) ieriinden W kayts karlr, sonu hedef kaytsndadr
(SUBWF).
karma ilemi yaplrken karlacak saynn tersi alnp 1 eklenir (2li
tmleyeni alnr). Daha sonra her iki say da toplanr. PIC bu olay otomatik
olarak kendi yapar. Bu nedenle kk saydan byk say karlrsa C=0
(sonu negatif), byk saydan kk say karlrsa veya saylar eit ise C=1
(sonu pozitif) olur. Yalnz kk saydan byk say karlrsa gerek sonucu
bulmak iin, sonucun 2li tmleyeni alnmaldr. Bu programcnn
sorumluluundadr.

rnek: nce W kaytsna h25 deerini ykleyip daha sonrada hA3sabitinden Wyi
karan program paras yazlsn. Elde bayrann durumunu bulunuz.

MOVLW h25 ;W= h25
SUBLW hA3 ;W= hA3-h25 = h7E olur.


60
hA3= b1010 0011 1010 0011
SUB h25= b0010 0101>2li tmleyeni> 1101 1011
1 0111 1110
W = h7E ve C=1 Sonu pozitif olur.

rnek: nce W kaytsna h40 deerini, FARK kaytsna da h25 ykleyip daha
sonrada FARK kaytsndan Wyi karan ve sonucu FARK kaytsna yazan program
paras yazlsn. Elde bayrann durumunu bulunuz.

MOVLW h40 ;W= h40
MOVWF FARK ;FARK= h40
MOVLW h35 ;W= h35
SUBWF FARK,1 ;FARK= h40- h35= hF5 ;Yukardaki rnekteki
;gibi PIC 2li tmleyen ile
;hF0sonucunu buldu.
;(C=0 sonu negatif).

1.6.14.4. 16 Bit karma

Kaytlar 1 baytlk olduklar iin 16 bitlik (2 bayt) verilerin karlmas iin 2 kayt
kullanmak gerekecektir. 2 baytlk veri 0-65535 onlu saylar ifade edebilecektir. Bu ilemi
yapmak iin,

karlacak iki saynn nce alt (LSB) baytlar birbirinden karlr.
Eer alt baytlarn karlmasndan bor varsa (C=0) , st baytlardan birisinden 1
karlr.
st baytlar birbirinden karlr.

rnek: A= h33A5 ve B= h8EDE saylarn karan (B-A) sonucu C adnda bir kaytya
atan program paras yazlsn.

zm: A= 33 A5 B= 8E DE

AH AL BH BL eklinde saylar yklemek iin 4 kayt gerekiyor.
Ayrca Sonucun bulunaca kayt da CH ve CL olarak 2 tane olmaldr.

MOVLW hA5 ;W= hA5
MOVWF AL ;AL= hA5
MOVLW h33 ; W= h33
MOVWF AH ; AH= h33 saylar kaytlara ykleniyor.
MOVLW hDE ; W= hDE
MOVWF BL ; BL= hDE
MOVLW h8E ; W= h8E
MOVWF BH ; BH= h8E
CIKAR MOVF AL,0 ;W=AL
SUBWF BL,0 ;W=BL-W(AL)

61
MOVWF CL ;Sonucun dk bayt
BTFSS STATUS,0 ;C=1 mi?
DECF BH,1 ;Hayr (C=0) BH 1 Azalt.
MOVF AH,0 ;Evet. W=AH
SUBWF BH,0 ;W=BH-W(AH)
MOVWF CH ;Sonucun yksek bayt

1.6.15. evrim Tablolar

1.6.15.1. evrim Tablolar

evrim tablolar sral deer alma ilemleri gereken yerlerde kullanlr. Bu ekilde bir
kod baka bir koda evrilebilir. rnein, B portuna balanan 7 segment display zarinde
hexadesimal karakterler grmek isteniyor. evrim tablosunda hexadesimal koda karlk
gelen uygun kodu B portuna gndermek gerekir. Ya da bir adm motorunu belirli bir ekilde
dndrmek iin porta balanm step motoruna sral ikili deerleri gndermek gerekir. Bu
tip durumlarda evrim tablolarndan faydalanlr.

1.6.15.2. evrim Tablolarnn Kullanm Yerleri ve Kullanm

evrim tablolarnn kullanm iin PCn (program counter) yapsnn iyice
anlalmasnda fayda olacaktr. Program sayac (PC), 13 bit geniliindedir. Dk byte PCL
registeri, okunabilir ve yazlabilir bir kayt olup bellein h'02 adresinde yer alr. PCnin
yksek byte , PCLATH registerinden gelir ve direkt olarak okunamaz ya da yazlamaz.
PCLATH (PC latch high) registeri PC<12:8> iin bir tutma registeridir ve PICe gerilim
uygulandnda (power on reset) tm bitleri 0dr. PC yeni bir deerle yklendii zaman
PCLATHn ierii program sayacnn stteki bytena transfer edilir. Bu olay PCLye
yazlmda CALL veya GOTO esnasnda olur. PCnin yksek bitleri PCLATHdan
yklenmitir. Bu olaylar ekil 1.17 ve ekil 1.18de gsterilmitir.


ekil 1.17: Hedefi PCL kayts olan komutlarn PCyi yklemesi

62

ekil 1.18: GOTO ve CALL komutlarnn PCyi yklemesi
GOTO ve CALL komutlaryla kullanlan 11 bitlik adreslemeler 2 KBlk program
bellei bulunan PIClerde (16FCxxx ve16Fxx) herhangi bir adrese eriim iin yeterlidir
(2
11
=2KB). 1KB bellei olanlarda (16F84) ise 10 bit yeterlidir (2
10
=1KB).

evrim tablolarnn kullanm iin ayrca RETLW komutunun da iyice anlalmas
gerekir. Bu komut RETURN komutu gibi anaprograma dn salar. Tek fark dn
esnasnda W kaytsna bir sabit say ykler.

rnek: B portunun ularna bal 7 sagment display in 0-F arasnda saydran program
yazlsn.

zm: ncelikle hexadesimal koddan 7 sagment display koduna dnm tablosu
karlmaldr.
Hexadesimal say 7 segmentte grlecek 7 segment 7 segment kodu
Say ularndaki veri
00 0 00111111 3F
01 1 00000110 06
02 2 01011011 5B
03 3 01001111 4F
04 4 01100110 66
05 5 01101101 6D
06 6 01111101 7D
07 7 00000111 07
08 8 01111111 7F
09 9 01101111 6F
0A A 01110111 77
0B B 01111100 7C
0C C 00111001 39
0D D 01011110 5E
0E E 01111001 79
0F F 01110001 71
Nokta . 10000000 80


63
imdi de program yazlsn. Programn tablodan deer alma ve gecikme
altprogramna dallan blmnde u olaylar gerekleir:

AND komut satrndaki ifade ile Wnin st 4 biti maskelendi. Dolaysyla
SAYAC deeri hF=15 deerini geemez [0-15] aras sayar ve her sayda tablodan bir
deer alp B portuna bal 7 segment displayde gstererek GECKME alt programna
dallanr.
;====hex.asm======
LIST P=16F84
INCLUDE P16F84.INC
SAYAC1 EQU h0C tanmlamalarn yapld
SAYAC2 EQU h0D blm
SAYAC EQU h0E
CLRF PORTB
BSF STATUS,5 B portu k olarak
CLRF TRISB ayarland.
BCF STATUS,5
MOVLW h00 SAYAC sfrland.
MOVWF SAYAC

TEKRAR
MOVF SAYAC,W tablodan deer al ve
ANDLW b00001111 gecikme altprogramna
CALL HEX_7SEGMENT dallan.
MOVWF PORTB
INCF SAYAC,F
CALL GECIKME
GOTO TEKRAR

HEX_7SEGMENT
ADDWF PCL,F ;PCL= W(SAYAC)
RETLW h3F ;0
RETLW h06 ;1
RETLW h5B ;2
RETLW h4F ;3
RETLW h66 ;4
RETLW h6D ;5
RETLW h7D ;6
RETLW h07 ;7 hexadesimalden 7 segment
RETLW h7F ;8 displaye dnm tablosu
RETLW h6F ;9
RETLW h77 ;A
RETLW h7C ;B
RETLW h39 ;C
RETLW h5E ;D
RETLW h79 ;E
RETLW h71 ;F

64
GECIKME
MOVLW hFF
MOVWF SAYAC1
DON1
MOVLW hFF
MOVWF SAYAC2 GECKME altprogram
DON2
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN
END

1.6.16. Kesmeler

Mikrodenetleyicilerle yeni almaya balayanlar kesme (interrupt) kelimesini
duymalarna ramen kullanmlarnn zor olduu dncesiyle programlar iersinde
kullanmaktan ekinir. Oysa renilmesi ve uygulamas pek de zor olmayan kesme
altprogramlar kullanarak program ierisinde kullanlacak komut says azaltlabilir ve bir
ok mantksal karklklar nlenebilir.

1.6.16.1. Kesme

Kesme ilemini gnlk hayattan bir rnek vererek aklayalm. Mesela yemek
yiyorsunuz ve telefon ald. Ne yaparsnz? Yemek yemeyi bir sre iin brakr, telefona
bakar sonra dnp yemek yemeye devam edersiniz. te gnlk hayatta karlatnz bir
kesme. Asl iiniz yemek yeme olay iken ihtiyatan (telefon almas) dolay asl iinizi
brakp dier bir ii yaptnz (telefona bakma) ve geri dnp asl iinizde kaldnz yerden
devam ettiniz.

Mikrodenetleyicilerdeki kesme olay yukardaki rnee olduka benzerdir. Kesme,
mikrodenetleyicilerin herhangi bir kesme kaynandan gelen sinyal nedeniyle almakta
olan program brakmas ve nceden hazrlanan kesme altprogramn altrmas olaydr.
Alt programn almas bittikten sonra ana program kald yerden itibaren tekrar
almasna devam eder.

65



PC=>TOS(Yn) ve
Kesme vektr (h004)=>PC gerekleir.













TOS(Yn) =>PC yaplarak
ana programa dnlr.


ekil 1.19: Kesme alt program kurgusu

1.6.16.2. INTCON Kayts (Kaydedicisi)

INTCON register, btn kesme kaynaklar iin olan eitli yetkilendirici bitleri
ieren, okunabilir ve de yazlabilir trde bir registerdr.

Aada PIC16F8X mikrodenetleyicisi iin INTCON kaytsnn her bir bitinin hangi
durumlarda 1 ve 0 olaca gsterilmitir:

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-
x
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
bit7
bit0
R = Okunabilir bit.
W = Yazlabilir bit.
-n = G reseti (POR reset) durumundaki bit deeri.
bit 7: GIE:Global kesme biti yetkisi.
1=Tm kesmelere yetki verir.
0=Tm kesmeleri yetkisizletir.
bit 6: EEIE:EEPROM bellee yazma ilemi tamamlama kesim yetki biti.
1= EEPROM yazma tamamlama kesmesine yetki verir.
0= EEPROM yazma tamamlama kesmesine yetkiyi kaldrr.
Kesme_altprogram


Altprogram


RETFIE
Ana program









66

bit 5: TOIE:TMR0 sayc tama (Overflow) kesmesi yetki biti.
1=TMR0 kesmesini yetkilendirir.
0=TMR0 kesmesine yetkiyi kaldrr.

bit 4: INTE: RB0/INT hric kesmesi yetki biti.
1=RB0/INT kesmesine yetki verir.
0=RB0/INT kesmesine yetkiyi kaldrr.

bit 3: RBIE: Port B (4,5,6ve 7. bitleri) deiiklik kesmesi yetki biti.
1= Port B deiiklik kesmesine yetki verir. Yani B portundaki
deiiklikler kesme oluturur.
0= Port B deiiklik kesmesine yetkiyi kaldrr.

bit 2: T0IF: TMR0 saycs tamas durum bayra.
1=TMR0 tamtr (Yazlmn iinden silinmesi gerekiyor.).
0=TMR0 tamamtr. Zaman am yok.
bit 1: INTF: RB0/INT hric kesme durum bayra.
1=RB0/INT kesmesi meydana gelmitir.
0=RB0/INT kesmesi meydana gelmemitir.
bit 0: RBIF: Port B deiiklik bayra.
1=RB7:RB4 pinlerinden en az bir tanesinin durumu deiti
(yazlm iinden silinmesi gerekiyor).
0=RB7:RB4 pinlerinden hi bir tanesinde durum deiiklii
yoktur.

1.6.16.3. Kesme Kaynaklar

Kesme kaynaklar mikrokontrolr ailesine bal olarak farkllk gsterir. Aada PIC
16F8X ailesi iin olabilecek kesme kaynaklar sralanmtr.

Hric (External) kesme: PIC16F84n RB0/INT ucundan gelen sinyal ile
oluur.
Hric kesmelerin kullanabilmesi iin iki ey gereklidir: Yazlm ve donanmdr.
Yazlm aracl ile B portunun RB0 ucu, dardan gelebilecek kesmeyi
alabilecek ekilde hazrlanmaldr. Bunun iin iki ilem yaplr:
RB0 ucu giri olarak ynlendirilmelidir.
INTCON kayts ierisindeki ilgili bayrak (INTE bayra)
kullanlarak hric kesme ilemi iin yetkilendirilmelidir.

Hric kesmenin kullanlmas iin bir de donanm gereksinimi vardr. Bu da RB0
ucundan kesme sinyalini verecek elektronik devredir.

Ayrca RB0 ucundan uygulanacak sinyalin kenar tetiklemesi nemlidir. OPTION
kaytsnn 6.biti kesmeyi yapacak sinyalin kenar tetiklemesini belirler. Eer bu bit 0 ise
kesme sinyalin den kenarnda 1 ise ykselen kenarnda gerekleir.

67

Kesme alt programn almas esnasnda gelebilecek yeni kesmeleri engellemek iin
INTCON kaytsndaki INTE biti 0 yaplarak hric kesme yetkisi kaldrlmaldr.
Bununla beraber bir hric kesme olursa INTCON kayts iindeki INTF 1 olur. Bu
bayrak kesme altprogram ierisinde tekrar 0 yaplmaldr. Aksi durumda tekrarlanan
kesmelerle karlalr.

TMR0 saycsnda oluan zaman am kesmesi yani TMR0 saycsnn hff den
h00a gelmesi olaynda oluur. Bu konu ileride TMR0 saycs konusunda
ilenecektir.
B Portunun 4,5,6 veya 7. bitlerindeki lojik seviye deiikliinde olur.
B portunun 4,5,6 ve 7.bitlerindeki lojik deiim INTCON kaytsnn RBIF
bayran 1 yapacaktr. Bu kesme INTCON kaytsnn RBIE biti ile aktif ya da
pasif yaplabilir.
B portundaki deiiklii alglamak iin bu portaki en son deer, RB4-RB7
ularndan okunan veri ile karlatrlr. Eski ve yeni okunan veri ORlanr.
Farkllk varsa RBIF bayra 1 olur.

B Portu kesmesi aadaki gibi silinebilir:

RBIE biti silinmek suretiyle
B Portunu okuduktan sonra RBIF bitini silmek suretiyle.
EEPROM bellee yazma ileminin tamamlanmas: EEPROM veri yazma
zaman yaklak 10 ms kadardr. Yazma ilemi bittiinde EEIF bayra 1 olur
ve yazmann bittiini gsterir. EEIF bayra EECON1 kaytsnda bulunur.

Yukarda anlatlan kesme kaynaklar mant ekil 1.20de verilmitir.


ekil 1.20: PIC16F84n kesme kaynaklar ve bayraklar


68
1.6.16.4. Kesme Altprogramlarnn Dzenlenmesi

Bir kesme olaynn meydana gelmesi esnasnda INTCON kaytsnn GIE biti 0
olur. Bu ilem kesme alt programnn almas esnasnda yeni bir kesmenin olmamas iin
PIC tarafndan otomatik olarak yaplr. Kesme altprogram almasn RETFIE komutu ile
sona erdirip ana programa dnld anda ise sonraki kesmelerin geerli olabilmesi iin
tekrar otomatik olarak 1 yaplr. Kesme ileminde meydana gelen olaylar ekil 1.21den
incelenebilir.

Bir kesme meydana geldiinde kesme vektr (interrupt vector) denilen adres
gsterici PCye program belleinin h0004 adresini gsterir. Kesme altprogramn ilk
komutu ( genellikle GOTO ) buraya yazlmaldr.

Kesme kullanlmad zaman ana program, program belleinin h0000 adresinden
itibaren h0004 adresine doru problem karmadan alr. Eer kesme kullanlyorsa
programc tarafndan baka bir alma sras dzenlenmelidir. Bu dzen aadaki gibi
olabilir.
ORG h000 ;Reset vektr adresi
GOTO BASLA ;Ana program balangc
ORG h004 ;Kesme vektr adresi
GOTO KESME

69

ekil 1.21: Kesme ileminde oluan olaylar
Bir kesme esnasnda sadece geri dnme PC deeri ynda saklanr. ounlukla
kullanclar bir kesme esnasnda anahtar register deerlerini saklamak isterler (rnein W
registeri ve STATUS registeri). Bu, yazlmda yerine getirilir.


70
rnek 1de STATUS ve W registerlerinin deerleri saklanm ve tekrar
depolanmtr. Kullanc tanml registerler W_TEMP ve STATUS_TEMP , W ve STATUS
register deerleri iin geici depolama yerleridir.

rnek 1de aadakiler yaplmaktadr:

W registerini bir deikene (W =W_TEMP) ykle.
STATUS registerini bir deikene (STATUS=STATUS_TEMP) ykle.
Kesme altprogramn altr .
STATUS registerini geri ykle (STATUS_TEMP= STATUS).
W registerini geri ykle (W_TEMP=W).
Kesme altprogramndan geri dn (RETFIE).

1. rnek : Kesme esnasnda W ve STATUS kayt deerlerini saklamak
MOVWF W_TEMP ; W , TEMP registerine kopyalanr.
SWAPF STATUS , W ; STATUS ieriini SWAPla ve Wye ykle.
MOVWF STATUS _TEMP ; STATUS ieriini STATUS_TEMP
;registerine ykle.
;
;
;

SWAPF STATUS_TEMP , W ; STATUS_TEMP ieriini yeniden
;SWAPla ve Wye ykle.
MOVWF STATUS ; Wyi STATUS Registerine ykle.
SWAPF W_TEMP , F ; W_TEMP ieriini SWAPla sonucu
;W_TEMPe tekrar ykle.
SWAPF W_TEMP , W ; W_TEMP ieriini SWAPla sonucu
;Wye tekrar ;ykle.

Yukardaki ilem iin neden MOVF komutunu kullanmadmz aklnza gelmi
olabilir. Kullanlamaz, nk MOVF komutu, STATUS kaytsndaki Z bayran
deitireceinden, programda bu bayran kontrol ile yaplan ilemlerde hatalara neden
olacaktr.

2. rnek: PIC16F84e enerji verildiinde A portundaki tm ledler snk iken B
portunun 0.bitine bal (RB1) bir butuna basldnda A potuna bal ledler yansn.
Daha hric kesme ile (RB0/INT) ledler tekrar sndrlsn. Kesme, kesme
sinyalinin den kenarnda gereklesin.

zm: Problemdeki verilere gre aadaki algoritma izilebilir:
Kesme altprogram
buraya yazlmal.

71

ekil 1.22: 2. rnekteki programn algoritmas
imdi de asm program yazlsn.
;====kesme.asm======
LIST P=16F84
INCLUDE P16F84.INC tanmlamalarn yapld
ORG h000 blm
GOTO BASLA
ORG h004
GOTO KESME


72
BASLA BSF STATUS,5 A portu k, B portu giri olarak
CLRF TRISA ayarland.
MOVLW hFF
MOVWF TRISB
MOVLW b10111111 ;den kenarda kesme pals ,
MOVWF OPTION_REG ;gelecek ekilde OPTION_REGi kur.
BCF STATUS,5 ;Bank0a ge.
CLRF PORTA ;A portunu sfrla.
BCF INTCON,1 ;INF bayran sil.
BSF INTCON,7 ;Global kesmeyi etkinletir.
BSF INTCON,4 ;Hric kesmeyi aktifletir.

TEST_PORTB
BTFSS PORTB,0 ;PORTA<0>=1 mi?
GOTO TEST_PORTA ;hayr.Tekrar test et.
MOVLW hFF ;evet. W=hff ykle.
MOVWF PORTA ;A portundaki tm ledleri yak.
GOTO TEST_PORTB
END
KESME
BCF INTCON,1 ;INTF bayran sil.
MOVLW h00 ;W=h00 ykle.
MOVWF PORTA ;A portundaki tm ledleri sndr.
RETFIE
END

1.6.17. Donanm Sayclar

Zaman geciktirme dngleri konusunda, port klarna gnderilecek sinyaller
arasnda bir gecikme olmasn istenildii zaman bunu yazlm (software) ile nasl yaplaca
grld. Burada ise ayn ilemi donanm zamanlaycs (hardware) kullanlarak nasl
yaplaca grlecektir. Bunun iin donanm zamanlaycs (TMR0) kullanlacak. Bu
zamanlayc / sayclarn says kullanlan mikrokontrolre gre deimekle beraber, genel
olan TMR0n kullanm grlecek.

1.6.17.1. Donanm Saycs ( Zamanlaycs )

Peki donanm zamanlaycs ya da saycs nedir? Belli bir deerden (genelde h00)
balayp deeri yukar doru artan bir dosya kaytsdr. PICler iki tip zamanlaycya
sahiptir, ilki TMR0 ad verilen 8 bitlik bir saycdr. Bu RAM bellein h01 adresinde
bulunan zel bir kaytdr. Dieri de WDT (Watchdog timer) denilen bir zamanlaycdr.
WDT zamanlaycs ileriki konularda ilenecektir.

1.6.17.2. TMR0 Saycs ( zamanlaycs )

73
TMR0 saycs RAM bellein h01 adresinde bulunan zel bir kaytdr. TMR0
programlanabilen bir saycdr. Yani saymaya istenilen bir saydan balatlabilir ve herhangi
bir anda ierii silinebilir. Timer0 (TMR0) zamanlama/saycs aadaki zelliklere sahiptir:

8 bitlik zamanlama/sayc
Okunabilirlik ve yazlabilirlik
Programlanabilen frekans blme deeri zellii(prescaler)
Dhil ve hric saat pals seimi
FFhdan 00ha derken tama zerinden kesme oluturma
Hric saat iin den veya ykselen kenar seimine (edge select) sahiptir.

TMR0 saycsnn nemli zelliklerinden biri de ana program veya kesme
altprogramlar alrken sayma ilemini durdurmamasdr. Sayma ileminde FFhdan 00ha
geite oluan tama INTCON kaytsnn TOIF bayranda grlr ve bu bayrak 1 olur
(INTCON kayts konusuna bakabilirsiniz). stenirse bu bayrak test edilerek bir kesme
altprogram altrlabilir.

1.6.17.3. Option Kayts

OPTION registeri, TMR0/WDT iin frekans blme iin gerekli bitleri bulunduran,
hric kesme sinyal tipini belirleyen, PORTB zerindeki zayf Pull-up direnlerini ayarlayan
eitli kontrol bitlerini ieren, TMR0 veya WDTyi seme bayra bulunduran, yazlabilen
ve de okunabilen tipte bir registerdir.

R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit7 bit0
ekil 1.23: Option kayts ierii

bit 7: RBPU:PORTB Pull-up direnleri yetki biti.
1=PORTB Pull-uplar pasif durumundadr (yetki vermeme).
0=PORTB Pull-uplar aktif durumundadr (yetki verme).
Pull-Up direnleri aktif yapldnda B portu pinleri 50K luk
direnlerle +Vccye balanr.
bit 6: INTEDG:Hric kesme sinyali kenar seim biti.
1=RB0/INT pini sinyalin ykselen kenarnda kesme yapar.
0= RB0/INT pini sinyalin den kenarnda kesme yapar.

bit 5: TOCS:TMR0 sinyal kayna seim biti.
1=RA4/T0CKI pini zerinden hric sinyal.
0=Dhil komut palsleri (CLKOUT).

bit 4: T0SE: TMR0 sinyal kayna kenar seim biti.
1=RA4/T0CKI pini zerindeki sinyalin ykselen kenarnda.
0=RA4/T0CKI pini zerindeki sinyalin den kenarnda.

74

bit 3: PSA: Frekans blc seim biti.
1= Frekans blc says ,WDTa tayin edilir.
0= Frekans blc says ,TMR0a tayin edilir.
bit 2-0: PS2:PS0:n-lc oran seim bitleri

Bit 2-0 Deeri TMR0 Oran WDT Oran
000 1 : 2 1 : 1
001 1 : 4 1 : 2
010 1 : 8 1 : 4
011 1 : 16 1 : 8
100 1 : 32 1 : 16
101 1 : 64 1 : 32
110 1 : 128 1 : 64
111 1 : 256 1 : 128

1.6.17.4. TMR0 Saycsnn zellikleri

TMR0n almas ve zelliklerini anlamak iin ekil 1.24teki blok emann
incelenmesi faydal olacaktr.

ekil 1.24: TMR0 yaps
Sayc iindeki saynn artmas iin gerekli saat pals iki kaynaktan alnabilir:
Dhil komut sinyali (T0CS=0 durumu)
Hric saat palsi (T0CS=1 durumu). Bu durumda hric sinyal A portunun
3.bitinden (RA4) uygulanr. Hric sinyal PIC tarafndan saylmas
gereken bir sinyal de olabilir.
Sinyal kaynandan gelen sinyal direkt olarak TMR0 besleyebilecei gibi
frekans blc aracl ile de besleyebilir.
OPTION kaytsnn 0,1 ve 2. bitleri kullanarak 8 farkl frekans blme deeri
seilebilir. TMR0 saycsn tetikleyecek sinyal, frekans blc kullanlmadan
direkt olarak kullanlmak isteniyorsa frekans blme deeri WDye atanr. Bu
ilem PSA biti ile gerekletirilebilir. Ayrca frekans blme oranlarnn TMR0
ve WDT iin farkl olduuna dikkat edilmelidir.
Frekans blme deerleri TMR0a atandnda TMR0a yazmak iin kullanlan
tm komutlar frekans blme deerini siler (CLRF , MOVWF, BSF.gibi).

75
Frekans blme deeri kullanlmadan direkt olarak hric sinyal kullanlrsa
dhil komut sinyali ile elemeyi (senkron) salamak iin 2 saykllk bir
gecikme salanr.
TMR0 saycsnda k sinyalleri iki ekilde oluur:
RAM bellein h01 adresindeki TMR0 kaytsnn okunmasyla olur.
Saycnn hffden h00a geiinde oluan tamadan dolay INTCON
kaytsnn T0IF bayrana 1 yazlmas durumunda olur.
Kaynak olarak hric sinyal seildiinde istenirse bu sinyaller saylabilir. Bu
durumda TMR0 sinyal sayc olarak kullanlm olur. Bu uygulama devir sayc,
rn saydrma gibi ilemler iin kullanlabilir.
Frekans blme deerleri, TMR0 veya WDT sayclarnn ka dhil komut
sayklnda bir defa bir st sayya geiini belirleyen orandr. rnein,

TMR0 oran ise 2 komut sayklnda bir defa st sayya gei olur.
TMR0 oran 1/8 ise 8 komut sayklnda bir defa st sayya gei olur.
TMR0 oran 1/256 ise 256 komut sayklnda bir defa st sayya gei olur.

Bilindii gibi program belleine yerletirilen komutlarn almas iin PICe hric bir
osilatrden saat pals (f
osc
)uygulamak gerekir. Bu frekeans PIC tarafndan 4e blnerek
OSC2 ucundan dar verilir. te bu sinyalin 1 saykl iin geen sre (peryodu), bir
komutun almas iin geen zamandr. Bu durumda:

F
komut
= f
osc
/ 4

T
komut
= 1 / F
komut


TMR0 sayma aral zaman= T
komut
x ( TMR0 oran)
-1


Kesme olay saynn hffden h00a geiinde olutuuna gre ve hff=256
olduundan,

Kesme gecikmesi = TMR0 sayma aral zaman x 256

olur.

Btun bu formlleri tek formlde birletirilirse

(256-TMR0 ilk deeri) x ( TMR0 oran)
-1


Kesme gecikmesi = S olur.
f
osc
/ 4

Prescaler: Frekans blme says (2,4,8,,256)

TMR0 ilk deeri: TMR0a atanan ilk say. Eer deer atanmamsa 0dr .

Bu formlden istenirse belli bir kesme sresi iin TMR0a yklenecek say forml de
karlabilir. Bu durumda:


76
TMR0 ilk deeri = 256- [(Kesme gecikmesi x f
osc
) / 4 x ( TMR0 oran)
-1

]
olur.

1. rnek: 4MHzlik kristal osilatr kullanan bir PICde, frekans blme deeri
(prescaler) b000 seilirse kesmenin ne zaman olacan bulalm.

Frekans blme deeri (prescaler) b000 olduundan TMR0 oran olur.

F
komut
= f
osc
/ 4 = 4Mhz / 4 = 1 Mhz

T
komut
= 1 / F
komut
= 1 / 1 Mhz = 1S

TMR0 sayma aral zaman= 1S

x ( TMR0 oran)
-1


TMR0 sayma aral zaman= 1S

x ( 1 / 2 )
-1
= 2 S; yani her 2 Sde bir say
yukar doru artyor. Kesme olay saynn hffden h00a geiinde olutuuna gre ve
hff=256 olduundan,

Kesme gecikmesi = TMR0 sayma aral zaman x 256

Kesme gecikmesi = 2 S x 256

= 512 Slik periyotlarla kesme olay
oluur.

Veya
(256-TMR0 ilk deeri) x ( TMR0 oran)
-1


Kesme gecikmesi =
f
osc
/ 4

(256-0) x 2


Kesme gecikmesi = = 512 S olur.
4 Mhz / 4

2. rnek: 4MHzlik kristal osilatr kullanan bir PICde, frekans blme deeri
(prescaler) b110 ise 1.28 mslik gecikme iin TMR0a hangi saynn atanmas
gerekir?

1.28 ms =1280 S yapar ve (prescaler) b110 iin TMR0 oran =1 /128dir.
TMR0 ilk deeri = 256- [(Kesme gecikmesi x f
osc
) / 4 x ( TMR0 oran)
-1

]
TMR0 ilk deeri = 256- [(1280 x 4Mhz

) / 4 x 128

]
TMR0 ilk deeri = 246 desimal deeri bulunur.

Bunu hexadecimal formata dntrrsek hF6 olur.

TMR0 0dan deil de rneimizdeki gibi baka bir saydan balatlmak isteniyorsa
yaplmas gereken TMR0a MOVWF komutu ile o saynn yklenmesidir.


77
Prescalar deerini, TMR0 dan WDT a veya WDTdan TMR0 a atama
ilemi yaplrken prescalarn sfrlanmas nedeniyle PICin almas esnasnda
istenmeyen resetleri engellemek iin aadaki komut sras takip edilerek
prescalar tayininin Timer0dan WDTye deitirilmesi salanmaldr. Bu sra
WDT mmkn klnmad durumlara da takip edilmelidir. Prescalar WDTden
Timer0a deitirmek iin de verilen sra takip edilmelidir.
TMR0 dan WDT a prescalar deeri atamak (TMR0WDT) iin
aadaki sra takip edilmelidir.

BCF STATUS RP0 ; Bank 0a ge.
CLRF TMR0 ; TMR0 ve prescaler silinir.
BSF STATUS, RP0 ; Bank 1e ge.
CLRWDT ; WDT silinir.
MOVLW bxxxx1xxx ; Yeni prescaler WDT iin seilir.
MOVWF OPTION ; OPTION kaytsna yaz.
BCF STATUS, RP0 ; Bank 0a ge.

WDTdan TMR0a prescalar deeri atamak (WDTTMR0) iin aadaki
sra takip edilmelidir.
CLRWDT ; WDT ve prescalar silinir.
BSF STATUS, RP0 ; Bank 1e ge.
MOVLW bxxxx0xxx ;TMR0, yeni prescalar deeri ve saat kayna seilir.
MOVWF OPTION ; OPTION kaytsna yaz.
BCF STATUS, RP0 ; Bank 0a ge.

rnek: imdi de B portunun 1.bitinden kare dalga sinyal veren program yazlsn. Sinyal
kayna olarak dhil sinyal kayna kullanlsn ve TMR0 orann 1 / 256 olacak ekilde
prescaler deeri ayarlansn. k sinyali PICin RB1 bitine osilaskobun balanmasyla
izlenecektir.

ekil 1.26daki ak diyagram incelenmelidir. Bu diyagramda:

TMR0 <6>=1 ifadesiyle TMR0n 6.biti 1 mi? sorgusu yaplmtr.
GECIKME etiketi ile alt programa dallanlmtr. Burada Trke karakterlerin
kullanlmad hatrlanmaldr.
Program iindeki MOVLW b11010111 ve MOVWF OPTION_REG komut
satrlar ile OPTION kayts aadaki gibi ayarlanmtr:

78






1 1 0 1 0 1 1 1
Option
kayts











ekil 1.25: Program iin OPTION kaytsnn kurulmas

TMRO kaytsnn tamam olunabilir veya bu rnekteki gibi sadece bir biti test
edilebilir. TMR0 <6>=1 olduunda ulalan say b0100 0000=64tr (onlu).
PICin 4 Mhzlik kristal osilatrle kullanlacan dnrsek GECKME altp
rogramnn sresi aadaki gibi bulunabilir:

F
komut
= f
osc
/ 4 = 4Mhz / 4 = 1 Mhz
T
komut
= 1 / F
komut
= 1 / 1 Mhz = 1S
TMR0 sayma aral zaman= 1S

x ( TMR0 oran)
-1

TMR0 sayma aral zaman= 1S

x ( 1/256 )
-1
=256S
TMR0 64e kadar sayacandan
GECKME = 256S x 64 =16384 S = 16.384 ms olur.
Bu durumda PortB<1> pininden kacak kare dalga sinyalin frekans
F= 1/t = 1/16.384 ms = 61 Hz olur.
Prescaler (111)
TMR0
oran(1/256)
Prescaler
TMR0'a
atanr.
TMR0'n say art harici
sinyalin den kenarnda.
( Burada kullanlmyor.)
TMR0 sinyal
kayna dhil
komut saykl
Harici kesme
ykselen kenarda
PortB pull-up
direnleri
geersiz.

79

ekil 1.26: Programn ak diyagram
imdi de algoritma programa dklsn:

LIST P=16F84
INCLUDE P16F84.INC
BSF STATUS,5 ;Bank1e ge.
CLRF TRISB ;B portunun tm k.
CLRWDT ; WDT ve prescalar sil.
MOVLW b11010111 ;TMR0, yeni prescalar deerini ve sinyal
;kaynan se ve
MOVWF OPTION_REG ;OPTION kaytsna yaz.
BCF STATUS,5 ;Bank0a ge.
CLRF PORTB ;B portunun tm ularn 0 yap.
PALS BSF PORTB,1 ;PortB 1.bit lojik 1 yap.
CALL GECIKME ;GECIKME altprogramn ar.
BCF PORTB,1 ; PortB 1.bit lojik 0 yap.
CALL GECKME ;GECIKME altprogramn ar.
GOTO PALS
GECKME CLRF TMR0
TEST_BIT BTFSS TMR0,6
GOTO TEST_BIT
RETURN
END

80

1.6.17.5. WDT Zamanlaycs

PIC donanm ierisinde bulunan ikinci bir zamanlaycdr. Trke karl beki
kpeidir. Mikrodenetleyici ierisinde bulunan programn bir anlamda bekiliini yapt
iin bu ad verilmitir. Peki bu ii nasl yapmaktadr? PICin nceden belirlenen srede
yapmas planlanan bir ii zamannda yapmadysa yani dng kontrolden kp da
kilitlendiyse WDT devreye girer ve PICi resetler.

ekil 1.27de WDT zamanlaycs blok diyagram grlmektedir. WDTn birka
zellii yledir:

Watchdog Timer, baka hric bileenler talep etmeyen serbest alan on-chip
RC osilatrdr. Bu osilatrn WDTa salad nominal zaman am sresi 18
msdir. Prescaler deeri artrlarak bu deer 2-3 Sye kadar karlabilir.
WDT RC osilatr, OSC1/CLKIN pininin RC osilatrnden ayrlmtr. Yani
WDT , OSC1/CLKIN ve OSC2/CLKOUT pinlerindeki saat pals (clock) dursa
bile alacaktr. rnein , SLEEP komutu yrrle konduu durumlarda
buna rastlanr. Normal iletim esnasnda bir WDT zaman am (time-out) PIC
reseti yaratacaktr. Eer PIC SLEEP modunda ise bir WDT cihazn
uyanmasn (wake-up) ve normal iletimine devam etmesine sebep olur.
OPTION kaytsnn sadece ilk 4 biti (prescaler ve TMR0/WDT seim
bitleri) WDTla ilgilidir. OPTION kaytsnn 3.biti 1 yaplarak WDT seilir
ve prescaler bitleri (OPTION<0:2>) ile de frekans blme deeri ayarlanr.
WDTn, CLRWDT komutuyla reset yapldktan sonra saymasn tamamlayp
batan tekrar saymaya balad ana kadar geen sreye zaman am sresi
(time-out) denir. WDT saymasn tamamlad anda zaman am sinyali verir.
Bu sinyal STATUS kaytsnn 3. ve 4. bitlerindeki (TO ve PD bayraklar)
bayraklarn durumunu deitirir. Bu konumda STATUS kayts konusuna
dnlp ilgili bitler incelenmelidir.
Eer WDT ile kontrolden km bir program tekrar resetleyerek kontrol ele
almak planlandysa ana program banda STATUS kaytsnn bu bitleri
kontrol edilmelidir. Daha sonra da reset gerekletikten hemen sonra da bu
bitler kontrol edilmelidir. Bylece WDTn zaman am sresi dolduunda
program ak baka bir yere dallandrlabilir. rnek program paras aadaki
gibi olabilir.

WDT_KONTROL BTFSS STATUS,TO ;TO bayra 1 mi?
CALL KUR ;hayr (zaman am olumu) , KUR
;altprogramn ar.
MOVLW hCC ;Evet (zaman am olumam)
. ;programa devam et.

PIC ierisinde bulunan WDT zamanlaycsnn durumunu konfigrasyon bitleri
yazlrken belirlenebilir. Bu konfigrasyon bitleri program ierinde aadaki
gibi yazlabilir.


81
_CONFIG _CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC
Bu ifadede
_CP_OFF ;kod koruma yok.
_WDT_ON ;WDT aktif
_ PWRT_ON ;Power-On-Reset var.
_RC_OSC ;RC osilatr kullnlyor. (Dier seenekler _LP_OSC, _XT_OSC,
_HS_OSC)

stenirse konfigrasyon bitleri PIC programlaycnn kendi programndaki fuses
penceresinden de yaplabilir. WDT programn almas esnasnda geersiz yapmak
mmkn deildir.

ekil 1.27: WDT blok diyagram
T0CS , T0SE , PSA , PS2:PS0 bitleri OPTION registeri iindedir.

1.6.18. D/A ve A/D evirme

PIC16F84 mikrokontrol sadece dijital verileri giri olarak kabul eden ve yine sadece
dijital k verebilen bir entegredir. Bu yzden analog veri girii ve k gereken
durumlarda bu iler iin retilmi zel entegreler kullanmak gerekir. Bununla beraber
PIC14C000 mikrodenetleyicisinin giriine uygulanan dijital sinyali dorudan analog voltaj
k olarak verebilmektedir. Ayrca PIC16F877 mikrodenetleyicisi de giriine uygulanan
analog sinyali dorudan dijital k olarak verebilmektedir.


82
1.6.18.1. Dijital Analog evirici

PICten kan dijital kelimeyi analog sinyale dntrmek iin kullanlacak
yntemlerden biri AD558 entegresini kullanmaktr. nk bu entegre 8 bitlik dnm
salamaktadr ve PIC iin kontol girilerine sahiptir. Dier bir yntem de PWM (Pals
genilik modlasyonu) yntemini kullanmaktr. Bu yntemle ayrca bir entegre kullanmak
gerekmez.

ekil 1.28de bir kare dalga sinyalin 3 farkl lojik 1 ve 0 sreleri iin voltmetrede
lm deerleri (analog gerilim deerleri) grlmektedir. Dolays ile bu 3 gerilim deerleri
ile ledleri srersek led parlaklklar birbirinden farkl olacaktr.

ekil 1.28: PWM sinyali ile analog gerilim retmek
ve bekleme srelerini bir periyot iinde deitirirsek k derilimi de 0-5V arasnda
deitirilebilir. Aadaki gibi bir gecikme alt program ile i ve bekleme sreleri
belirlenebilir.

GECIKME
MOVWF SAYAC
TEKRAR
DECFSZ SAYAC,1
GOTO TEKRAR
RETURN

8 bitlik bir DA evriminde, olabilecek en byk dijital deer hFF olacandan bu
deer bir evrim periyodu oluturan say olarak alnmaldr. Yani PWM k periyodu
SAYAC deerinin hFF=d256olmas durumunda oluur. Bu durumda i ve bekleme
srelerini,



83
256 says 5V oluursa

Say
i
V
analog
oluur.

Say
i
x 5V = 256 x V
analog


Say
i
=(256x V
analog
)/5 , V
analog
= (Say
i
x 5)/ 256
,
Say
bek
=256 - Say
i

formlleri bulunur.



rnein, 0.5 Vluk analog gerilim elde etmek iin GECIKME altprogramnda SAYAC
kaytsna yklenecek i ve bekleme saylar bulunsun.
Say
i
=(256x V
analog
)/5=(256 x 0.5)/5=25.6=26 =h1Ave
Say
bek
=256 - Say
i
=256-26=230=hE6 olur. Bu kadar basit.
imdi de bir programla PWM yntemi ile analog sinyal retelim:
rnek: B portunun 1. bitinden 2 Vluk analog deer reten program yaznz.
zm: nce i ve bekleme saylarn bulalm.
Say
i
=(256x V
analog
)/5=(256 x 2)/5=102.4= 103 = h67ve
Say
bek
=256 - Say
i
=256-103=153=h99 olur.

ekil 1.29: rnek progamn algoritmas

84
Programda B portunun 1.biti nce 1 yaplyor. Daha sonra i zamann belirleyen
deer (h67) W kaytsna yklenip GECIKME alt progamna dallanlyor. GECIKME
alt progamnda h67 deeri 0 olana kadar B portunun 1.biti 1 olarak kalyor. SAYAC
deeri 0 olduunda ise anaprograma dnlyor. Bylece i zaman bitmi oluyor. Ana
progamda B portunun 1.biti bu el 0 yaplyor. Daha sonra bekleme zamann belirleyen
deer (h99) W kaytsna yklenip GECIKME altprogramna dallanlyor. GECIKME
alt programnda h99 deeri 0 olana kadar B portunun 1.biti 0 olarak kalyor. SAYAC
deeri 0 olduunda ise anaprograma dnlerek tekrar B portunun 1.biti 1 yaplyor. Bylece
bekleme zaman da bitmi oluyor. Bu olay silsilesi sonunda B portunun 1.bitine bal
voltmetrede 2 V oluuyor.

imdi de program yazlsn.

;######DAC.asm#########
LIST P=16F84
INCLUDE P16F84.INC
IS EQU h0C
BEKLE EQU h0D
SAYAC EQU h0E
ORG h00
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
CLRF PORTB
MOVLW h67
MOVWF IS
MOVLW h99
MOVWF BEKLE
TEKRAR
BSF PORTB,1
MOVF IS,W
CALL GECIKME
BCF PORTB,0
MOVF BEKLE,W
CALL GECIKME
GOTO TEKRAR
GECIKME
MOVWF SAYAC
DONGU
DECFSZ SAYAC,1
GOTO DONGU
RETURN

85
1.6.18.2. Analog Dijital evirici

PIC16F84 kontrolcsnde dhil ADC olmad iin bu i PIC16FF877 kullanarak
gerekletirilecek.

16F877 analog giri iin A portunda 5, E portunda ise 3 pini kullanr (ekil 1.30u
inceleyiniz.). Yani 8 kanall ADC olarak kullanlabilir. Bu pinlere balanacak scaklk, ses,
k sensrleri veya potansiyometrelerden analog veri alnabilir. evrim sonucu 10 bitliktir.

ekil 1.30: 16F877 denetleyicisi pin diyagram
ADC uyuma modunda da alabilir ve kendi i devre saatini (RC osilatrn)
kullanr. ADC modl bu i iin 4 kayt kullanr: ADRESH, ADRESL, ADCON0 ve
ADCON1. ADRESH ve ADRESL kaytlar, ADC dnm sonucunun st ve alt
baytlarn tutar. ADCON0, ADC ileminin kontrolnde ADCON1 ise port pinlerinin
konfigrasyonunda kullanlan kaytlardr. ADCON0 ve ADCON1 kaytlarnn i yaps
ekil 1.31 ve ekil 1.32de verilmitir.

86

ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE - ADON
1=Dnm 1=AD alyor
Osc modu; Analog kanal balad 0= AD kapal.
00:Fosc/2 seim bitleri 0=Bitti
01: Fosc/8 ( 000:AN0111:AN7)
10: Fosc/32
11: F
RC

ekil 1.31: ADCON1 kayts

ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0
AD sonu seim biti
0:Saa yanak AD PORT konfigrasyon bitleri
1:Sola yanak
ekil 1.32: ADCON0 kayts


ekil 1.33: AD PORT konfigrasyon bitleri

ADC dnm yapmak iin u sra izlenir:

AD biriminin konfigrasyononu yap.
Analog giri portunu belirle (ADCON1).
Anlog giri kanaln se (ADCON0).
AD dnm osilatrn se(ADCON0).

87
AD birimini aktifletir.
PIC16877de ayrca AD kesmesi yaplabilir. stenirse AD kesme kullanlarak
kesme altprogram da yazlabilir. Bu durumda ADIF bitinin silinip ADIE, PEIE,
GIE yetkilerinin 1 yaplmas gerekir. Bunu yapmak iin aadakilerin bilinmesi
gerekir.

ADIE biti 16F877nin PIE1 kaytsnda bulunur. PIE1 16F877nin
kesme yetki durumlar hakknda iinde kontrol bitleri barndrr.

ADIE=1 AD kesmesi aktif.
ADIE=0 AD kesmesi pasif.

PEIE ve GIE biti 16F877nin INTCON kaytsnda bulunur. INTCON
16F877nin kesme durumlar hakknda iinde kontrol bitleri barndrr.
Burada sadece PEIE ve GIE biti bayraklar ile ilgileniliyor.

PEIE=1 evresel kesmeler aktif.
PEIE=0 evresel kesmeler pasif.
GIE=1 tm kesmeler aktif.
GIE=0 tm kesmeler pasif.
Kullanlmayacaksa bu basamak geilir.

Gereken dolum sresini bekle (evrim zaman).
GO/DONE bitini 1 yaparak evrime bala.
evrimin bitmesini bekle. GO/DONE biti 0sa evrim bitmitir ya da AD
kesmesini bekle.
AD sonu yazma iftini oku (ADRESH:ADRESL). ADIF bayran 0 yap.

ADIF biti 16F877nin PIR1 kaytsnda bulunur. PIR1 16F877nin kesme durumlar
hakknda iinde kontrol bitleri barndrr. Burada sadece ADIF bayra ile ilgileniliyor.

ADIF=1 ise AD evrimi tamamland.
ADIF=0ise AD evrimi tamamlanmad.

Sonraki evrim iin 1 yada 2. basamaa git.

rnek: 16F877 denetleyicisinin AN0 kanalna bal bir potansiyometrenin oluturaca
analog sinyal, 8 bit dijital kelimeye dntrlerek C portundaki ledlerde gsterilsin.

Bunun zm iin kaytlarn hangi banklarda bulunduunu gsteren 16F877nin
kayt haritasna ihtiya olacaktr (ekil 1.34). Zaman gecikmesi iin TMR0 donanm
zamanlaycsnn kullanldna dikkat edilir.

88

ekil 1.34: 16F877nin kayt haritas

89
;**********************************************************
;* ADC.ASM
;**********************************************************
;* Microchip Technology Incorporated
;* 16 December 1998
;* Assembled with MPASM V2.20
;**********************************************************
;* Bu program A/D
;* A/D dnm iin kanal 0 seilmi, analog sinyal bir
;* potansiyometre zerinden salanmakta ve sonu
;* PORTCdeki ledlerde gsterilmektedir.
;**********************************************************
list p=16f877
include "p16f877.inc"
org 0x000
nop
clrf PORTC ;Clear PORTC
movlw B'01000001' ;Fosc/8, A/D etkin olacak ekilde
movwf ADCON0 ; ADCON0 ayarla.
bsf status,5 ; Bank1e ge.
movlw b'10000111' ; TMR0 etkin, prescaler 1:256 olacak
movwf OPTION_REG ;ekilde OPTION_REGi ayarla.
clrf TRISC ;PORTC k.
movlw B'00001110' ;sola yanak k format, 1 analog kanal
movwf ADCON1 ; (AN0)girii ve VDD ve VSS referans
;olacak ekilde ADCON1i ayarla.
bcf status,5 ;Bank0a ge.
BASLA
btfss INTCON,T0IF ; Timer0 tamas gerekleti mi?
goto BASLA ;hayr.Tamay bekle.
bcf INTCON,T0IF ;evet.T0IF bayran sil.
bsf ADCON0,GO ; A/D evrimini balat.
BEKLE
btfss PIR1,ADIF ;evrim bitti mi?
goto BEKLE ;hayr.Bitirmesini bekle.
movf ADRESH,W ;Evet sonucu PORTCdeki
movwf PORTC ;ledlere gnder.
goto BASLA ;tekrarla.
End

90
UYGULAMA FAALYET
8 ledin portlar ile kontroln yapnz.

lem Basamaklar neriler
B Portuna bal 8 led , A portunun 0.bitine
bal bir butona basldnda birbirine
eklenerek aadaki gibi 1 sn. arayla sola
doru kayarak yansn.

Program ak diyagramn iziniz.
Programlama dilini seiniz.
Programlama dilinin yazm kurallarnna
dikkat ederek assemler komutlara gre
programnz yaznz.
Program MPASM ile derleyiniz.
Derleme sonucunda oluan HEX
dosyasn, programlama kart ile
mikrodenetleyiciye yaznz.
Ak diyagram sembollerini amacna
uygun kullannz.
Programn balk ksmnda gerekli
tanmlamalar yapnz (LIST,
INCLUDE).
Programda kullandnz
mikrodenetleyici komutlarnn say ve
karakterlerin yazlna dikkat ediniz.
Programn tamamn ya byk ya da
kk harfle yazmak yazm hatalarn
azaltacaktr.
Program banda giri/k portlarn
kurduktan sonra B portunu ve C (elde)
bayran silerek programa balaynz.
Programn derlenmesi sonucunda oluan
HEX dosyas ASM dosyanzn
bulunduu dizindedir (MPASM
program dizininde deildir).

UYGULAMA FAALYET


91

KONTROL LSTES

Bu faaliyet kapsamnda aada listelenen davranlardan kazandnz beceriler iin
Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi
kontrol ediniz.

Deerlendirme ltleri Evet Hayr
1. Kontrol probleminin tanmlanmas ifade edilmesiyle kada
dkebildiniz mi?

2. Sorunun zm iin gerekli program veya fonksiyonlar
belirleyebildiniz mi?

3. Programn ak diyagramn izebildiniz mi?

4. Program yazabildiniz mi?




DEERLENDRME

Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz.
Kendinizi yeterli grmyorsanz renme faaliyetini tekrar ediniz. Btn cevaplarnz
Evet ise lme ve Deerlendirmeye geiniz.


92

LME VE DEERLENDRME
Aadaki sorular dikkatlice okuyunuz ve doru seenei iaretleyiniz.

1. LIST ve INCLUDE ifadeleri bir assabmler programn hangi blmnde bulunur?

A) Balk B) Atama C) Program D) Sonlandrma

2. A Portu ynlendirme kayts aadakilerden hangisidir?

A) PORTA B) TRISA C) STATUS D) INTCON

3. Kesme bit ve bayraklarn iinde barndran kayt aadakilerden hangisidir?

A) OPTION_REG B) INTCON C) TMR0 D) STATUS

4. Bank deitirme ilemini hangi kayt salar?

A) PORTB B) OPTION_REG C) STATUS D) ADCON0

Aadaki program parasna gre 5-15. sorulardaki boluklar tamamlaynz.
;====rnek.asm======
LIST P=16F84
INCLUDE P16F84.INC
ORG h000
GOTO BASLA
BASLA BSF STATUS,5
CLRF TRISB
MOVLW hFF
MOVWF TRISA
BCF STATUS,5
TEKRAR CLRF PORTB
BCF STATUS,C
KONTROL BTFSS PORTA,0
GOTO KONTROL
MOVLW h35
MOVWF TEST
INCF TEST,1
RRF TEST,1
COMF TEST,1
RLF TEST,0
MOVWF PORTB
GOTO TEKRAR
END
5. Programn balang adresi h.......dr.

LME VE DEERLENDRME


93
6. Programda ..........................mikrodenetleyicisi kullanlmtr.

7. Programda .. ....portu giri,........ portu k olarak kurulmutur.

8. A Portunun ........bitine bal bir buton ile programn ak konrol edilmektedir.

9. A Portuna bal buton baslmad srece PORB kaytsnn deeri h......dir.

10. Butona basldktan sonra BCF STATUS, C komut satrnda C (elde) bayrann
deeri .. olur.

11. Butona basldktan sonra, program sonunda W kaytsnn deeri h......dir.

12. Butona basldktan sonra, program sonunda TEST kaytsnn deeri h......dir.

13. Butona basldktan sonra, program sonunda PORT B kaytsnn deeri h......dir.

14. Butona basldktan sonra program sonunda C (elde) bayrann deeri ......dir.

15. GOTO komutuna PCye(program saycya) ...............etiketinin adresi yklenir.



DEERLENDRME

Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap
verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz.
Cevaplarnzn tm doru ise bir sonraki renme faaliyetine geiniz.

94
RENME FAALYET-2



Uygun ortam salandnda microdenetleyici programn derlemesini yapabilecek,
derleme sonunda oluan dosyalar tanyabilecek ve oluan dosyalardan faydalanarak
programnz hakknda yorum yapabileceksiniz.



MPASM programnn menlerini tanyp ayarlarnn nasl yaplmas gerektiini
aratrnz.
Yazdmz program derleme olayna neden ihtiya duyduumuzu
aratrmalsnz.

MPASM programnn menlerini tanyp ayarlarnn nasl yaplmas gerektiini
renme Faaliyetleri-1den renebilirsiniz. Ayrca internet ortamndan ve mesleki
kitaplarn bulunduu ktphaneler ile bu ii yapan sektrde alanlardan daha ayrntl bilgi
bulabilirsiniz. Aratrma iin arkadalarnzla i blm yapabilirsiniz.

2. MKRODENETLEYC KONTROL
PROGRAMININ MAKNE DLNE
EVRLMES

MPASM derleyici program assmbly programn makine kodunu retir. MPASM
derleyici programnn nasl kurulacan, ayarlarnn nasl yaplacan Mikrodenetleyici
iin gerekli yazlmn kullanm konusunda anlatlmt. Burada ise derleme ileminin
yaplmas ve derleme sonucunda oluturulan dosyalar anlatlacaktr.

2.1. Programn Derlenmesi

2.1.1. Derleme leminin Yaplmas

Bir assembly dosyasn derlemek iin aadaki sra izlenir.

MPASM program altrlarak Resim 2.1deki gibi ayarlanr. Burada
mikrodenetleyici olarak 16F84A seilmitir.
RENME FAALYET-2

ARATIRMA
AMA

95

Resim 2.1: MPASM derleyici program arabirimi
Daha nceden yazlp kaydedilmi .asm uzantl kaynak dosyas Browse ile
alr (Resim 2.2).

Resim 2.2: ASM dosyann seilmesi

96
Assemble komut tuuna baslarak derleme ilemi bitirilir. Sonu, derleme
baarl olduysa Resim 2.3teki, baarl olmadysa Resim 2.4teki pencere ile
programcya bildirilir.

Resim 2.3: Baarl ASM derleme Resim 2.4: Baarsz ASM derleme
2.1.2. Derleme Sonucu Elde Edilen Dosyalar

Derleme sonunda LST dosyas, ERR dosyas, HEX dosyas, WAT dosyas, PJT
dosyas, LST dosyas dosyalar MPASM programnn bulunduu dizinde oluur.

2.1.2.1. ERR Dosyas

ERR dosyas metin editr kullanlarak alabilecek bir dosyadr. ASM dosyas
konusunda rnek olarak verilen tersle.asm dosyas derlendikten sonra hi hata olumad
iin tersle.err dosyas alrsa bo bir sayfa grlecektir. Fakat hata kmas durumunda
MPASM bunu programcya ekil 2.4teki pencere ile bildirecektir. Bu pencerede hata , uyar
ve mesaj saylarna ait bilgiler bulunur. Errors:4 ifadesi 4 satrda hata bulunduunu ifade
etmektedir. Bu hatalar bir ERR dosyas olarak ASM dosyasnn bulunduu dizinde
oluturulur.

imdi de 1LEDYAK.ERR dosyasnn hatalar bulunup dzeltilsin. ERR uzantl
dosyay bir metin editr ile ap iinde hatalarn olduu satrlar arnr. Hatalar bulduktan
sonrada tekrar ASM dosyas alp ilgili hatalar birer birer giderilir. Eer programda kod
satrlar oksa biraz zor olabilir ama gene de zm var. Dosyada metin arama zelliini
kullanlarak Error kelimesi aranarak bulunabilir.

97

ekil 2.5: rnek hata dosyas
1.satrda bir hata var, hata olan kod EQUa =>hlbuki bu deiken tanmlama
iin kullandmz equ olmalyd. Gidip onu EQU yaplarak dzeltilir.
2.satrda bir hata var. Illegal opcode (PORTB)=> Yalnz bu PORTBnin
yazlnda bir hata yok, burada baka bir hata olmal, gidip 12inci satra
baklsn. Grlyor ki 12. satr CLRF PORTB olmas gerekirken CLRFg
PORTB olarak girilmi, burada ERR dosyasnda CLRFg ifadesi warning olarak
bir st satrda grlr. CLRF yazldnda bu assembler kodu olur ama CLRFg
yazldnda bu ifade satrn banda olduu iin bunu ETIKET olarak tanmaya
alr. Bu yzden bu satrda PORTBde hata gsterdi.
28 ve 40. satrlarda iki hata var fakat esas hata burda deil. Error dosyasnda
aklamaya baklrsa "Symbol not previously defined (SAYAC1)" yazyor.
Burada MPASM diyor ki: "Sayac1 deikenini daha nce tanmlamadnz. O
zaman retilecek demektir. Gidip asm dosyasnda tanmlamalar yaplan
blme baklr ve grlr ki aslnda bu hata az nce dzeltilmitir. nk az
nce 6.satrda bulunan hata, SAYAC1 deikeni tanmlarken bulunan hatayd
ve dzeltilmiti.
Not: Bu hataya dmeyiniz. Bir hata baka bir hatann sebebi olabilir.Yani
derleme sonucunda eer 20 hata uyars aldysanz derleme yaplrken 20 defa
sorunla karlalm anlamna gelir yoksa 20 tane hata var anlamna gelmez
(ama olabilir de tabii). Hatta yukardaki rnee benzer ekilde bir hata olup ok
hata uyars alabilirsiniz. rnein bir deikenin tanmlanmasnda hata varsa ve
bu deikeni biz 20 yerde kullandysak hatamz bir yerde olmasna ramen 20
tane hata uyars alrz. stteki hatay dzelttiinizde unutup 2 dk. sonra
aalarda bulduunuz hatadan dolay tekrar ayn hatay ararsanz bulamazsnz,
en gzeli birka dzeltme yaptnzda bir karmaa oluursa MPASMla tekrar
derleme yapnz ve ERROR dosyasn tekrar anz. Bu durumda en son hatalar
grm olacanzdan sorun yaamazsnz, uzun uzun hata aramazsnz.

98
2.1.2.2. ASM Dosyas

ASM dosyas aslnda derleme sonunda oluan bir dosya deildir. Bizim program
kaynak dosyasdr. Fakat derleme sonunda oluan kaynak dosyalarla ayn dizinde bulunduu
iin listeye dahil edildi.

Bit pozisyonlarn tersleme konusundaki tersle.asm program aada grlyor.
;====tersle.asm======
LIST P=16F84
INCLUDE "P16F84.INC"
SAYAC1 EQU h'0C'
SAYAC2 EQU h'0D'
CLRF PORTB
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
MOVLW h'0F' ;ilk deeri ykle ve
MOVWF PORTB ;B portundan kar.
TERSLE
CALL GECIKME ;Yeni deer iin bekle.
COMF PORTB,F ;PORTB'yi tersle.
GOTO TERSLE ; saa kaydr.
GECIKME ;GECIKME alt program balangc.
MOVLW h'FF'
MOVWF SAYAC1
DON1
MOVLW h'FF'
MOVWF SAYAC2
DON2
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN ;GECIKME alt program sonu
END

2.1.2.3. HEX Dosyas

HEX dosyas metin editr kullanlarak alabilecek bir dosyadr. ASM dosyas
konusunda rnek olarak verilen tersle.asm dosyas derlendikten sonra oluan tersle.hex
dosyas aada grlmektedir. Denetleyiciye bu dosyadaki veriler yklenir.

:1000000086018316860183120F3086000920860937
:100010000628FF308C00FF308D008D0B0D288C0BD7
:040020000B280800A1
:00000001FF

99

2.1.2.4. WAT Dosyas

WAT dosyas MPASM programnn derlemesi sonucu oluan bir dosya deildir.

2.1.2.5. PJT Dosyas

PJT dosyas metin editr kullanlarak alamayacak bir dosyadr. Bu dosya proje
dosyasdr ve hangi program kullanarak proje oluturulmu ise o program tarafndan alr.
rnein MPLAB kullanarak oluturacanz projeler vb. Programc iin bilgilendirici bir
dosya deildir sadece var olan almay amak iin kullanlr.

2.1.2.6. LST Dosyas

LST dosyas metin editr kullanlarak alabilecek bir dosyadr. Bu dosya birka
sayfadan oluabilir. ASM dosyas konusunda rnek olarak verilen tersle.asm dosyas
derlendikten sonra oluan tersle.lst dosyas aada grlmektedir. Dikkatli incelendii
zaman aadaki bilgileri ierdii grlmektedir.

Bir lst dosyas birka sayfadan oluur. Bu rnekte PAGE1, PAGE2 ve PAGE3
eklinde 3 sayfa var.
Komutlarn hex kodlar (PAGE1 ierisinde)
Komutlarn bellekteki adresleri ( PAGE1 ierisinde LOC OBJECT CODE ),
Kaynak program ve satr numaralar (PAGE1 ierisinde LINE SOURCE
TEXT),
Programda kullanlan etiketler ve tanmlar (PAGE2 ierisinde SYMBOL
TABLE)
OPTION_REG tanmlamalar (PAGE3 ierisinde)
Bellek kullanm haritas (PAGE3 ierisinde, x =kullanlan, - kullanlmayan
alanlar belirtir)
Bellekte durumu (PAGE3 ierisinde kullanlan 18 , kullanlmayan 1006 bayt,
toplam 1KB)
Oluan hata ve uyar says (PAGE3 sonunda hata says 0, uyar says 7,
uyarlar ise PAGE1 ierisinde bulunuyor. )

100

MPASM 02.30.11 Intermediate tersle.ASM 8-6-2005 19:02:47 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ;====TERSLE.asm======
00002 LIST P=16F84
Warning[205]: Found directive in column 1. (INCLUDE)
00003 INCLUDE "P16F84.INC"
00001 LIST
00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc.
00136 LIST
0000000C 00004 SAYAC1 EQU h'0C'
0000000D 00005 SAYAC2 EQU h'0D'
0000 0186 00006 CLRF PORTB
0001 1683 00007 BSF STATUS,5
0002 0186 00008 CLRF TRISB
0003 1283 00009 BCF STATUS,5
0004 300F 00010 MOVLW h'0F' ;ilk deeri ykle ve
Warning[203]: Found opcode in column 1. (MOVWF)
0005 0086 00011 MOVWF PORTB ;B portundan kar.
0006 00012 TERSLE
0006 2009 00013 CALL GECIKME ;Yeni deer iin bekle.
Warning[203]: Found opcode in column 1. (COMF)
0007 0986 00014 COMF PORTB,F ;PORTB'yi tersle.
0008 2806 00015 GOTO TERSLE ; saa kaydr.
00016
0009 00017 GECIKME
Warning[203]: Found opcode in column 1. (MOVLW)
0009 30FF 00018 MOVLW h'FF'
Warning[203]: Found opcode in column 1. (MOVWF)
000A 008C 00019 MOVWF SAYAC1
000B 00020 DON1
Warning[203]: Found opcode in column 1. (MOVLW)
000B 30FF 00021 MOVLW h'FF'
Warning[203]: Found opcode in column 1. (MOVWF)
000C 008D 00022 MOVWF SAYAC2
000D 00023 DON2
000D 0B8D 00024 DECFSZ SAYAC2,F
000E 280D 00025 GOTO DON2
000F 0B8C 00026 DECFSZ SAYAC1,F
0010 280B 00027 GOTO DON1
0011 0008 00028 RETURN
00029 END
MPASM 02.30.11 Intermediate ABD.ASM 8-6-2005 19:02:47 PAGE 2
SYMBOL TABLE
LABEL VALUE


101
C 00000000
DC 00000001
DON1 0000000B
DON2 0000000D
EEADR 00000009
EECON1 00000088
EECON2 00000089
EEDATA 00000008
EEIE 00000006
EEIF 00000004
F 00000001
FSR 00000004
GECIKME 00000009
GIE 00000007
INDF 00000000
INTCON 0000000B
INTE 00000004
INTEDG 00000006
INTF 00000001
IRP 00000007
NOT_PD 00000003
NOT_RBPU 00000007
NOT_TO 00000004
OPTION_REG 00000081
PCL 00000002
PCLATH 0000000A
PORTA 00000005
PORTB 00000006
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
RBIE 00000003
RBIF 00000000
RD 00000000
RP0 00000005
RP1 00000006
SAYAC1 0000000C
SAYAC2 0000000D
STATUS 00000003
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0SE 00000004
TERSLE 00000006
TMR0 00000001
TRISA 00000085

102
TRISB 00000086
W 00000000
WR 00000001
WREN 00000002
WRERR 00000003
Z 00000002
MPASM 02.30.11 Intermediate ABD.ASM 8-6-2005 19:02:47 PAGE 3

SYMBOL TABLE
LABEL VALUE

_CP_OFF 00003FFF
_CP_ON 0000000F
_HS_OSC 00003FFE
_LP_OSC 00003FFC
_PWRTE_OFF 00003FFF
_PWRTE_ON 00003FF7
_RC_OSC 00003FFF
_WDT_OFF 00003FFB
_WDT_ON 00003FFF
_XT_OSC 00003FFD
__16F84 00000001

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : XXXXXXXXXXXXXXXX XX-------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 18
Program Memory Words Free: 1006
Errors : 0
Warnings : 7 reported, 0 suppressedMessages : 0 reported, 1 suppressed

103
UYGULAMA FAALYET
Yaptnz ve yapacanz bir mikrodenetleyici programn makine diline evirerek
ASM, HEX, LST, COD, ERROR dosyalarn inceleyiniz.
lem Basamaklar neriler
Mikrodenetleyici derleme programn
(MPASM) bilgisayarnza kurunuz.
MPASM program ayarlarn yapnz.
Uygulama faaliyetleri-1 Uygulamalar
blmnde yazm olduunuz program
derleme programnda anz.
Komut dilinde yazlm programnz
derleyerek makine diline heksadesimal
kodlara eviriniz (HEX dosyas).
Eer derleme sonucunda hatalar olutuysa
hata dosyasn ap hatalar gideriniz.
LST dosyasn ap denetleyicinin bellek
durumunu (bo ve dolu bellek alanlar)
reniniz.
Derleme yapmadan nce mutlaka
MPASM programnda kullanacanz
denetleyici tipi, k format ayarlarn
yapnz.
Derleme sonucunda hata olutuysa
btn hatalar birden bulmak yerine, tek
tek bulmaya alnz ve bir hatay
bulduktan sonra o hatay giderip
program tekrar derleyiniz. nk bir
hata baka hatalarn nedeni olabilir.


KONTROL LSTES

Bu faaliyet kapsamnda aada listelenen davranlardan kazandnz beceriler iin
Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi
kontrol ediniz.

Deerlendirme ltleri Evet Hayr
1. Program ak diyagramn izdiniz mi?

2. Programlama dilini sediniz mi?

3. Programlama dilinin yazm kurallarn bildiniz mi?

4. Mikrodenetleyicinin komut listesini ve komut yazlm kuraln ve
grevlerini bildiniz mi?

5. Program derlediniz mi?

6. Programlama kart ile mikrodenetleyiciye program yazdnz m?




DEERLENDRME

Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz.
Kendinizi yeterli grmyorsanz renme faaliyetini tekrar ediniz. Btn cevaplarnz
Evet ise lme ve Deerlendirmeye geiniz.


UYGULAMA FAALYET


104
LME VE DEERLENDRME

Aadaki sorular dikkatlice okuyunuz ve doru seenei iaretleyiniz.

1. Bir assembly program MPASM ile derlendikten sonra aadaki dosyalardan hangisi
olumaz?

A) ERR dosyas B) LST dosyas C) HEX dosyas D) PPT dosyas

2. MPASM ile derleme sonucu oluan hata dosyas aadakilerden hangisidir?

A) LST B) ERR C) PJT D) ASM

3. MPASM ile derleme sonucu oluan dosyalar hangi dizinde bulunur?

A) Belgelerim B) ASM dosyasnn
bulunduu dizin
C) MPASM
program dizininde
D) C (sabit disk)

4. Aadaki hata mesaj ekranna gre ka assembly satrnda hata var?

A) 4 B) 177 C) 1 D) 7

5. Aadaki dosyalardan hangisini bir metin editr ile ap programmz hakknda
bilgi alamayz?

A) ERR dosyas B) LST dosyas C) ASM dosyas D) PJT dosyas


LME VE DEERLENDRME


105

Aadaki cmlelerin banda bo braklan parantezlere, cmlelerde verilen
bilgiler doru ise D, yanl ise Y yaznz.

1.( ) ASM dosyas MPASM programnn derleme sonucunda oluturduu bir dosya
deildir.

2.( ) Denetleyiciye ykleyeceimiz veriler ASM dosyas iindedir.

3.( ) LST dosyasndan denetleyici belleiniN ne kadar kullanld renilebilir.

4.( ) Error [113] C:\prog\test.asm 20 :illegal opcode (PORTA) hata satr bize test.asm
programnn 20. satrnda bir komut yazlm hatas olduunu syler.

5.( ) Hatasz program mutlaka beklediimiz gibi alr.



DEERLENDRME

Cevaplarnz cevap anahtaryla karlatrnz. Yanl cevap verdiiniz ya da cevap
verirken tereddt ettiiniz sorularla ilgili konular faaliyete geri dnerek tekrarlaynz.
Cevaplarnzn tm doru ise Modl Deerlendirmeye geiniz.

106
MODL DEERLENDRME

Bu modl kapsamnda aada listelenen davranlardan kazandnz beceriler iin
Evet, kazanamadklarnz iin Hayr kutucuklarna ( X ) iareti koyarak rendiklerinizi
kontrol ediniz.

Deerlendirme ltleri Evet Hayr
1. Ak diyagram sembollerini bir problemin zmnde
kullanabildiniz mi?

2. Mikrodenetleyici assembler program ve yazm kurallarna
uygun program yazabildiniz mi?

3. Mikrodenetleyici komutlarnn ilevlerini bildiniz mi?
4. Programda say ve karakterleri kullanabildiniz mi?
5. Heksadesimal saylar kullanabildiniz mi?
6. Binary saylar kullanabildiniz mi?
7. Desimal saylar kullanabildiniz mi?
8. ASCII karakterler kullanabildiniz mi?
9. Mikrodenetleyici iin gerekli yazlmn kullandnz m?
10. MPASM derleyici programn kurabildiniz mi?
11. MPASM programnn kullanacanz denetleyiciye gre
ayarlarn yapabildiniz mi?

12. Mikrodenetleyici programn yazdnz m?
13. Portlarn giri ve k olarak ynlendirebildiniz mi?
14. Konfigrasyon bitlerinin yazabildiniz mi?
15. W kaytsnn kullanabildiniz mi?
16. Bitleri test ederek ilem yapabildiniz mi?
17. Status kaytsn kullanabildiniz mi?
18. Zaman geciktirme dngleri dzenleyebildiniz mi?
19. Bit pozisyonlarn sola/saa kaydrma, tersleme ilemlerini
yapabildiniz mi?

20. stenen bitleri sfrlamak, bire evirmek ve terslemek ilemlerini
yapabildiniz mi?

21. Bir bytlk iki veriyi birbiriyle veya 0 ile karlatrabildiniz mi?
22. 8 ve 16 bitlik toplama yapabildiniz mi?
23. 8 ve 16 bitlik karma yapabildiniz mi?
24. evrim tablolarn kullanabildiniz mi?
25. INTCON kaytsn kullanabildiniz mi?
26. Kesme kaynaklarn bildiniz mi?
27. Kesme alt programlarn dzenlenleyebildiniz mi?
28. TMR0 ve WDT sayclarn kullanabildiniz mi?
29. Option kaytsn kullanabildiniz mi?
30. Mikrodenetleyici ile dijital /analog evirmesini yapabildiniz mi?
MODL DEERLENDRME

107
31. Mikrodenetleyici ile analog /dijital / evirmesini yapabildiniz
32. Mikrodenetleyici kontrol programn makine diline evirdiniz mi?
33. Assembly programn derleyebildiniz mi?
34. Derleme sonucunda oluan dosyalardan faydalanarak kan
hatalar giderebildiniz mi?




DEERLENDRME

Deerlendirme sonunda Hayr eklindeki cevaplarnz bir daha gzden geiriniz.
Kendinizi yeterli grmyorsanz renme faaliyetlerini tekrar ediniz. Btn cevaplarnz
Evet ise bir sonraki modle gemek iin retmeninize bavurunuz.

108
CEVAP ANAHTARLARI
RENME FAALYET-1N CEVAP ANAHTARI

1 A
2 B
3 B
4 C
5 000
6 P16F84
7 A,B
8 0
9 0.
10 00
11 C8
12 E4
13 C8
14 1
15 tekrar

RENME FAALYET-2NN CEVAP ANAHTARI

1 D
2 B
3 B
4 A
5 D
6 Y
7 Y
8 D
9 D
10 Y

CEVAP ANAHTARLARI

109
KAYNAKA

ALTINBAAK Orhan, Mikrodenetleyiciler ve PIC Programlama, stanbul,
2000.

BODUR Yaar, Adm Adm PICmicro Programlama, stanbul.

Microchip Technology Inc., PIC16F84 Data Sheet 18-Pin Enhanced
Flash/Eprom 8-bit Microcontrollers, 2001.

GNE Abdullah, Mikrodenetleyici Ders Notlar, Bursa, 2004.

http://www.antrak.org.tr


KAYNAKA

You might also like