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.

NDEKLER
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
i

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

ii

AIKLAMALAR
AIKLAMALAR
KOD
ALAN
DAL/MESLEK
MODLN ADI

523EO0020
Elektrik-Elektronik Teknolojisi
Otomasyon Sistemleri
Mikrodenetleyici Programlama

MODLN TANIMI

Mikrodenetleyici programnn yazlmas ve derlenmesi ile ilgili


bilgi ve becerilerin kazandrld renme materyalidir.

SRE
N KOUL
YETERLK

MODLN AMACI

ETM RETM
ORTAMLARI VE
DONANIMLARI

LME VE
DEERLENDRME

40/32
Mikroilemci ve Mikrodenetleyiciler modln tamamlam
olmak.
Mikrodenetleyiciyi programlamak
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.
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
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.

iii

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

RENME FAALYET-1
AMA

RENME FAALYET-1

Uygun ortam salandnda kurulacak devre iin


eksiksiz olarak yapabileceksiniz.

mikrodenetleyici programn

ARATIRMA

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.

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
3

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
4

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
;

;=================================================================
=========
5

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

Register Definitions

;=================================================================
=========
W
EQU H'0000'
F
EQU H'0001'
;----- Register Files-----------------------------------------------------INDF
TMR0
PCL
STATUS
FSR
PORTA
PORTB
EEDATA
EEADR
PCLATH
INTCON
OPTION_REG
TRISA
TRISB
EECON1
EECON2

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

H'0000'
H'0001'
H'0002'
H'0003'
H'0004'
H'0005'
H'0006'
H'0008'
H'0009'
H'000A'
H'000B'
H'0081'
H'0085'
H'0086'
H'0088'
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
EEIE

EQU H'0007'
EQU H'0006'
6

T0IE
INTE
RBIE
T0IF
INTF
RBIF

EQU
EQU
EQU
EQU
EQU
EQU

H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
H'0000'

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


INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0

EQU H'0007'
EQU H'0006'
EQU H'0005'
EQU H'0004'
EQU H'0003'
EQU H'0002'
EQU H'0001'
EQU H'0000'

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


WRERR
WREN
WR
RD

EQU
EQU
EQU
EQU
EQU

H'0004'
H'0003'
H'0002'
H'0001'
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'
7

_WDT_ON
_WDT_OFF
_LP_OSC
_XT_OSC
_HS_OSC
_RC_OSC

EQU H'3FFF'
EQU H'3FFB'
EQU H'3FFC'
EQU H'3FFD'
EQU H'3FFE'
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

ORG 0 x 004
programnn balang adresi

; ilk program komutunun bellek adresi


; h004 adresi, PIC16F84 denetleyicisinin kesme alt

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.

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

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
10

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.

11

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
12

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
13

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.

14

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
15

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

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
17

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

F kayts

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

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

F kayts

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
19

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

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

21

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

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

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

24

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
25

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
26

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
27

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

(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.
29

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

0x03
03h
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
30

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
RETLW

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

31

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.

32

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

33

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.

34

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.

35

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
BCF

STATUS,5 ; Bank 1 seilir.


STATUS,5 ; Bank 0 seilir.

36

ekil 1.5: PIC 16F84 denetleyicisinin bank ve kayt yaps

37

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.).
PORTA
; PORTAy sfrla.
STATUS, 5 ; Bank 1e ge. nk TRISA bank1de.
h0F
; TRISAya yklemek iin deer hazrla.
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.
CLRF
BSF
MOVLW
MOVWF

2. rnek: PortAnn tamam giri, Port Bnin tamamn k


(PIC16F84de B portu 8 bitlik bir porttur.).

olarak kurulsun

PORTB
; PORTBy sfrla.
STATUS, RP0 ; Bank1e ge.nk TRISA ve TRISB bank1de.
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.
CLRF
BSF
CLRF

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.

38

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

39

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.
Port A

W
kayts

Port B

ekil 1.6: W kayts kullanm

40

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.
Bala
PIC16F84

tant.

PortByi sil.

PORTA giri
PORTB k

PORTA<0>=1
mi?

Tekrar test et.


hayr

evet
PORTBdeki ledleri yak.

son
ekil 1.7: rnek progamn algoritmas

imdi de program yazlsn.


