Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI
• Temel olarak bir PIC içerisinde de iki tür hafıza
bulunur:
1. Program Hafızası (ROM,PROM,EPROM,FLASH)
Programı saklar, kalıcıdır.
2. Veri Hafızası (RAM, EEPROM)
Veriyi saklar, genellikle uçucu olmakla (RAM) birlikte kalıcı olan (EEPROM) özel türleri de vardır.
1
PIC16F84’DE PROGRAM HAFIZASI
• PIC16F84 de Program hafızası …
• Flash tipte olup…
PIC düşük gerilimle ( 5V)
Kolaylıkla Programlanıp
silinebilir.
2
PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)
• Programlamak üzere Seçtiğimiz PIC16F84 ‘de…
o 1K kelime’lik (word) toplam 1024 komutluk program hafızası vardır.
• ( ) olduğunu hatırlayalım.
NOT: Byte(Bayt) kelimesi 8 biti temsil ettiği ve PIC16F84’de 14 bitlik komut kelimeleri (word) kullandığı için 1K bayt yerine 1K word ifadesi tercih edilmektedir.
3
• Pprogram hafızasında bu komutlar ikili (binary) tabandadır.
• Örn: (00 0001 0111 0000)2 = (0170)16
Aküyü sil anlamına gelen komutdur.
• Biz Assembly Dilinde Program yazarken ise aynı komutu;
CLRW şeklinde kullanacağız.
4
PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)
PIC16F84 ‘DE PROGRAM HAFIZASI (Devam)
• Her bir program
hafıza hücresi
içerisinde…
• 14 bit uzunluğundaki komut kelimeleri (komutlar) saklanır.
5
PIC16F84 ‘DE VERİ (DATA) HAFIZASI
• Her PIC ‘de bulunan diğer bir hafıza türü Veri Hafızasıdır.
• Bu hafıza sıkça kullanılır ve genellikle RAM türü Geçici (Uçucu) Bilgi Depolama alanıdır.
6
• Ayrıca PIC16F84 ’de EEPROM denilen 64 byte’lık kalıcı veri hafızası da vardır…
• Dersimizde EEPROM türü hafızanın programlanması incelenmeyecektir.
7
PIC16F84 ‘DE VERİ (DATA) HAFIZASI (Devam)
PIC16F84 ‘DE VERİ (DATA) HAFIZASI (Devam)
• PIC16F84’de normalde Veriler…
• 8 bitlik (binary 8 basamaklı) = 1 bayt dır.
(örn. bir baytlık veri : 0110 0111)
• PIC16F84’de Veri Hafızası ikiye ayrılır :
Bank 0
Bank 1
8
• Ayrıca Veri Hafızasında iki çeşit Saklayıcı (Register) söz konusudur:
oÖzel Fonksiyon Registerleri
(STATUS, PORTA gibi isimleri belirli olanlar)
oGenel Amaçlı Registerler
(Genel Veri Depolama alanıdır.
Herhangi bir genel veri saklanabilir)
9
PIC16F84 ‘DE VERİ (DATA) HAFIZASI (Devam)
10
Öze
l Fo
nks
iyo
n R
egi
ste
rle
ri Ö
zel Fo
nksiyo
n R
egiste
rleri
PIC16F84 ‘DE VERİ HAFIZA HARİTASI (sadeleştirilmiş) (BANK 0 ve BANK 1)
• BANK 0
o Hafıza Haritası da denilen bu tabloyu incelersek sol sütunda…
o (0X00 … 0X4F) adres aralığında…
o Toplam ( 50 )16=(80)10 adet 8 bit uzunluğunda VERİ HAFIZASI vardır.
Not: 0X: Heksadesimal sayı anlamındadır
11
PIC16F84 ‘DE VERİ HAFIZA HARİTASI (BANK 0 ve BANK 1) (Devam)
BANK 0 (Bütün Registerleri ile)
12
• BANK 1
• Bank 0 ‘a benzer şekilde (0X80 … 0XCF) adres aralığında bulunur.
Önemli Not: • Burada bazı Özel Fonk. Registerleri hem Bank 0 ‘da
hem Bank 1’ de olduğundan birbirlerinin kopyasıdır. (INDF, STATUS gibi)
• Genel Amaçlı Registerler ise Bank 0 ve Bank 1 de her zaman birbirinin kopyasıdır.
13
PIC16F84 ‘DE VERİ HAFIZA HARİTASI (BANK 0 ve BANK 1 ) (Devam)
BANK 1 (Bütün Registerleri ile)
14
• PROGRAMLAMA İÇİN ÖNEMLİ BİLGİ:
• Programlamada bir Bank’ın içindeki herhangi bir registeri kullanabilmek için o Bank’a geçmek gerekir.
• Ancak her iki Bankta da bulunan registerler Bank değiştirmeksizin her zaman kullanılabilirler.
• İlk enerji verildiğinde PIC “Bank 0” da açılır. • Daha sonra Programcı yazdığı komutlarla “Bank
1” e geçebilir. 15
PIC16F84 ‘DE VERİ HAFIZA HARİTASI (BANK 0 ve BANK 1) (Devam)
ÖZEL BİR REGİSTER ( W : AKÜMÜLATÖR )
• PIC16F84 ‘de Akümülatör (W)
Veri Hafıza haritasında görülmemesine
rağmen
sıkça kullanılan
8 bitlik
“Geçici Depolama Registeri”
denebilecek bir registerdir.
16
• Diğer pek çok File Registerleri gibi
W (Akümülatör) de 8 bit uzunluğundadır.
Not: Veri okur, yazarken, registerler arası veri kopyalama ile tüm aritmetik işlemler ve diğer bazı işlemler için bu W registerini kullanmak şarttır.
17
ÖZEL BİR REGİSTER ( W : AKÜMÜLATÖR )
• Meselâ ;
• (PORTA) ‘yı (03) sayısı ile toplayıp…
• Sonucu PORTB ‘ye yazmak istersek…
• Akümülatörden (W ) faydalanmak gerekir.
18
ÖZEL BİR REGİSTER ( W : AKÜMÜLATÖR ) (Devam)
PIC16F84’ ÜN BACAK (PİN) YAPISI VE PORTLARI • PIC16F84 mikrodenetleyicisi 18
sayısal bacağa (pin) sahiptir.
• VDD(+), VSS (-) 5 V besleme uçlarıdır.
• RA ve RB ile başlayan bacaklar PORTA ve PORTB ye aittir.
• Kullanılmayan PORT girişleri +5V (Lojik 1) ‘a bağlanmalıdır.
• OSC1/CLK IN ve OSC2/CLK OUT uçları saat işareti üretmek veya uygulamak için kullanılır.
• MCLR ucu Reset işlemi içindir.
19
PORTA ve PORTB ’nin YAPISI
• Burada lojik(sayısal) Giriş/Çıkış yapacağımız PORTA ve PORTB üzerinde durmak gerekir.
• Bunlardan PORTA 5 bitliktir; [8 bitlik değil !] ( RA4,RA3,RA2,RA1,RA0)
• PORTB ise normal olarak 8 bitliktir; (RB7,RB6,RB5,RB4,RB3,RB2,RB1,RB0)
• Her bir Port biti (RA2, RB5… gibi) Giriş ya da Çıkış olarak programlanabilir.
20
PIC16F84 ‘DE PORT BİTİ ÇIKIŞ İKEN
MAKSİMUM AKIMLAR
• PIC16F84 ‘de bir PORT’a ait olan bir bit
Ya Giriş ya da Çıkış olarak programlanarak
kullanılır.
• PORT biti çıkış olarak kullanıldığı zaman
İki tür akım söz konusudur :
• PORT’dan içeri çekilebilen (Sink) ve…
• PORT’tan dışarı alınabilen (Source) akım.
21
• Bu durumlardaki maksimum çıkış akımı değerleri hiçbir zaman aşılmamalıdır.
• Bu değerler seri bir direnç üzerinden bir LED’i rahatlıkla sürebilecek seviyededir.
• Ayrıca besleme gerilimi 5 V olarak belirtilmişti.
Bu değerin 5.5 V ‘un üzerine çıkarılması PIC’in
bozulmasına sebep olabilecektir.
• Bu yüzden kararlı bir besleme kaynağı kullanılmalıdır.
22
PIC16F84 ‘DE PORT BİTİ ÇIKIŞ İKEN
MAKSİMUM AKIMLAR (Devam)
SINK VE SOURCE AKIMLARI
• Sink Akımı :
• (+5 volt) beslemeden PORT’un içine doğru akan akımdır. Bu durumda + 5V ‘dan PORT’un içine doğru akacak maksimum akım 25 mA ile sınırlıdır !
• PORT 'tan içeri daha fazla
akıtılan akım PIC ‘in
bozulmasına
sebep olabilir !
23
• Bu tür bağlantıda (Sink akımı) ancak PORT biti = Lojik 0 yapıldığında LED yanacaktır.
• Örnek olarak;
24
SINK VE SOURCE AKIMLARI (Devam)
25
• Source Akımı :
• PORT’un içinden toprağa doğru akan akımdır.
• Bu durumda akacak maksimum akım 20 mA dir.
• Bir başka ifade ile PORT ’tan dışarı bu değerden fazla akım çekilirse PIC bozulabilir.
SINK VE SOURCE AKIMLARI (Devam)
• Bu tür bağlantıda (Source akımı) PORT biti = Lojik 1 yapıldığında LED yanacaktır…
• LED’e seri direnç…
26
SINK VE SOURCE AKIMLARI (Devam)
OSİLATÖR ( SAAT/CLOCK ) DEVRESİ
• PIC ‘in program hafızasında bulunan komutların çalışması Kare dalga şeklindeki saat (clock) işareti ile olur;
• Genelde OSC1/CLK IN ve OSC2/CLK OUT bacaklarına bazı elemanlar (kristal, direnç-kondansatör) bağlanarak saat işaretinin PIC içerisinden üretilmesi sağlanır.
27
OSİLATÖR ( SAAT/CLOCK ) DEVRESİ (Devam)
• PIC 16F84 ‘de en çok kullanılan osilatör tipleri şunlardır :
1 ) RC Tipi ( Direnç/Kondansatör )
2 ) XT Tipi ( Kristal veya Seramik Rezonatör )
3 ) HS Tipi (Yüksek Hızlı Kristal /Seramik Rezonatör)
4 ) LP Tipi ( Düşük Frekanslı Kristal )
28
• Bu osilatör yapılarından sık kullanılan ikisinin tipik bağlantıları …
1. RC Tipi Bağlantı :
• Bu amaçla kullanılan tipik bağlantı şöyledir. Hassas zamanlama gerektirmeyen tasarımlar için elverişlidir.
OSİLATÖR TİPLERİ VE BAĞLANTILARI
29
2. XT, HS, LS Tipi Bağlantı :
• Bu bağlantılarda her iki OSC bacağı kullanılır. C1 ve C2 değerleri 15-22 pF civarında seçilebilir.
30
OSİLATÖR TİPLERİ VE BAĞLANTILARI (Devam)
NOT: Kullanılacak Osilatör tipi komut olarak veya programlama esnasında belirtilmelidir. Bunun yolu ilerde açıklanacaktır.
MCLR (RESET) BACAĞI VE DEVRESİ
• Program herhangi bir nedenle kilitlenirse…
• Ya da programı yeniden (baştan) çalıştırmak istersek…
• Dışardan PIC ‘i Reset yapmamız gerekir.
• PIC16F84 ‘de RESET fonksiyonu gören 4 nolu bacak (MCLR) ‘dir.
31
• Resetleme işlemi için bu girişe önce kısa bir süre lojik 0 verilmeli, daha sonra lojik 1 uygulanmalıdır.
• Not: MCLR üzerindeki çizgi “0” da Reset gerçekleşir demektir.
32
MCLR (RESET) BACAĞI VE DEVRESİ (Devam)
PIC16F84 ve ASSEMBLY DİLİ PROGRAMLAMA
• Biz programlarımızı PIC16F84 ‘ye ait 35 farklı komuttan oluşan assembly programlama dili ile yazacağız.
• Önce basit bir metin editöründe (not defteri gibi) yazılacak olan program .asm uzantılı olarak kaydedilir.
NOT: Bu komutlar Lab. da incelenecek 40 bacaklı
PIC16F877 için de geçerlidir.
33
• Yazdığımız Assembly Program PIC’in çalıştırabileceği hale dönüştürmek üzere MPASM veya MPLAB ile derlenmelidir.
• Derlenen (.asm) uzantılı dosya… (Örn: isim.asm)
aynı dosya ismiyle ( .hex) uzantılı olarak
aynı klasörde üretilir. (Örn: isim.hex)
• Artık program “Makine Dili” olmuştur. Yani bir programlayıcı ile PIC’e yüklenebilir.
34
PIC16F84 ve ASSEMBLY DİLİ PROGRAMLAMA (Devam)
ASSEMBLY DİLİNDE PROGRAM YAZARKEN DİKKAT EDİLECEK HUSUSLAR
Noktalı Virgül ( ; )
o Bir satırın başına (;) konursa o satır ( hex ) koda dönüştürülmez.
o Daha sonra programı değiştirir ya da geliştirirken hatırlamak istediklerimizi de (;) den sonra yazabiliriz.
o Bir komuttan sonraki (;) den sonrası da aynı şekilde sadece bilgi amaçlıdır.
o Örn: MOVLW 0x2F ; Akümülatöre 2F yaz
35
Etiketlerin Özellikleri:
• Birinci sütunda yer alan Etiketler…
• PIC’in Program ya da Veri Hafızasındaki bir Komut ya da Register adresine karşılık gelen ve hatırlatmayı kolaylaştıran kelimelerdir.
– PORTB EQU 0x06 ; PORTB bir etikettir.
– BEKLE GOTO BEKLE ; İlk BEKLE bu komutun etiketidir.
36
ASSEMBLY DİLİNDE PROGRAM YAZARKEN DİKKAT EDİLECEK HUSUSLAR (Devam)
Program Bölümleri :
o Assembly programında Başlık, Atama , Program ve Sonuç bölümleri vardır.
o Ayrıca Program yazılmadan önce 3 kolona bölünür. Bunlar;
– Etiket,
– Komut,
– Adres ya da Veri dir…
37
ASSEMBLY DİLİNDE PROGRAM YAZARKEN DİKKAT EDİLECEK HUSUSLAR (Devam)
Örnek bir Program Yazılışında Bölümler
38
ASSEMBLY DİLİNDE SAYI VE KARAKTER YAZILIŞLARI
• Assembly dilinde program yazarken sayılar çeşitli formatlarda (biçimlerde) yazılabilir :
Hexadesimal sayılar için:
• Normal komutlarda 0x03 , h ‘03’ ya da 03 şeklinde kullanılırlar. Mesela W registerine (03) heksadesimal sayısını yüklemek için;
MOVLW 0x03 MOVLW h’03’ MOVLW 03 ;biçimlerinden biri yazılabilir.
Not: Biz Derslerimizdeki programlarda genellikle h’03’ formatını tercih edeceğiz.
39
Binary ( ikili ) sayılar için: • b’0010 0101‘ şeklinde yazılır.
• Örn : ( 0010 1100 )2 sayısını W (akümülatör)’e yüklemek için gerekli komut;
MOVLW b’00101100’ ;şeklinde ikili tabanda yazılabilir.
Desimal sayılar için: • Desimal sayılar ise başına d harfi konup yine tırnak içinde
yazılır. d‘18‘ , d’255’ gibi.
• Örn. (15)10 sayısını W ye yüklemek için ;
MOVLW d’15’ ;şeklinde yazılabilir.
40
ASSEMBLY DİLİNDE SAYI VE KARAKTER YAZILIŞLARI
(Devam)
ASCII karakterler için :
• Tırnak içinde karakterin kendisi yazılır . • Genellikle daha sonra incelenecek RETLW
komutu ile beraber kullanılır. Örn.
RETLW ‘B’ ;B heks. bir sayı değil harftir RETLW ‘X’
gibi komutlar B ve X karakterlerinin ASCII karşılığı olan sayıyı W registerine yazarak altprogramdan dönüşü sağlar.
41
ASSEMBLY DİLİNDE SAYI VE KARAKTER YAZILIŞLARI
(Devam)
PIC16F84’DE ASSEMBLY DİLİ KOMUTLARI
• PIC 16F84 de toplam 35 komut vardır.
• Biz PIC komutlarını 4 ana grupta toplayarak
inceleyeceğiz :
1 ) Byte (bayt) Yönlendirmeli Komutlar
2 ) Bit Yönlendirmeli Komutlar
3 ) Sabitle Çalışan Komutlar
4 ) Kontrol Komutları
42
KOMUT FORMATLARI YAZILIRKEN KULLANILAN BAZI KISALTMA HARFLERİ
• f : File register (Özel veya Genel, PORTA, STATUS vb. )
d : (Sonucun gönderileceği yeri belirtir)
d = W ise (Sonuç W registerine kaydedilir )
d = f ise (Sonuç komutta belirtilen File registerine kaydedilir)
• k : Sabit veya adres etiketi …
• b : Bit veya Binary sayıyı …
• d : Desimal sayıyı …
• h : Heksadesimal sayıyı ifade eder
43
KOMUT GRUPLARI VE FORMATLARI
1) Byte (bayt) Yönlendirmeli Komutlar:
• Bir register üzerinde işlem yapan komut türüdür. Komut Formatı:
• Örnekler: MOVF 0x03 ,W ; 0x03 adresindeki (STATUS daki) veriyi W (Akümülatör)‘e ; kopyala. MOVF STATUS ,W ; STATUS registerini W ‘nin içine kopyala. ; (STATUS EQU h’03’ komutu ile önceden tanımlıysa !) MOVF PORTA ,W ; PORTA ‘yı W ‘ye kopyala.(PORTA EQU h’05’ ile tanımlıysa !)
44
2) Bit Yönlendirmeli Komutlar:
• Bir register’da bulunan bitlerden sadece biri üzerinde işlem yapan komutlar bu gruba girer. Komut Formatı:
• Örnekler : BCF 0x03,5 ; 0x03 adresindeki registerin (STATUS’un) 5. bitini 0 yap.
BSF PORTA,3 ; PORTA da bulunan verinin 3. bitini 1 yap. ; PORTA EQU h’05’ komutu ile önceden tanımlıysa !
BCF PORTB,4 ; PORTB ‘deki verinin 4. bitini 0 yap. ; PORTB EQU h’06’ ile önceden tanımlıysa !
45
KOMUT GRUPLARI VE FORMATLARI (Devam)
3) Sabit İşleyen Komutlar
• Bu tür komutlar belli bir sabit sayıyı işler. Komut Formatı:
• Örnekler : MOVLW 0x2F ; W registerine h’2F’ yazar ( yükler )
MOVLW h’17’ ; W registerine h’17’ yazar ( yükler )
ADDLW b’00011111‘ ; O anda W registerinde bulunan sayıya
; ( 0001 1111 )2 = ( 1F )16 ekler.
46
KOMUT GRUPLARI VE FORMATLARI (Devam)
4) Kontrol Komutları
• Program akışını değiştiren komutlar bu tür komutlardır. Komut Formatı:
• Örnekler : GOTO DONGU ; Program şartsız olarak DONGU etiketli satıra gider.
GOTO BASLA ; Program şartsız olarak BASLA etiketli satıra gider.
CALL GECIKME ; Program GECIKME etiketli altprograma gider.
KOMUT GRUPLARI VE FORMATLARI (Devam)
47
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
• Örnek olarak, PIC16F84 ye enerji verince PORTB’yi tamamen çıkış yaptıktan sonra PORTB nin 0. ve 2. bitlerini (RB0, RB2) lojik (1) diğerlerini de Lojik (0) yapan bir program yazalım:
• Not: Bu durumda program çalıştıktan sonra PORTB nin çıkışları şöyle olacaktır :
• O halde programla PORTB’ yükleyeceğimiz sayı :
(0 0 0 0 0 1 0 1)2 = (05)16 olacaktır.
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
0 0 0 0 0 1 0 1
48
• İstenen Assembly Programı yazmak için önce Veri Hafızasındaki Özel Fonksiyon Registerlerinde …
o PORTB ‘nin 0x06 adresinde (Bank 0 da)
o TRISB ‘nin 0x86 adresinde (Bank 1 da)
o STATUS ‘ün 0x03 ve 0x83 adreslerinde
olduklarını hatırlayalım…
49
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
• Daha önce de belirtildiği gibi herhangi bir file registere ulaşmak için o registerin bulunduğu Bank’a geçmek şarttır.
• Ayrıca burada PORTB den dışarı Lojik değerler almak istediğimize göre önce PORTB yi tamamen çıkış yapmak gerekir.
50
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
• BANK DEĞİŞTİRME İŞLEMİ için;
• 16F84 ‘de Veri hafızasındaki Özel Fonksiyon Registerlerinden STATUS Registerinin
5. biti (RP0) Bank değiştirme için kullanılır.
• BSF gibi bir bit yönlendirmeli komutla
RP0 = 1 yapılırsa Bank 1 ‘e geçilmiş olacaktır.
STATUS REGISTER (Adresi:0x03 ve 0x83)
51
IRP RP1 RP0 TO PD Z DC C
7 6 5 4 3 2 1 0
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
• O halde burada STATUS ‘un 5. bitini (RP0=1) yaparak Bank 1 ‘e geçelim;
BSF STATUS , 5 ; STATUS 5. biti RP0=1
; yapılarak Bank 1 ‘e geçiliyor.
52
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
• GİRİŞ/ÇIKIŞ için ilgili PORT ‘a karşılık gelen TRIS registerini belirli bitlerle (sayıyla) yüklemek gerekir.
• Bir portu;
Çıkış yapmak için ilgili TRIS registeri bitlerini “0”
Giriş yapmak için ilgili TRIS registeri bitlerini “1”
yapmak gerekir.
• Burada ilgilendiğimiz PORTB olduğuna göre…
TRISB registeri ile PORTB çıkış yapılacaktır.
53
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
• PORTB ‘yi tamamen çıkış yapacağımıza göre TRISB de tüm bitler (0) yapılmalıdır.
• Bu durumda ;
• Sonuç olarak (00)16 sayısının TRISB registerine yüklenmesi gerekir.
54
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
ETİKET KOMUT ADRES ya da VERİ
AÇIKLAMA
; ORNEK.ASM – 01/10/ 2015 Programı hatırlamak için ad ve tarihi yazıldı
LIST P = 16F84 ; Başlık Bölümü, kullanılan PIC bildiriliyor.
PORTB EQU h’06’ ; 0x06 adresi PORTB olarak tanıtıldı
STATUS EQU h’03’ ; 0x03 adresi STATUS olarak tanıtıldı
TRISB EQU h’86’ ; 0x86 adresi TRISB ‘ye olarak tanıtıldı
BSF STATUS,5 ; STATUS 5. biti 1 yap, Bank 1’e geç
MOVLW h’00’ ; W registerine ( 00 )16 sayısını yükle
MOVWF TRISB ; TRISB ye (00) yaz ; ve böylece PORTB yi tamamen çıkış yap.
BCF STATUS,5 ; Bank 0 ’a dön. (Giriş/Çıkış işlemi bitti )
MOVLW h’05’ ; W registerine ( 05 )16 sayısını yükle
MOVWF PORTB ; W deki sayıyı PORTB ‘ye yükle
END ; Son
İŞTE PROGRAMIMIZ…
55
• Hatırlatmalar :
• İlk satırdan sonraki LIST ile hangi PIC’i kullandığımız END ile de programın sona erdiği belirtilir.
• Burada her bir Özel Fonksiyon Registerinin adresi doğrudan yazılabileceği gibi
(örn: STATUS yerine h’03’ ) yazılabilirdi.
• Başlangıçta EQU komutları ile tanıtma yapılarak Registerin adı Programda doğrudan kullanılabilir.
• Yukarıdaki programda biz bu yolu kullandık.
56
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
57
ASSEMBLY DİLİNDE İLK PIC16F84 PROGRAMI
(Devam)
MPASM PROGRAMI İLE DERLEME ve ÖNEMLİ DOSYALAR (Devam)
• Derleme sırasında ornek .hex dosyası ile birlikte bazı farklı dosyalar da üretilir.
• Programda hata varsa veya değişiklikler yapılmak istendiğinde …
58
• Üretilen dosyalardan ikisi önem kazanır ;
o ornek .err (Hata dosyası)
o ornek .lst (Liste dosyası)
• Belirtilen dosyalar açılarak incelenmelidir.
MPASM PROGRAMI İLE DERLEME ve ÖNEMLİ DOSYALAR (Devam)
INCLUDE DOSYALAR
• Yukarıda belirtildiği gibi Assembly dilinde programlar yazarken kullanılacak
Özel Fonksiyon Register adreslerini (EQU)
komutları ile tanımlamak hem kolaylık
sağlamakta hem de anlaşılırlığı arttırmakta idi.
• Ancak özellikle programımızda çok sayıda register kullanıyorsak her sefer bu tanımları tekrar tekrar yapmak gereksiz gibidir.
60
• Diğer taraftan bu EQU komutları yazacağımız programı da şişirecektir.
• Bunun yerine o PIC için Include Dosya kullanarak her PIC için sabit olan bu tanımları her sefer yeniden yapmaktan kurtulmuş oluruz.
• Mesela; P16F84.INC adlı “hazır” dosya PIC16F84 için gerekli tanımları içerir.
61
INCLUDE DOSYALAR (Devam)
• Bu maksatla;
INCLUDE “P16F84.INC”
komutunu (satırını) programda LIST komutundan sonra yazmamız yeterlidir.
Not: Sadece kullanacağımız (SAYAC gibi) özel bir değişkenimiz için;
SAYAC EQU h’0C’ şeklinde EQU komutu
yazmamız yine gerekecektir.
62
INCLUDE DOSYALAR (Devam)
KONFİGÜRASYON BİTLERİ
• Bu bitler PIC’ e gerilim verildiği anda geçerli kuralları belirlemek içindir.
• Meselâ; PIC devremizin osilatörünü RC tipi olarak kullanacaksak bunu bildirmemiz lazımdır.
63
• Benzer şekilde Watchdog timer’ i (WDT) devreye sokmak için (ON) veya çıkarmak için (OFF) …
• Power-on Reset özelliğini devreye sokmak için (ON) ya da çıkarmak için (OFF),
• Programı korumayı devreye almak(ON) veya almamak (OFF) için bu konfigürasyon bitleri kullanılır.
KONFİGÜRASYON BİTLERİ (Devam)
KONFİGÜRASYON BİTLERİ (Devam)
• Program içersinde bu komutun yazılışına ait aşağıdaki gibi bir örnek verilebilir:
_CONFIG _CP_ON & WDT_OFF & PWRTE_OFF & RC_OSC
Bu durumda;
• CP_ ON : Program Koruması var • WDT_OFF : Watchdog Timer OFF , kullanılmıyor • PWRTE_OFF : Power-on Reset OFF , kullanılmıyor • RC_OSC : Osilatör Tipi (RC)
• Not: Devrede Kristal kullansaydık RC yerine XT yazılırdı.
65
KONFİGÜRASYON BİTLERİ (Devam) • Burada; & : Ve _ : Alt çizgi boşluk yerine OFF : Yok, devre dışı, kullanılmıyor, ON : Devrede, kullanılıyor anlamındadır.
• Not 1: Aslında Konfigürasyon Bitleri böyle bir komutla
programa yazılmadan programlama esnasında programlayıcı yazılımı üzerinde de doğrudan belirlenebilir.
• Not 2: Biz Derste verdiğimiz örneklerde Programlama sırasında bu bitlerin ayarlandığını varsayacağız.
66