Professional Documents
Culture Documents
ELEKTRK-ELEKTRONK TEKNOLOJS
MKRODENETLEYC PROGRAMLAMA
523EO0020
Ankara, 2012
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
ii
AIKLAMALAR
AIKLAMALAR
KOD
ALAN
DAL/MESLEK
MODLN ADI
523EO0020
Elektrik-Elektronik Teknolojisi
Otomasyon Sistemleri
Mikrodenetleyici Programlama
MODLN TANIMI
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
mikrodenetleyici programn
ARATIRMA
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.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
;=================================================================
=========
;
;
Revision History
;
;=================================================================
=========
;Rev: Date:
Reason:
;=================================================================
=========
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'
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'
EQU H'0007'
EQU H'0006'
EQU H'0005'
EQU H'0004'
EQU H'0003'
EQU H'0002'
EQU H'0001'
EQU H'0000'
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
0 x 000
ORG 0 x 004
programnn balang adresi
EQU
0 X 06
Heksadesimal adres
Heksadesimal sayy ifade eder.
Byte-ynlendirmeli komutlar
Bit-ynlendirmeli komutlar
Sabit ileyen komutlar
Kontrol komutlar
10
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
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
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
SUBWF REG1,1
Komuttan nce
REG1 = 3
W=2
C=?
Z=?
Komuttan sonra
REG1 = 1
W=2
C = 1, sonu pozitif
Z=0
19
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
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.
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 ;
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.
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
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
EQU
EQU.
EQU.
0x03
03h
h 03
b00001010
30
A
T
Metin editr olarak windowsun kendi NOTPAD program veya MPLAP ierisindeki
kendi editr de kullanlabilir. Resim 1.1de MPLAPnin ASM editr arabirimi grlyor.
31
32
33
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.
34
35
36
37
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
38
Osilatr tipi
WDTin aktif/pasif yapma
PORi (Power-On-Reset) aktif/pasif yapma
Kod korumay aktif/pasif yapma
39
_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.
W
kayts
Port B
40
tant.
PortByi sil.
PORTA giri
PORTB k
PORTA<0>=1
mi?
evet
PORTBdeki ledleri yak.
son
ekil 1.7: rnek progamn algoritmas
;====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.
SAYAC=SAYAC-1
SAYAC=0
m?
SAYAC,F
TEKRAR
PORTB,1
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.
SAYAC=SAYAC+1
W=SAYAC-W
hayr
STATUS<2>=0
m?
evet
PORTBnin 1.bitini 1 yap.
43
SAYAC,F
dtekrar says
SAYAC,W
STATUS,Z
TEKRAR
PORTB,1
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:
kullanlmaktadr.
16CXX,
16F8X
serisi
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
Komut
GOTO
RETURN
CALL
PCye veri yazan komutlar
DECFSZ
RETLW
RETFIE
INCFSZ
BTFSC
BTFSS
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.
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
M
N
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
49
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:
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
RETURN
ekil 1.16: Alt program kurgusu
51
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
TEKRAR
CALL
RLF
BTFSS
GOTO
GOTO
GECIKME
PORTB,F
STATUS,0
TEKRAR
BASLA
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
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
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
DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END
SAYAC2,F
DON2
SAYAC1,F
DON1
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
DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END
SAYAC2,F
DON2
SAYAC1,F
DON1
bitleri
sfrlamak
hE7 ; olmaldr.
verilen hex.asm
h18 ; olmaldr.
bitleri
terslemek iin
h18; olmaldr.
56
IORLW
h00
;W=(W OR h00)
STATUS,Z ;Sonu sfr m? (Z=1 mi?)
TEST_W ;hayr.Tekrar kontrol et.
.
;evet.Programn devam..
57
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
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
;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.
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
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).
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
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
61
62
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
bit 5:
bit 4:
bit 3:
bit 2:
bit 1:
bit 0:
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.
67
68
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
SWAPF STATUS_TEMP , W
STATUS
SWAPF
W_TEMP , F
tekrar ykle.
SWAPF W_TEMP , W
;Wye tekrar
;ykle.
70
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
TEST_PORTB
BTFSS
GOTO
MOVLW
MOVWF
GOTO
END
KESME
BCF
INTCON,1
MOVLW h00
MOVWF PORTA
RETFIE
END
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.
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:
bit 5:
bit 4:
bit 3:
bit 2-0:
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
Sayc iindeki saynn artmas iin gerekli saat pals iki kaynaktan alnabilir:
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 =
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
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.
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
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
;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
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.
_CONFIG
Bu ifadede
_CP_OFF
_WDT_ON
_ PWRT_ON
_RC_OSC
_HS_OSC)
SAYAC
DECFSZ
GOTO
RETURN
SAYAC,1
TEKRAR
TEKRAR
82
256 says
5V oluursa
Sayi
Vanalog oluur.
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.
83
84
85
ADCS1 ADCS0
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.
ADFM
AD sonu seim biti
0:Saa yanak
1:Sola yanak
PCFG3
PCFG2
PCFG1
PCFG0
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.
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.
87
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
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
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
2.
D) Sonlandrma
B) TRISA
C) STATUS
D) INTCON
4.
C) Program
3.
B) Atama
B) INTCON
C) TMR0
D) STATUS
B) OPTION_REG
C) STATUS
D) ADCON0
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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
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.
94
Daha nceden yazlp kaydedilmi .asm uzantl kaynak dosyas Browse ile
alr (Resim 2.2).
95
96
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
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
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
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
102
UYGULAMA FAALYET
UYGULAMA FAALYET
Yaptnz ve yapacanz bir mikrodenetleyici programn makine diline evirerek
ASM, HEX, LST, COD, ERROR dosyalarn inceleyiniz.
lem Basamaklar
neriler
Deerlendirme ltleri
Evet
Hayr
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)
A) 4
5.
D) PPT dosyas
4.
C) HEX dosyas
3.
B) LST dosyas
B) 177
C) 1
D) 7
B) LST dosyas
C) ASM dosyas
104
D) PJT dosyas
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.
22.
23.
24.
25.
26.
27.
28.
29.
30.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
106
Evet
Hayr
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
D
B
B
A
D
Y
Y
D
D
Y
108
KAYNAKA
KAYNAKA
http://www.antrak.org.tr
109