41

;====led.asm======
LIST
INCLUDE

tanmlamalarn yapld
blm

P=16F84
P16F84.INC

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
GOTO
BSF

SAYAC=SAYAC-1

SAYAC=0
m?

SAYAC,F
TEKRAR
PORTB,1

Tekrar test et.


hayr

evet
PORTBnin 1.bitini 1 yap.
ekil 1.8: DECFSZ komutu ile yaplan sayacn algoritmas

42

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
SAYAC=h00
CLRF
SAYAC
TEKRAR
INCF
MOVLW
SUBWF
BTFSS
GOTO
BSF

SAYAC=SAYAC+1

We tekrar saysn ykle.

W=SAYAC-W

hayr
STATUS<2>=0
m?

Tekrar test et.

evet
PORTBnin 1.bitini 1 yap.

ekil 1.9: SUBWF komutu ile yaplan sayacn algoritmas

43

SAYAC,F
dtekrar says
SAYAC,W
STATUS,Z
TEKRAR
PORTB,1

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.

44

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


mikrodenetleyicilerde kullanlmaz.
Bit 6-5:

kullanlmaktadr.

16CXX,

16F8X

serisi

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.

45

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 saykl
2
2
2
2
1 (Kayt iindeki deer 0 deilse)
2 (Kayt iindeki deer 0 ise)
2
2
1 (Kayt iindeki deer 0 deilse)
2 (Kayt iindeki deer 0 ise)
1 (Kayt iindeki deer 0 deilse)
2 (Kayt iindeki deer 0 ise)
1 (Kayt iindeki deer 1 deilse)
2 (Kayt iindeki deer 1 ise)

Komut
GOTO
RETURN
CALL
PCye veri yazan komutlar
DECFSZ
RETLW
RETFIE
INCFSZ
BTFSC
BTFSS

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.
SAYAC=hFF=d255

Bu yol GOTO
komutu ile
icra edilir ve
254 defa
tekrarlanr.
Sonuta 2x254
tane komut
saykl eker.

SAYAC=SAYAC-1

SAYAC=0
m?

hayr
evet

RETURN
ekil 1.11: Tek dnglk zaman gecikmesi algoritmas

46

GECIKME MOVLW
SAY

hFF
MOVWF
DECFSZ
GOTO
RETURN

;1 saykl
SAYAC
;1 saykl
SAYAC,F ;1x254+2 saykl
SAY
;2x254 saykl
;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.

47

GECIKME
SAYAC1=hFF=d255

SAYAC2= hFF

SAYAC2=SAYAC2-1

SAYAC2=0
m?

hayr

evet
evet
SAYAC1=SAYAC1-1

hayr

SAYAC1=0
m?

evet
RETURN
ekil 1.12:ift dnglk zaman gecikmesi algoritmas

GECKME alt programnn assembly program yazlp geen zaman bulsun.

M
N

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

Hatta ok hassas bir zamandan bahsedilmiyorsa 5M deeri de ihmal edilebilir. Eer M=N
alnrsa TSS=3M2
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=3M2=3x2552=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=3M2 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=3M2 , 100000=3M2 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.

49

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

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.
Ana program
PC=>TOS (Yn) ve
SAYAC adresi=>PC gerekleir.

CALL SAYAC

SAYAC

Alt program

TOS (Yn) =>PC yaplarak


Ana programa dnlr.

RETURN
ekil 1.16: Alt program kurgusu

51

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
INCLUDE
SAYAC1
SAYAC2

P=16F84
P16F84.INC
EQU
h0C
EQU
h0D
CLRF
PORTB
BSF
STATUS,5
CLRF
TRISB
BCF
STATUS,5

tanmlamalarn yapld
blm
B portu k olarak
ayarland.

BASLA
BCF
MOVLW
MOVWF

STATUS,0
h01
PORTB

;Elde biti sfrland.


;ilk deeri ykle ve
;B portundan kar.

TEKRAR
CALL
RLF
BTFSS
GOTO
GOTO

GECIKME
PORTB,F
STATUS,0
TEKRAR
BASLA

;2.deer iin bekle.


;sola kaydr
;C=1 mi?
;hayr.TEKRARa dallan.
;evet.BASLAya dallan.
52

Ana
Program

