Professional Documents
Culture Documents
MEGEP
(MESLEK ETM VE RETM SSTEMNN
GLENDRLMES PROJES)
MKRODENETLEYC PROGRAMLAMA
ANKARA 2006
Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ile
onaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlarnda kademeli olarak
yaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarnda
amalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retim
materyalleridir (Ders Notlardr).
NDEKLER
AIKLAMALAR ...................................................................................................................iii
GR ....................................................................................................................................... 1
RENME FAALYET-1 ..................................................................................................... 3
1. MKRODENETLEYC PROGRAMI YAZMA................................................................. 3
1.1. Ak Diyagram Oluturma ve Sembolleri ..................................................................... 3
1.2. Mikrodenetleyici Assembler Program ve Yazm Kurallar ........................................ 4
1.2.1. Noktal Virgl........................................................................................................ 5
1.2.2. Balk ..................................................................................................................... 5
1.3. Mikrodenetleyici Komutlar........................................................................................ 11
1.3.1. Byte Ynlendirmeli Komutlar ............................................................................. 12
1.3.2. Bit Ynlendirmeli Komutlar................................................................................ 22
1.3.3. Sabit leyen Komutlar ........................................................................................ 24
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............................................................................................................ 65
1.6.17. Donanm Sayclar ............................................................................................ 72
UYGULAMA FAALYET .............................................................................................. 91
LME VE DEERLENDRME .................................................................................... 92
RENME FAALYET-2 ................................................................................................... 94
2. MKRODENETLEYC KONTROL PROGRAMININ MAKNE DLNE EVRLMES
................................................................................................................................................ 94
2.1. Programn Derlenmesi ................................................................................................ 95
i
ii
AIKLAMALAR
AIKLAMALAR
KOD
ALAN
DAL/MESLEK
MODLN ADI
MODLN TANIMI
SRE
N KOUL
YETERLK
MODLN AMACI
523EO0020
Elektrik Elektronik Teknolojisi
Mikrodenetleyiciler
Mikrodenetleyici Programlama
Mikrodenetleyici programnn yazlmas ve derlenmesi
ile ilgili bilgi ve becerilerin kazandrld renme
materyalidir.
40/32
Mikroilemci ve mikrodenetleyiciler modln
tamamlam olmak.
Mikrodenetleyici programnn yazlmas ve derlenmesi
ile ilgili yntem ve teknikleri renmek.
Genel Ama
Bu modl ile eitim retim ortamlar ve
donannmlarnda belirtilen ortam salandnda , yaplacak
ileme gre gerekli teknikleri kullanarak mikrodenetleyici
programn hatasz yapabileceksiniz.
Amalar
Kurulacak devre iin mikrodenetleyici programlama
yazlmn eksiksiz olarak kullanabileceksiniz.
Yaplan
mikrodenetleyici
(heksadesimal kodlara)
evirebileceksiniz.
programn
makine
diline hatasz olarak
ETM RETM
ORTAMLARI VE
DONANIMLARI
LME VE
DEERLENDRME
iii
iv
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 ok 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 mikroilemcilerin yerini almtr.
Gnmzde Texas ins. , NSC, Atmel ve Microchip gibi birok firma mikrodenetleyici
retmekte ve bunlar donanm tasarmclarnn kullanmna sunmaktadr. Biz, bundan nceki
modldeki olduu gibi, bu modlde de Microchip firmasnn rettii mikrodenetleyicileri
anlatacaz. Konular genelde bu 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
Bu faaliyet ncesinde yapmanz gereken ncelikli aratrmalar unlardr:
1. MKRODENETLEYC PROGRAMI
YAZMA
Assembly dili bir mikrodenetleyiciden (bundan sonra sadece denetleyici veya PIC
olarak bahsedeceiz) 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 ). imdi bir
denetleyicinin assembly program yapmadan nce , karlacak ak diyagramnda kullanlan
sembolleri grelim.
Balang ve sonlandrc
Hazrlk
lem
Alt program.
ekil 1.1: Ak diyagram sembolleri
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 kullanrz. Assembler
tarafndan tannmas iin program giriinde tanmlanr.
rnein PORTB, STATUS ve TRISB kaytlarn kullanan bir program yazdnz
varsayalm. Eer programnzn balk ksmnda
INCLUDE
P16F84.INC
PORTB EQU
h06
STATUS
TRISB
h03
h86
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:
;
;
;
;
;
;=================================================================
=========
;
;
Revision History
;
;=================================================================
=========
;Rev: Date:
Reason:
;
;
Verify Processor
;=================================================================
=========
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
H'0000'
H'0001'
H'0002'
H'0003'
H'0004'
H'0005'
H'0006'
H'0008'
H'0009'
H'000A'
H'000B'
EQU
EQU
EQU
EQU
EQU
H'0081'
H'0085'
H'0086'
H'0088'
H'0089'
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
7
C
EQU H'0000'
;----- INTCON Bits -------------------------------------------------------GIE
EEIE
T0IE
INTE
RBIE
T0IF
INTF
RBIF
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
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
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
;
8
;=================================================================
=========
_CP_ON
EQU H'000F'
_CP_OFF
EQU H'3FFF'
_PWRTE_ON
EQU H'3FF7'
_PWRTE_OFF
EQU H'3FFF'
_WDT_ON
EQU H'3FFF'
_WDT_OFF
EQU H'3FFB'
_LP_OSC
EQU H'3FFC'
_XT_OSC
EQU H'3FFD'
_HS_OSC
EQU H'3FFE'
_RC_OSC
EQU H'3FFF'
LIST
1.2.3. Sabitler
PIC assembly dilinde heksadesimal saylar birer sabittir. Sabitler MOVLW ve baz
mantksal ve aritmetik ilem komutlarnda kullanlrlar.
Etiket
Komut
START MOVLW
0 X 02
Sabit
0 x 000
ORG
0 x 004
EQU
0 X 06
Heksadesimal adres
Heksadesimal sayy ifade eder
Byte-ynlendirmeli komutlar.
Bit-ynlendirmeli komutlar.
Kontrol komutlar.
11
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.
ANDWF
Wyi f ile mantksal ANDle.
Dizim:
[etiket] ANDWF f,d
Operandlar: 0f127
d[0,1]
lem:
(W).AND.(f) (hedef)
12
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 ediniz.
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;
SAY = h00
Z
=1
CLRW
W Kaytsn Sil.
Dizim:
[etiket] CLRW
Operandlar:
Yok
lem:
00h (W) 1 Z
13
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 ediniz.
test = h13=b0001 0011
terslenirse; b1110 1100=hEC ve
test = h13
W= hEC
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
14
olur.
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 ediniz.
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.
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,
15
programn devam
16
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 ediniz.
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
17
Saat pals:
1
rnek:
MOVF FSR, 0
Komuttan sonra;
d=0 olduundan sonucun Wde olduuna dikkat ediniz.
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 ediniz.
OPTION = h4F
W = h4F
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.
18
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.
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.
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
19
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
rnek 1:
SUBWF REG1,1
Komuttan nce;
REG1 = 3
W=2
C=?
Z=?
Komuttan sonra;
REG1 = 1
W=2
C = 1, sonu pozitif
Z=0
rnek 2: Komuttan nce;
REG1 = 2
W=2
C =?
Z=?
Komuttan sonra;
REG1 = 0
W=2
C = 1,sonu sfr
Z=1
rnek 3: Komuttan nce;
REG1 = 1
W=2
C =?
Z=?
Komuttan sonra;
REG1 = FF
W=2
C = 0,sonu negatif
Z=1
20
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.
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
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)
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.
23
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 edin.
Hafza alan (Bayt):
1
Saat palsi:
1
rnek:
ADDLW h15
Komuttan nce;
W = h10
Komuttan sonra;
W = h25 olur.
24
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 ediniz.
Tanm:W kaytsnn ierii 8-bitlik sabit k ile ORlanr. Sonu, W kaytsna geri konur.
Hafza alan (Bayt): 1
Saat pals:
1
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 ediniz.
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 ediniz.
25
C = 0, sonu negatif
Z=1
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 ediniz.
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.
Tanm: Altprogram arr. lk olarak, geri-dn adresi (PC+1) yna itilir. Onbir bitlik
altprogramn balang adresi , PC bitleri <10:0> ierisine yklenir. PCn st bitleri
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 baknz.
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
28
lem:
k (PC<10:0>)
(PCLATH <4:3>) (PC<12:11>)
Etkilenen bayraklar:
Yok
Kodlama: 10 1kkk kkkk kkkk
Tanm: GOTO, koulsuz bir sapma komutudur. K nn 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
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 kullanacaz.
b00001010
30
d 15
A
T
31
32
33
Source File Name ile derlenecek ASM uzantl kaynak dosya seilir. Bunun
iin Browse tklanarak kaynak dosya seilir.
34
36
37
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.
rnek 2: PortAnn tamam giri, Port Bnin tamamn k olarak kuralm (PIC16F84de
B portu 8 bitlik bir porttur.)
CLRF
BSF
CLRF
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.
38
Bala
;=====yak.asm====
LIST=16F84
LIST P=16F84
PortByi sil.
CLRF
BSF
Bank1e ge.
PORTB
STATUS, RP0
PORTByi k olarak
ynlendir.
CLRF TRISB
Bank 0a ge.
BCF STATUS, 5
PORTB<1>=1 yap.
BSF PORTB,1
END
son
Osilatr tipini ,
39
gibi
PIC
_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.
Port A
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
41
tanmlamalarn yapld
blm
CLRF
PORTB
BSF
STATUS,5
A portu giri, B portu k olarak CLRF
TRISB
ayarland.
MOVLW hFF
MOVWF TRISA
BCF
STATUS,5
TEST_PORTA
BTFSS
PORTA,0
; PORTA<0>=1 mi?
GOTO
TEST_PORTA
; hayr.Tekrar test et.
MOVLW hFF
; evet. W=hff ykle.
MOVWF PORTB
; B portundaki tm ledleri yak.
SON
PIC16F84de duraklama komutu olmad
GOTO
SON
iin burada yazlm ile sonsuz dng
END
oluturup PICi aldatyoruz. RESET
olana kadar PIC sonsuz dngde kalr.
SAYAC=SAYAC-1
SAYAC=0
m?
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 komutunu inceleyiniz.
Zaman geciktirme dngleri konusunda saya kullanarak yaplan dngleri
inceleyiniz.
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.
44
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.bit in g reseti durumundaki lojik deeri 1dir.
Bit 7:
kullanlmaktadr.
16CXX,
16F8X
serisi
PIC16F84te sadece bank 0 ve bank1 bulunduu iin bank seimini sadece RP0 bitini
kullanarak yaparz. 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 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)
RETLW
RETFIE
INCFSZ
BTFSC
BTFSS
SAYAC=SAYAC-1
SAYAC=0
m?
hayr
Bu yol GOTO
komutu ile
icra edilir ve
254 defa
tekrarlanr.
Sonuta 2x254
tane komut
saykl eker.
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
SAYAC1=SAYAC1-1
hayr
SAYAC1=0
m?
evet
RETURN
M
N
48
sadelemi
forml
kullanrsak;
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. imdide istenen bir
gecikme deeri iin sayalara yklenecek deerin nasl bulunacan grelim. rnein 2
dngl bir gecikme ile 40mSlik bir zaman gecikmesi yapmak iin kaytlara hangi
deerleri ykleyeceimizi bulalm.Kolaylk bakmndan saya deerlerinin ayn say ile
ykleyelim.(PIC 16F84in osc frekans 4Mhz kabul edilecek.) zm: 40mS=40000S
yapar. Bu da dhil komut saykl sresi 1S olan bir PIC iin TSS=40000yapar. TSS=3M2 ,
40000=3M2 ve M=(4000/3=116 desimal deeri bulunur.
Eer PICimizin 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 yazarsak;
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
girerseniz 100X50 saniye yani 5000 saniye elde edersiniz 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
50
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.
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 altprogramn almasn ematik olarak ekil 1.16' daki gibi gsterebiliriz;
Ana program
PC=>TOS (Yn) ve
SAYAC adresi=>PC gerekleir.
CALL SAYAC
SAYAC
Altprogram
RETURN
ekil 1.16: Altprogram kurgusu
51
52
;====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
Ana
Program
TEKRAR
CALL
RLF
BTFSS
GOTO
GOTO
GECIKME
PORTB,F
STATUS,0
TEKRAR
BASLA
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
;====karaimek.asm======
LIST
P=16F84
INCLUDE P16F84.INC
SAYAC1 EQU h0C
tanmlamalarn yapld
SAYAC2 EQU h0D
blm
CLRF
PORTB
BSF
STATUS,5
B portu k olarak
CLRF
TRISB
ayarland.
BCF
STATUS,5
BCF
STATUS,0
;Elde biti sfrland.
MOVLW h01
;ilk deeri ykle ve
MOVWF PORTB
;B portundan kar.
SOL
CALL
GECIKME ;Yeni deer iin bekle.
RLF
PORTB,F ;sola kaydr
BTFSS
PORTB,7 ;PORB<7>=1 mi?
GOTO
SOL
;hayr.SOLa dallan.
SAG
CALL
RRF
BTFSS
GOTO
GOTO
GECIKME
PORTB,F
PORTB,0
SAG
SOL
MOVLW
MOVWF
hFF
SAYAC1
GECIKME
DON1
MOVLW hFF
MOVWF SAYAC2
GECKME altprogram.
DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END
SAYAC2,F
DON2
SAYAC1,F
DON1
rnek: PORTBye bal 8 ledleri dnml olarak ilk nce ilk 4 bitindeki, sonrada son 4
bitindeki ledleri yakan program yazalm.
;====TERSLE.asm======
LIST
P=16F84
INCLUDE
P16F84.INC
SAYAC1
EQU h0C
tanmlamalarn yapld
SAYAC2
EQU h0D
blm
CLRF PORTB
BSF STATUS,5
B portu k olarak
CLRF TRISB
ayarland.
BCF
STATUS,5
MOVLW
h0F
;ilk deeri ykle ve
MOVWF
PORTB
;B portundan kar.
TERSLE
CALL GECIKME
;Yeni deer iin bekle.
COMF PORTB,F
;PORTByi tersle.
GOTO TERSLE
; saa kaydr.
GECIKME
MOVLW
hFF
MOVWF SAYAC1
DON1
MOVLW
hFF
MOVWF
SAYAC2
GECIKME altprogram.
DON2
DECFSZ SAYAC2,F
GOTO
DON2
DECFSZ SAYAC1,F
GOTO
DON1
RETURN
END
bitleri
sfrlamak
ANDLW
hE7 ; olmaldr.
verilen hex.asm
h18 ; olmaldr.
56
bitleri
terslemek iin
h18 ; olmaldr.
IORLW
BTFSS
GOTO
.
h00
;W=(W OR h00)
STATUS,Z ;Sonu sfr m? (Z=1 mi?)
TEST_W ;hayr.Tekrar kontrol et.
;evet.Programn devam..
ki saynn toplamndan elde edilen sonu hFFden bykse tama olaca iin
STATUS kaytsndaki elde bayra (C) 1 olacaktr. imdi her iki toplamaya da rnekler
verelim.
rnek: nce W kaytsna h25 deerini ykleyip daha sonrada W ile
sabitini toplayan program parasn yaznz. Elde bayrann durumunu bulunuz.
MOVLW
ADDLW
C=0da kalr.
h25
hA3
hA3
;W= h25
;W= h25+ hA3= hC8 olur. Tama olmandan
58
rnek: nce W kaytsna h7A deerini, TOPLAM kaytsna da hDD ykleyip daha
sonrada W ile TOPLAM kaytlarn toplayan ve sonucu TOPLAM kaytsna kaydeden
program parasn yaznz. Elde bayrann durumunu bulunuz.
MOVLW
hDD
;W= hDD
MOVWF
TOPLAM ;TOPLAM= hDD
MOVLW
h7A
;W= h7A
ADDWF
TOPLAM,1 ;TOPLAM= hDD+ h7A= h57
Tama olduundan C=1 olur.Sonucun C bitinin dikkate alnmamas durumunda
yanl olacana dikkat ediniz.
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;
st baytlar toplanr.
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.
59
rnek: nce W kaytsna h25 deerini ykleyip daha sonrada hA3sabitinden Wyi
karan program parasn yaznz. Elde bayrann durumunu bulunuz.
MOVLW
SUBLW
h25
hA3
;W= h25
;W= hA3-h25 = h7E olur.
h40
FARK
h35
FARK,1
;W= h40
;FARK= h40
;W= h35
;FARK= h40- h35= hF5 ;Yukardaki rnekteki
;gibi PIC 2li tmleyen ile
;hF0sonucunu
buldu.
;(C=0 sonu negatif).
60
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
MOVWF
BTFSS
DECF
MOVF
SUBWF
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
saylar kaytlara ykleniyor.
; W= hDE
; BL= hDE
; W= h8E
; BH= h8E
;W=AL
;W=BL-W(AL)
;Sonucun dk bayt
;C=1 mi?
;Hayr (C=0) BH 1 Azalt.
;Evet. W=AH
;W=BH-W(AH)
;Sonucun yksek bayt.
tanmlamalarn yapld
blm
B portu k olarak
ayarland.
SAYAC sfrland.
63
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
GECIKME
MOVLW
MOVWF
DON1
MOVLW
MOVWF
DON2
DECFSZ
GOTO
DECFSZ
GOTO
RETURN
END
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
hFF
SAYAC1
hFF
SAYAC2
SAYAC2,F
DON2
SAYAC1,F
DON1
64
GECKME altprogram.
1.6.16. Kesmeler
Mikrodenetleyicilerle yeni almaya balayanlar kesme (interrupt) kelimesini
duymalarna ramen, kullanmlarnn zor olduu dncesiyle programlar iersinde
kullanmaktan ekinirler. 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 Nedir?
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.
Altprogramn almas bittikten sonra ana program kald yerden itibaren tekrar
almasna devam eder. ekil 1.19u inceleyiniz.
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 altprogram kurgusu
65
bit 4:
bit 3:
bit 2:
bit 1:
bit 0:
66
Hric
kesmelerin
kullanabilmesi
iin
2 ey
gereklidir; yazlm ve
h000
BASLA
h004
KESME
68
BASLA
;Ana program komutlar
.
.
.
Ana program
buraya
yazlmaldr.
KESME
;kesme altprogram komutlar
Kesme alt program
.
buraya yazlmaldr.
.
RETFIE
;Ana programa dn.
1
INTCON
GIE
kesme
GIE
0
INTCON
PC= TOS
PC (program sayc) deeri yna itilir.
h004= PC
PC reset vektrne dallanr. Burada GOTO
komutu kesme alt programna dallanlr.
INTCON
GIE
69
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.
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:
MOVWF
STATUS
SWAPF
W_TEMP , F
SWAPF W_TEMP , W
tekrar ykle.
;ykle.
70
KESME
PIC16F84 tant.
PORTA k
PORTB giri
PORTAdeki ledleri
sndr.
RETFIE
PORTAy sfrla.
PORTB<1>=1
mi?
son
ekil 1.22: rnek 2deki programn algoritmas
71
P=16F84
P16F84.INC
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
tanmlamalarn yapld
blm
TEST_PORTB
BTFSS
GOTO
MOVLW
MOVWF
GOTO
END
KESME
BCF
INTCON,1
MOVLW h00
MOVWF PORTA
RETFIE
END
8 bitlik zamanlama/sayc,
Okunabilirlik ve yazlabilirlik,
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
bit7
R/W-1 R/W-1
PS1
PS0
bit0
73
it 7:
bit 6:
bit 5:
bit 4:
bit 3:
bit 2-0:
1:4
1 : 128
74
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 ;
75
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 birletirirsek;
(256-TMR0 ilk deeri) x ( TMR0 oran)-1
Kesme gecikmesi =
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;
TMR0 ilk deeri = 256- [(Kesme gecikmesi x fosc ) / 4 x ( TMR0 oran)-1 ]
olur.
rnek 1: 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
76
oluur.
Veya;
Kesme gecikmesi =
fosc / 4
(256-0) x 2
Kesme gecikmesi =
= 512 S olur.
4 Mhz / 4
rnek 2: 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.
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.
77
rnek: imdi de B portunun 1.bitinden kare dalga sinyal veren program yazalm. Sinyal
kayna olarak dhil sinyal kaynan kullanalm ve TMR0 orann 1 / 256 olacak ekilde
prescaler deerini ayarlayalm. k sinyali PICin RB1 bitine osilaskobun balanmasyla
izlenecektir.
ekil 1.26deki ak diyagramn inceleyiniz. Bu diyagramda;
Program iindeki
MOVLW
b11010111
ve
MOVWF
ayarlanmtr;
PortB pull-up
direnleri
geersiz.
1 1 0 1 0 1
Option
kayts
Harici kesme
ykselen kenarda
Prescaler (111)
TMR0
oran(1/256)
1 1
Prescaler
TMR0'a
atanr.
TMR0 sinyal
kayna dhil
komut saykl.
78
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
altprogramnn sresini aadaki gibi bulabiliriz;
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.
Bala
WDT sil.
PIC16F84 tant
PortB=k
GECIKME
PortByi sil.
1 seviyesini olutur
hayr
GECIKME
TMR0
<6>=1
evet
0 seviyesini olutur
Dn (RETURN)
GECIKME
ekil 1.26: Programn ak diyagram
79
;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
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.
Eer WDT ile, kontrolden km bir program tekrar resetleyerek, kontrol ele
almay planladysanz , ana program banda STATUS kaytsnn bu bitlerini
kontrol etmelisiniz. Daha sonra da reset gerekletikten hemen sonra da bu
bitleri kontrol etmelisiniz. Bylece WDTn zaman am sresi dolduunda
program akn baka bir yere dallandrabilirsiniz. rnek program paras
aadaki gibi olabilir.
81
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.
SAYAC
DECFSZ
GOTO
RETURN
SAYAC,1
TEKRAR
TEKRAR
256 says
Sayi
5V oluursa;
Vanalog oluur.
Sayi=(256x Vanalog )/5 , Vanalog = (Sayi x 5)/ 256 , Saybek =256 - Sayi
formlleri bulunur.
rnein 0.5Vluk analog gerilim elde etmek iin GECIKME
kaytsna yklenecek i ve bekleme saylarn bulalm.
83
altprogramnda SAYAC
SAYAC=SAYAC-1
PORTB<1>=1
IS saysn W yeykle
SAYAC=0
m?
GECIKME
RETURN
PORTB<1>=0
GECIKME
ekil 1.29: rnek progamn algoritmas
85
86
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
88
89
;**********************************************************
;* ADC.ASM
;**********************************************************
;* Microchip Technology Incorporated
;* 16 December 1998
;* Assembled with MPASM V2.20
;**********************************************************
;* Bu program A/D
;* A/D dnm iin kanal 0 seilmi, analog sinyal bir
;* potansiyometre zerinden salanmakta ve sonu
;* PORTCdeki ledlerde gsterilmektedir.
;**********************************************************
list p=16f877
include "p16f877.inc"
org
0x000
nop
clrf
PORTC
;Clear PORTC
movlw
B'01000001'
;Fosc/8, A/D etkin olacak ekilde
movwf
ADCON0
; ADCON0 ayarla.
bsf
status,5
; Bank1e ge.
movlw
b'10000111'
; TMR0 etkin, prescaler 1:256 olacak
movwf
OPTION_REG
;ekilde OPTION_REGi ayarla.
clrf
TRISC
;PORTC k.
movlw
B'00001110'
;sola yanak k format, 1 analog kanal
movwf
ADCON1
; (AN0)girii ve VDD ve VSS referans
;olacak ekilde ADCON1i ayarla.
bcf
status,5
;Bank0a ge.
BASLA
btfss
INTCON,T0IF
; Timer0 tamas gerekleti mi?
goto
BASLA
;hayr.Tamay bekle.
bcf
INTCON,T0IF
;evet.T0IF bayran sil.
bsf
ADCON0,GO
; A/D evrimini balat.
BEKLE
btfss
PIR1,ADIF
;evrim bitti mi?
goto
BEKLE
;hayr.Bitirmesini bekle.
movf
ADRESH,W
;Evet sonucu PORTCdeki
movwf
PORTC
;ledlere gnder.
goto
BASLA
;tekrarla.
End
90
UYGULAMA FAALYET
UYGULAMA FAALYET
LEM BASAMAKLARI
NERLER
91
LMEVE
VEDEERLENDRME
DEERLENDRME
LME
OBJEKTF TESTLER (LME SORULARI)
1.
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
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DEERLENDRME
Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek
kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt yaadnz
sorularla ilgili konular faaliyete dnerek tekrar inceleyiniz.
Tm sorulara doru cevap verdiyseniz dier faaliyete 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
Bu faaliyet ncesinde yapmanz gereken ncelikli aratrmalar unlar olmaldr:
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
Bildiimiz gibi MPASM derleyici program assmbly programmzn makine kodunu
retiyordu . MPASM derleyici programnn nasl kurulacan, ayarlarnn nasl yaplacan
Mikrodenetleyici iin gerekli yazlmn kullanm konusunda anlatmtk. Burada ise
derleme ileminin yaplmas ve derleme sonucunda oluturulan dosyalar greceiz.
94
95
Daha nceden yazlp kaydedilmi .asm uzantl kaynak dosyas Browse ile
alr (Resim 2.2).
96
1.satrda bir hata var, hata olan kod EQUa =>hlbuki bu deiken tanmlama
iin kullandmz equ olmalyd. Gidip onu EQU yaparak dzeltiyoruz.
ama CLRFg yazdnzda 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 bakarsak "Symbol not previously defined (SAYAC1)" yazyor.
Burada MPASM diyor ki: "Sayac1 deikenini daha nce tanmlamadnz.O
zaman reteceiz demektir, gidip asm dosyamzda tanmlamalar yaptmz
blme bakyoruz ve gryoruz ki aslnda bu hatay az nce dzeltmiiz. nk
az nce 6.satrda bulunan hata , SAYAC1 deikenini tanmlarken bulduumuz
hatayd ve dzeltmitik.
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 olacanzdansorun yaamazsnz, uzun uzun hata aramazsnz.
98
konusundaki
;====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
99
Bir lst dosyas birka sayfadan oluur. Bu rnekte PAGE1, PAGE2 ve PAGE3
eklinde 3 sayfa var.
100
Oluan hata ve uyar says (PAGE3 sonunda hata says 0, uyar says 7,
uyarlar ise PAGE1 ierisinde bulunuyor. )
PAGE 1
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
101
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
102
PAGE 2
T0SE
00000004
TERSLE
00000006
TMR0
00000001
TRISA
00000085
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
18
0
7 reported,
0 suppressedMessages :
103
0 reported,
1 suppressed
UYGULAMA FAALYET
UYGULAMA FAALYET
Yaptnz ve yapacanz bir mikrodenetleyici programn makine diline evirerek
ASM, HEX, LST, COD, ERROR dosyalarn inceleyiniz.
LEM BASAMAKLARI
Mikrodenetleyici
derleme
NERLER
programn Derleme
yapnz.
Derleme sonucunda hata olutuysa,
btn hatalar birden bulmak yerine, tek
derleyerek
yazlm
mutlaka
dilinde
nce
Komut
yapmadan
programnz
sonra,
hatay
giderip
104
LME VE DEERLENDRME
LME VE DEERLENDRME
Aadaki sorular cevaplayarak faaliyette kazandnz bilgi ve becerileri lnz.
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
D) PJT dosyas
6.
7.
8.
9.
10.
DEERLENDRME
Cevaplarnz cevap anahtar ile karlatrnz. Doru cevap saynz belirleyerek
kendinizi deerlendiriniz. Yanl cevap verdiiniz ya da cevap verirken tereddt yaadnz
sorularla ilgili konular faaliyete dnerek tekrar inceleyiniz.
Tm sorulara doru cevap verdiyseniz dier faaliyete geiniz.
106
MODL DEERLENDRME
MODL DEERLENDRME
PERFORMANS TEST (YETERLK LME)
Mikrodenetleyici programlama modl, faaliyetleri ve aratrma almalar sonunda
kazandnz bilgi ve becerilerin llmesi ve deerlendirilmesi iin kendinizi deerlendirme
leine gre deerlendiriniz. Bu deerlendirme sonucuna gre bir sonraki modle
geebilirsiniz.
DEERLENDRME KRTERLER
Ak diyagram sembollerini bir problemin zmnde kullanabilir
misiniz?
Mikrodenetleyici assembler program ve yazm kurallarna uygun
program yazabilir misiniz?
Mikrodenetleyici komutlarnn ilevlerini biliyor musunuz?
Programda say ve karakterleri kullanmak;
Heksadesimal saylar kullanabilir misiniz?
Binary saylar kullanabilir misiniz?
Desimal saylar kullanabilir misiniz?
ASCII karakterler kullanabilir misiniz?
Evet
Hayr
DEERLENDRME
Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerini
tekrarlaynz.
Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme aralar
uygulayacaktr. retmeninizle iletiime geiniz.
108
CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
RENME FAALYET -1 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
109
NERLEN KAYNAKLAR
NERLEN KAYNAKLAR
http://www.antrak.org.tr
http://www.Microchip.com
110
KAYNAKA
KAYNAKA
http://www.antrak.org.tr
http://www.ramay.net
http://www.Microchip.com
111