GECIKME
MOVLW
MOVWF SAYAC1

hFF

DON1
MOVLW
MOVWF

hFF
SAYAC2

GECKME altprogram.

DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DON2
SAYAC1,F
DON1

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
SAYAC2 EQU h0D
CLRF
PORTB
BSF
STATUS,5
CLRF
TRISB
BCF
STATUS,5
BCF
STATUS,0
MOVLW h01
MOVWF PORTB

tanmlamalarn yapld
blm
B portu k olarak
ayarland.
;Elde biti sfrland.
;ilk deeri ykle ve
;B portundan kar.

SOL
;Yeni deer iin bekle.
;sola kaydr
;PORB<7>=1 mi?
;hayr.SOLa dallan.

CALL
RLF
BTFSS
GOTO

GECIKME
PORTB,F
PORTB,7
SOL

CALL
RRF

GECIKME ;evet. Yeni deer iin bekle.


PORTB,F ; saa kaydr.
53

SAG

BTFSS
GOTO
GOTO

PORTB,0
SAG
SOL

; PORB<0>=1 mi?
;hayr.SAGa dallan.
;evet.SOLa dallan,

GECIKME
MOVLW hFF
MOVWF SAYAC1
DON1
MOVLW hFF
MOVWF SAYAC2

GECKME alt program

DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DON2
SAYAC1,F
DON1

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
SAYAC2
EQU h0D
CLRF PORTB
BSF STATUS,5
CLRF TRISB
BCF
STATUS,5
MOVLW
h0F
MOVWF
PORTB
TERSLE
CALL GECIKME
COMF PORTB,F
GOTO TERSLE

54

tanmlamalarn yapld
blm
B portu k olarak
ayarland.
;ilk deeri ykle ve
;B portundan kar.
;Yeni deer iin bekle.
;PORTByi tersle.
; saa kaydr.

GECIKME
MOVLW
MOVWF SAYAC1

hFF

DON1
MOVLW
MOVWF

hFF
SAYAC2

GECIKME alt program

DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DON2
SAYAC1,F
DON1

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
(maskelemek) iin kullanlr. Burada sonu daima W kaytsndadr.

bitleri

sfrlamak

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
programnda da bu komutun kullanm grlebilir.
55

verilen hex.asm

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
kullanlr. Burada sonu daima W kaytsndadr.

bitleri

terslemek iin

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.

56

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
BTFSS
GOTO
DEVAM

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

57

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
ADDLW
C=0da kalr.

h25
hA3

;W= h25
;W= h25+ hA3= hC8 olur. Tama olmandan

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
MOVWF
MOVLW
ADDWF

hDD
;W= hDD
TOPLAM ;TOPLAM= hDD
h7A
;W= h7A
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.
58

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
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
TOPLA MOVF
ADDWF
MOVWF
BTFSC
INCF
MOVF
ADDWF
MOVWF

hA5
AL
h33
AH
hDE
BL
h8E
BH
AL,0
BL,0
CL
STATUS,0
BH,1
AH,0
BH,0
CH

;W= hA5
;AL= hA5
; W= h33
; AH= h33
; W= hDE
; BL= hDE
; W= h8E
; BH= h8E
;W=AL

saylar kaytlara ykleniyor.

;W=BL+W(AL)
;Sonucun dk bayt
;C=0 mi?
;Hayr(C=1) BH 1 arttr.
;Evet. W=AH
;W=BH+W(AH)
;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
SUBLW

h25
hA3

;W= h25
;W= hA3-h25 = h7E olur.
59

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.
h40
FARK
h35
FARK,1

MOVLW
MOVWF
MOVLW
SUBWF

;W= h40
;FARK= h40
;W= h35
;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
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
CIKAR MOVF
SUBWF

hA5
AL
h33
AH
hDE
BL
h8E
BH
AL,0
BL,0

;W= hA5
;AL= hA5
; W= h33
; AH= h33
; W= hDE
; BL= hDE
; W= h8E
; BH= h8E
;W=AL
;W=BL-W(AL)
60

saylar kaytlara ykleniyor.

MOVWF
BTFSS
DECF
MOVF
SUBWF
MOVWF

CL
STATUS,0
BH,1
AH,0
BH,0
CH

;Sonucun dk bayt
;C=1 mi?
;Hayr (C=0) BH 1 Azalt.
;Evet. W=AH
;W=BH-W(AH)
;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

61

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
(211=2KB). 1KB bellei olanlarda (16F84) ise 10 bit yeterlidir (210=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

62

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
ANDLW
CALL
MOVWF
INCF
CALL
GOTO

SAYAC,W
b00001111
HEX_7SEGMENT
PORTB
SAYAC,F
GECIKME
TEKRAR

HEX_7SEGMENT
ADDWF PCL,F
RETLW h3F
RETLW h06
RETLW h5B
RETLW h4F
RETLW h66
RETLW h6D
RETLW h7D
RETLW h07
RETLW h7F
RETLW h6F
RETLW h77
RETLW h7C
RETLW h39
RETLW h5E
RETLW h79
RETLW h71

tablodan deer al ve
gecikme altprogramna
dallan.

;PCL= W(SAYAC)
;0
;1
;2
;3
;4
;5
;6
;7
hexadesimalden 7 segment
;8
displaye dnm tablosu
;9
;A
;B
;C
;D
;E
;F
63

GECIKME
MOVLW
MOVWF

hFF
SAYAC1

MOVLW
MOVWF

hFF
SAYAC2

DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END

SAYAC2,F
DON2
SAYAC1,F
DON1

DON1
GECKME altprogram

DON2

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.

64

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

Kesme_altprogram

Altprogram
TOS(Yn) =>PC yaplarak
ana programa dnlr.
RETFIE
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/Wx
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.
65

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.
INTF: RB0/INT hric kesme durum bayra.
1=RB0/INT kesmesi meydana gelmitir.
0=RB0/INT kesmesi meydana gelmemitir.
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.

bit 1:

bit 0:

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

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

67

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

68

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.

69

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.
;
; Kesme altprogram
; buraya yazlmal.
; STATUS_TEMP ieriini yeniden

SWAPF STATUS_TEMP , W

;SWAPla ve Wye ykle.


MOVWF

STATUS

; Wyi STATUS Registerine ykle.

SWAPF

W_TEMP , F

; W_TEMP ieriini SWAPla sonucu


;W_TEMPe

tekrar ykle.

; W_TEMP ieriini SWAPla sonucu

SWAPF W_TEMP , W

;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:

70

ekil 1.22: 2. rnekteki programn algoritmas

imdi de asm program yazlsn.


;====kesme.asm======
LIST
INCLUDE
ORG h000
GOTO BASLA
ORG h004
GOTO KESME

P=16F84
P16F84.INC

71

tanmlamalarn yapld
blm

BASLA

BSF
STATUS,5
CLRF TRISA
MOVLW
hFF
MOVWF
TRISB
MOVLW
b10111111
MOVWF
OPTION_REG
BCF
STATUS,5
CLRF
PORTA
BCF
INTCON,1
BSF
INTCON,7
BSF
INTCON,4

A portu k, B portu giri olarak


ayarland.
;den kenarda kesme pals ,
;gelecek ekilde OPTION_REGi kur.
;Bank0a ge.
;A portunu sfrla.
;INF bayran sil.
;Global kesmeyi etkinletir.
;Hric kesmeyi aktifletir.

TEST_PORTB
BTFSS
GOTO
MOVLW
MOVWF
GOTO
END

PORTB,0 ;PORTA<0>=1 mi?


TEST_PORTA
;hayr.Tekrar test et.
hFF
;evet. W=hff ykle.
PORTA
;A portundaki tm ledleri yak.
TEST_PORTB

KESME
BCF

INTCON,1
MOVLW h00
MOVWF PORTA

;INTF bayran sil.


;W=h00 ykle.
;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 )

72

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
RBPU

R/W-1
INTEDG

R/W-1 R/W-1
T0CS T0SE

R/W-1
PSA

R/W-1
PS2

R/W-1 R/W-1
PS1
PS0

bit7

bit0
ekil 1.23: Option kayts ierii

bit 7:

bit 6:

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

bit 3:

bit 2-0:

PSA: Frekans blc seim biti.


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

Bit 2-0 Deeri


000
001
010
011
100
101
110
111

TMR0 Oran
1:2
1:4
1:8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256

WDT Oran
1:1
1:2
1:4
1:8
1 : 16
1 : 32
1 : 64
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).
74

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 (fosc)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:
Fkomut= fosc / 4
Tkomut = 1 / Fkomut
TMR0 sayma aral zaman= Tkomut 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

Kesme gecikmesi =

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


S olur.
fosc / 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:
75

TMR0 ilk deeri = 256- [(Kesme gecikmesi x fosc ) / 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.
Fkomut= fosc / 4 = 4Mhz / 4 = 1 Mhz
Tkomut = 1 / Fkomut = 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 =
fosc / 4
(256-0) x 2
= 512 S olur.

Kesme gecikmesi =
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 fosc ) / 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.

76

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
CLRF
BSF
CLRWDT
MOVLW
MOVWF
BCF

STATUS RP0
TMR0
STATUS, RP0
bxxxx1xxx
OPTION
STATUS, RP0

; Bank 0a ge.
; TMR0 ve prescaler silinir.
; Bank 1e ge.
; WDT silinir.
; Yeni prescaler WDT iin seilir.
; OPTION kaytsna yaz.
; 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:

77

PortB pull-up
direnleri
geersiz.

Harici kesme
ykselen kenarda
Prescaler (111)
TMR0
oran(1/256)

1 1 0 1 0 1 1 1
Option
kayts

Prescaler
TMR0'a
atanr.

TMR0 sinyal
kayna dhil
komut saykl

TMR0'n say art harici


sinyalin den kenarnda.
( Burada kullanlmyor.)

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:
Fkomut= fosc / 4 = 4Mhz / 4 = 1 Mhz
Tkomut = 1 / Fkomut = 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.

78

ekil 1.26: Programn ak diyagram

imdi de algoritma programa dklsn:


LIST P=16F84
INCLUDE P16F84.INC
BSF
STATUS,5
CLRF
TRISB
CLRWDT
MOVLW
b11010111
MOVWF
BCF
CLRF
PALS
BSF
CALL
BCF
CALL
GOTO
GECKME CLRF
TEST_BIT BTFSS
GOTO
RETURN
END

;Bank1e ge.
;B portunun tm k.
; WDT ve prescalar sil.
;TMR0, yeni prescalar deerini ve sinyal
;kaynan se ve
OPTION_REG ;OPTION kaytsna yaz.
STATUS,5 ;Bank0a ge.
PORTB
;B portunun tm ularn 0 yap.
PORTB,1 ;PortB 1.bit lojik 1 yap.
GECIKME ;GECIKME altprogramn ar.
PORTB,1 ; PortB 1.bit lojik 0 yap.
GECKME ;GECIKME altprogramn ar.
PALS
TMR0
TMR0,6
TEST_BIT

79

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

_CONFIG
Bu ifadede
_CP_OFF
_WDT_ON
_ PWRT_ON
_RC_OSC
_HS_OSC)

_CP_OFF & _WDT_ON &_ PWRT_ON & _RC_OSC


;kod koruma yok.
;WDT aktif
;Power-On-Reset var.
;RC osilatr kullnlyor. (Dier seenekler _LP_OSC, _XT_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.
81

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

DECFSZ
GOTO
RETURN

SAYAC,1
TEKRAR

TEKRAR

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,

82

256 says

5V oluursa

Sayi

Vanalog oluur.

Sayi x 5V = 256 x Vanalog

Sayi=(256x Vanalog )/5 , Vanalog = (Sayi x 5)/ 256 , Saybek =256 - Sayi
formlleri bulunur.
rnein, 0.5 Vluk analog gerilim elde etmek iin GECIKME altprogramnda SAYAC
kaytsna yklenecek i ve bekleme saylar bulunsun.
Sayi=(256x Vanalog )/5=(256 x 0.5)/5=25.6=26 =h1Ave
Saybek =256 - Sayi =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.
Sayi=(256x Vanalog )/5=(256 x 2)/5=102.4= 103 = h67ve
Saybek =256 - Sayi =256-103=153=h99 olur.

ekil 1.29: rnek progamn algoritmas

83

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

84

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.

85

ADCS1 ADCS0

CHS2 CHS1 CHS0

Osc modu;
Analog kanal
00:Fosc/2
seim bitleri
01: Fosc/8
( 000:AN0111:AN7)
10: Fosc/32
11: FRC

GO/DONE 1=Dnm
balad
0=Bitti

ADON
1=AD alyor
0= AD kapal.

ekil 1.31: ADCON1 kayts

ADFM
AD sonu seim biti
0:Saa yanak
1:Sola yanak

PCFG3

PCFG2

PCFG1

PCFG0

AD PORT konfigrasyon bitleri


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


86

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.

87

ekil 1.34: 16F877nin kayt haritas

88

;**********************************************************
;* 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

89

UYGULAMA FAALYET
UYGULAMA FAALYET
8 ledin portlar ile kontroln yapnz.

lem Basamaklar

neriler

B Portuna bal 8 led , A portunun 0.bitine Ak diyagram sembollerini amacna


bal bir butona basldnda birbirine
uygun kullannz.
eklenerek aadaki gibi 1 sn. arayla sola Programn balk ksmnda gerekli
doru kayarak yansn.
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 ak diyagramn iziniz.
program dizininde deildir).
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.

90

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.

91

LME VE DEERLENDRME
LME VE DEERLENDRME

Aadaki sorular dikkatlice okuyunuz ve doru seenei iaretleyiniz.


1.

LIST ve INCLUDE ifadeleri bir assabmler programn hangi blmnde bulunur?


A) Balk

2.

D) Sonlandrma

B) TRISA

C) STATUS

D) INTCON

Kesme bit ve bayraklarn iinde barndran kayt aadakilerden hangisidir?


A) OPTION_REG

4.

C) Program

A Portu ynlendirme kayts aadakilerden hangisidir?


A) PORTA

3.

B) Atama

B) INTCON

C) TMR0

D) STATUS

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

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.

93

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

ARATIRMA

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.

94

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

95

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.

96

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.

97

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
98

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

99

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
100

C
DC
DON1
DON2
EEADR
EECON1
EECON2
EEDATA
EEIE
EEIF
F
FSR
GECIKME
GIE
INDF
INTCON
INTE
INTEDG
INTF
IRP
NOT_PD
NOT_RBPU
NOT_TO
OPTION_REG
PCL
PCLATH
PORTA
PORTB
PS0
PS1
PS2
PSA
RBIE
RBIF
RD
RP0
RP1
SAYAC1
SAYAC2
STATUS
T0CS
T0IE
T0IF
T0SE
TERSLE
TMR0
TRISA

00000000
00000001
0000000B
0000000D
00000009
00000088
00000089
00000008
00000006
00000004
00000001
00000004
00000009
00000007
00000000
0000000B
00000004
00000006
00000001
00000007
00000003
00000007
00000004
00000081
00000002
0000000A
00000005
00000006
00000000
00000001
00000002
00000003
00000003
00000000
00000000
00000005
00000006
0000000C
0000000D
00000003
00000005
00000005
00000002
00000004
00000006
00000001
00000085
101

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

SYMBOL TABLE
LABEL

VALUE

_CP_OFF
_CP_ON
_HS_OSC
_LP_OSC
_PWRTE_OFF
_PWRTE_ON
_RC_OSC
_WDT_OFF
_WDT_ON
_XT_OSC
__16F84

00003FFF
0000000F
00003FFE
00003FFC
00003FFF
00003FF7
00003FFF
00003FFB
00003FFF
00003FFD
00000001

PAGE 3

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

102

UYGULAMA FAALYET
UYGULAMA FAALYET
Yaptnz ve yapacanz bir mikrodenetleyici programn makine diline evirerek
ASM, HEX, LST, COD, ERROR dosyalarn inceleyiniz.

lem Basamaklar

neriler

Mikrodenetleyici derleme programn


Derleme yapmadan nce mutlaka
(MPASM) bilgisayarnza kurunuz.
MPASM programnda kullanacanz
MPASM program ayarlarn yapnz.
denetleyici tipi, k format ayarlarn
Uygulama faaliyetleri-1 Uygulamalar
yapnz.
blmnde yazm olduunuz program
Derleme sonucunda hata olutuysa
derleme programnda anz.
btn hatalar birden bulmak yerine, tek
Komut dilinde yazlm programnz
tek bulmaya alnz ve bir hatay
derleyerek makine diline heksadesimal
bulduktan sonra o hatay giderip
kodlara eviriniz (HEX dosyas).
program tekrar derleyiniz. nk bir
Eer derleme sonucunda hatalar olutuysa
hata baka hatalarn nedeni olabilir.
hata dosyasn ap hatalar gideriniz.
LST dosyasn ap denetleyicinin bellek
durumunu (bo ve dolu bellek alanlar)
reniniz.
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

Program ak diyagramn izdiniz mi?


Programlama dilini sediniz mi?
Programlama dilinin yazm kurallarn bildiniz mi?
Mikrodenetleyicinin komut listesini ve komut yazlm kuraln ve
grevlerini bildiniz mi?
5. Program derlediniz mi?
6. Programlama kart ile mikrodenetleyiciye program yazdnz m?

1.
2.
3.
4.

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.

103

LME VE DEERLENDRME
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

2.

B) ERR

C) PJT

D) ASM

B) ASM dosyasnn
bulunduu dizin

C) MPASM
program dizininde

D) C (sabit disk)

Aadaki hata mesaj ekranna gre ka assembly satrnda hata var?

A) 4
5.

D) PPT dosyas

MPASM ile derleme sonucu oluan dosyalar hangi dizinde bulunur?


A) Belgelerim

4.

C) HEX dosyas

MPASM ile derleme sonucu oluan hata dosyas aadakilerden hangisidir?


A) LST

3.

B) LST dosyas

B) 177

C) 1

D) 7

Aadaki dosyalardan hangisini bir metin editr ile ap programmz hakknda


bilgi alamayz?
A) ERR dosyas

B) LST dosyas

C) ASM dosyas

104

D) PJT dosyas

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.

105

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

Deerlendirme ltleri

21.

Ak diyagram sembollerini bir problemin zmnde


kullanabildiniz mi?
Mikrodenetleyici assembler program ve yazm kurallarna
uygun program yazabildiniz mi?
Mikrodenetleyici komutlarnn ilevlerini bildiniz mi?
Programda say ve karakterleri kullanabildiniz mi?
Heksadesimal saylar kullanabildiniz mi?
Binary saylar kullanabildiniz mi?
Desimal saylar kullanabildiniz mi?
ASCII karakterler kullanabildiniz mi?
Mikrodenetleyici iin gerekli yazlmn kullandnz m?
MPASM derleyici programn kurabildiniz mi?
MPASM
programnn kullanacanz denetleyiciye gre
ayarlarn yapabildiniz mi?
Mikrodenetleyici programn yazdnz m?
Portlarn giri ve k olarak ynlendirebildiniz mi?
Konfigrasyon bitlerinin yazabildiniz mi?
W kaytsnn kullanabildiniz mi?
Bitleri test ederek ilem yapabildiniz mi?
Status kaytsn kullanabildiniz mi?
Zaman geciktirme dngleri dzenleyebildiniz mi?
Bit pozisyonlarn sola/saa kaydrma, tersleme ilemlerini
yapabildiniz mi?
stenen bitleri sfrlamak, bire evirmek ve terslemek ilemlerini
yapabildiniz mi?
Bir bytlk iki veriyi birbiriyle veya 0 ile karlatrabildiniz mi?

22.
23.
24.
25.
26.
27.
28.
29.
30.

8 ve 16 bitlik toplama yapabildiniz mi?


8 ve 16 bitlik karma yapabildiniz mi?
evrim tablolarn kullanabildiniz mi?
INTCON kaytsn kullanabildiniz mi?
Kesme kaynaklarn bildiniz mi?
Kesme alt programlarn dzenlenleyebildiniz mi?
TMR0 ve WDT sayclarn kullanabildiniz mi?
Option kaytsn kullanabildiniz mi?
Mikrodenetleyici ile dijital /analog evirmesini yapabildiniz mi?

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.

106

Evet

Hayr

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.

107

CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
RENME FAALYET-1N CEVAP ANAHTARI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

A
B
B
C
000
P16F84
A,B
0
0.
00
C8
E4
C8
1
tekrar

RENME FAALYET-2NN CEVAP ANAHTARI


1
2
3
4
5
6
7
8
9
10

D
B
B
A
D
Y
Y
D
D
Y

108

KAYNAKA
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

109

You might also like