yrd.doç. dr. bülent...
TRANSCRIPT
Yrd.Doç. Dr. Bülent ÇOBANOĞLU
B
http://nptel.ac.in/courses/Webcourse-contents/IIT KANPUR/microcontrollers/micro/ui/Course_home3_16.htm
PIC MİKRODENETLEYİCİ VE AİLESİ
PIC, Microchip firması tarafından üretilen, Harvard mimarisine ve RISC
işlemcisine sahip bir mikro denetleyicidir. [1]
PIC kelimesi, “Peripheral Interface Controller- Çevresel Arabirim
Denetleyicisi” den türetilmiş olsada farklı kaynaklarda “Programmable
Interface Controller -Programlanabilir Arabirim Denetleyicisi” veya
“Programmable Intelligent Computer -Programlanabilir Akıllı Bilgisayar”
olarak adlandırılmıştır.
PIC Mikro denetleyicilerinin birçok çeşidi vardır, veri yolu genişliği baz
alınarak PIC mikro denetleyicileri;
• 8-bit(PIC10,PIC12,PIC16,PIC18),
• 16-bit(PIC24,dsPIC..) ve
• 32-bit(PIC32)
olarak sınıflandırabiliriz.
PIC MCU Tercih Nedenleri
Piyasada birçok mikro denetleyici üreten firma olduğundan bahsetmiştik. Bunlar içinde
neden Microchip firmasının ürettiği PIC'lerin seçildiği sorusu akla gelebilir.
• Üretici firmanın (Microchip firmasının) web sayfaları üzerinden sağladığı teknik destek
(MPLAB adlı simülasyon programını da ücretsiz olarak dağıtmaktadır. Böylece PIC
programlamak isteyen bir kişi, assembly editor, derleyici, simülatör ve programlayıcı
ihtiyaçlarının hepsini tek bir program ile ve ücretsiz olarak gidermiş olmaktadır.)
• Sadece Assembly değil Basic (Pic Basic Pro) ve C (Hitech PicC, CCS C) ve Pascal dilleri ile
de derlenebilmesi,
• Firmanın sağladığı bu desteğe bağlı olarak gelişen bir başka avantaj ise, bu konu ile ilgili
kaynağın çok olması,
• PIC'lerin az sayıda komut içeren komut kümelerine sahip olması ve kolayca
programlanabilmesi,
• Ekonomik olması ( oldukça uygun fiyatlara temin edinilebilmesi),
• 6 pinden 80 pine kadar bir çok ürün çeşidinin olması,
• Bellek bölgelerine erişimde ve veri iletiminde farklı yolların kullanılması,
• Basit elemanların eklenmesiyle oluşturulan sistem/donanım yardımıyla programlanabilmesi,
• Kullanıldığı devrelerde basit yapıda yardımcı devrelere (sıfırlama, tetikleme / saat sinyali,
besleme, vb.) ihtiyaç duyulması,
• Yüksek frekanslarda çalışabilmesi ve komut işleme hızının çok yüksek olması,
• Uyku modunda (Sleep mode) 1μA gibi küçük bir akım çekmesi,
• Yalnızca 2 kondansatör ve bir direnç ile çalışabilme özelliği,
• Harvard ve RISC mimarisine sahip olması
Bütün PIC MCU lar aşağıdaki özelliklere
sahiptir.
Harvard, RISC mimari ve aynı komut setine
sahiptir.
Digital I/O portları
On-chip timer with 8-bit prescaler
Power-on reset
Watchdog timer
Power-saving SLEEP mode (Uyku modu)
Yüksek source ve sink akımı
Direct, indirect, adresleme modu
Harici saat arabirimi
RAM veri belleği
EPROM veya Flash program belleği
* Giriş/Çıkış port sayısı
* Çevresel arabirim desteği (USART,
USB, vb)
* Minimum program belleği
kapasitesi
* Minimum RAM kapasitesi
* Çalışma hızı
* Fiziksel boyutu
* Maliyeti
* Çalışma Sıcaklıkları
* …
Hangi PIC modelini seçeceğim?
Tablo 1: 8 bit PIC mikro denetleyiciler ve özellikleri
PIC 16F/18F bazı serilerin karşılaştırılması
PIC 16F/18F serilerin karşılaştırılması
PIC MCU Bacak Bağlantıları
Bir PIC’ e ait tüm özellikler çok detaylı olarak Microchip firması tarafından yazılan datasheet
dosyalarında mevcuttur. Farklı bir PIC kullanılacağı zaman firmanın web sitesinden bu
dosyalar indirilerek incelenebilir. Örneğin PIC 16F877 için firmanın hazırladığı datasheet
dosyasını http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf linkinden PIC
16F84 için firmanın hazırladığı datasheet dosyasını ise
http://ww1.microchip.com/downloads/en/devicedoc/35007b.pdf linkinden indirebilirsiniz.
PIC16F877 MCU Bacak Bağlantıları
PIC 16F877
DONANIMSAL
YAPISI
PIC18F… BASİTLEŞTİRİLMİŞ DONANIMSAL YAPISI
PIC MCU DONANIMSAL YAPISI : CPU
İşlemci içerisinde, Aritmetik - Mantık birimi
(ALU), Akümülatör (W kaydedicisi), Durum
kaydedicisi (status register), sayıcılar, yığın
göstericisi, kaydediciler, vb. işlevsel birimler
bulunur.
CPU biriminin kalbi ALU ( Aritmetic Lojik
Unit -Aritmetik Mantık Birimi ) dur ve W (
Working register) adında tek bir kaydedici
içerir. W kaydedicisi 8-bit genişliğindedir ve
CPU' daki herhangi bir veriyi transfer etmek
üzere kullanılır.
PIC mikro denetleyicilerin RISC işlemci
mimari yapısına sahip olduklarını daha
önce de belirtmiştik. RISC işlemci, sadece
35 adet (PIC 16F84 ve PIC 16F877 için)
komutu tanır ve işler. Dallanma (jump,
brunch) komutları hariç tüm komutlar aynı
saat çevriminde işlenir. Eğer mikro
denetleyicinin çalışma hızı 20MHz ise
işlemcinin bir komutu çalıştırma zamanı
200nS (T=1/F) dır, buda saniyede 5 milyon
komutun işlenmesi demektir.
PARALEL-SERİ PORT ile VERİ İLETİMİ
PIC MCU DONANIMSAL YAPISI : GİRİŞ – ÇIKIŞ BİRİMLERİ (PORTLAR)
PORT’ lar; mikro denetleyiciden dışarıya giden
veya dışarıdan mikro denetleyiciye gelen
sinyallerin alınmasında ve gönderilmesinde
kullanılır.
PIC' lerde portlara çeşitli isimler verilmiştir. PIC
16F84 mikro denetleyicisinde PORTA ve PORTB
olmak üzere iki adet giriş / çıkış portu bulunurken
PIC 16F877 mikro denetleyicisinde bu sayı beştir
(PORTA, PORTB, PORTC, PORTD ve PORTE
olmak üzere).
PIC 16F84 mikro denetleyici entegresinde 'RA0-RA4' olarak tanımlanan 5 tanesi
PORTA (1, 2, 3, 17, 18 nolu pinler) ve 'RB0-RB7' sembolleri ile gösterilen 8 tanesi
PORTB (6, 7, 8, 9, 10, 11, 12, 13 nolu pinler) olarak kullanılan toplam 13 adet
giriş/çıkış pini(ucu) bulunmaktadır.
PIC 16F877 mikro denetleyicisi ise 33 adet giriş/çıkış pinine sahiptir. Bunlardan 6
tanesi A portuna (RA0-RA5), 8 tanesi B portuna (RB0-RA7), 8 tanesi C portuna
(RC0-RC7), 8 tanesi D portuna (RD0-RD7) ve 3 tanesi E portuna (RE0-RE2) aittir.
PIC16f877 MCU DONANIMSAL YAPISI : PORT PINLERİNİN
ALTERNATİF İŞLEVLERİ
PIC MCU DONANIMSAL YAPISI : GİRİŞ – ÇIKIŞ KAYDEDİCİLERİ (PORT&TRIS)
Her port kendisi için ayrılmış,
TRIS adı verilen kaydediciler
ile giriş veya çıkış olarak
ayarlanır. Her portun ayarı
kendisine ait TRIS
kaydedicisi ile yapılır. (A portu
için TRISA, B portu için
TRISB, vs.).
Bir portun tüm bacakları giriş
veya çıkış olarak
ayarlanabileceği gibi, bazıları
giriş, bazıları çıkış olarak da
ayarlanabilir. {Bunun için
TRIS kaydedicisinin ilgili
ucuna 1 ya da 0 verilmesi
(giriş için 1, çıkış için 0)
yeterli olacaktır.}
Uyarı: TRIS ve PORT kaydedicilerinin adresleri farklı bellek
bölgelerinde bulunmaktadır (Bank 1 ve Bank 0). Bu sebeple
öncelikle TRIS kaydedicisinin bulunduğu banka geçilerek
PORT’lar giriş yada çıkış olarak ayarlanır.
PIC HAFIZA YAPISI
Hafıza (Bellek) Yapısı:
Mikroişlemcilerde dış ünite olarak kullandığımız hafıza elemanları
mikrokontrollörlerde iç ünite durumundadır. Bunları yapısına göre iki ayrı grupta
toplamak mümkündür:
a) RAM (Random Access Memory)
b) ROM (Read Only Memory)
RAM: RAM genelde program içerisindeki geçici bilgileri (ki biz onlara değişken
diyeceğiz)tutmak için kullanılacaktır. Bazı işlemcilerde ramın program hafızası
olarak kullanıldığını görmek mümkündür, ancak bu işlemciler ya bir dış kalıcı hafıza
tarafından desteklenmekte ya da içerisinde şarj olabilen bir pil içermektedirler.
ROM: Rom hafıza ise program hafızası olarak kullanılan bir hafıza çeşididir. Sadece
okunabilme özelliğine sahip olduğu için, bir kez programlandığında programın
silinmesi diye bir şey söz konusu olmamaktadır.
Bellek haritasında bellek bölgelerini temsil
eden adresler gösterilirken
'onaltılı‐heksadesimal' notasyon kullanılmaktadır.
PIC programlama esnasında da kullanılan '0Xxx'
heksadesimal notasyonunda '0X' veya ‘XXh’
değerleri sayıların heksadesimal olduğunu
belirtir. Örneğin; '0X0F' veya ‘0Fh’ değeri
(0F)16 sayısını '0X3FF' veya ‘3FFh’ değeri
ise (3FF)16 sayısını gösterir.
Program ile ilgili bilgilerin (komutların)
yazılması amacıyla kullanılan bellek
bölgesinde bulunan 64 Bayt'lık EEPROM
belleğin en önemli özelliği, enerji kesilmesi
durumunda verilerin kaybolmamasıdır.
Programın çalışması sırasında program
belleğindeki bilgilerin silinmesi veya
değiştirilmesi mümkün değildir. Program
belleğindeki bilgiler ancak programlama
modunda değiştirilebilirler.
Hafıza (Bellek) Yapısı: Program Belleği
Hafıza (Bellek) Yapısı: Program Belleği
1KBayt'lık program belleğine sahip olan PIC16F84 mikro denetleyicisinde her
bir bellek hücresine 14 bit uzunluğuna sahip program komutları saklanabilir.
Bunun anlamı; PIC16F84 mikro denetleyicisinin (000)16 ile (3FF)16 arasındaki
adresler ile temsil edilen program belleğine 14 bit uzunluğunda toplam 1024
tane komut yazılabilmesidir.
16F877 nin program belleği ise 13 bit ile adreslenir ve dolayısıyla 2^13= 8192
bellek hücresi vardır. Yani 16F877'nin program belleği 8KBayt olarak
tasarlanmıştır. PIC16F877 ninde kelime uzunluğunun 14 bit olduğu daha
önce belirtilmişti. Bu durumda bu elemanın program hafızasına 8192 adet 14
bitlik komut yazmak mümkündür.
Program belleği elektriksel olarak yazılıp silinebilen 'flash' bellek yapısında
olmasına rağmen, programın çalışması sırasında sadece okunabilir.
PIC mikro denetleyici program belleğine sadece Assembly komutları
saklanabilmesine karşılık, 'RETLW' komutu ile birlikte sınırlı miktarda veri de
yüklenebilir. Bellek haritasında bellek bölgelerini temsil eden adresler
gösterilirken 'onaltılı‐heksadesimal' notasyon kullanılmaktadır.
PIC HAFIZA YAPISI: Veri
Belleği
* Genel Amaçlı Kaydediciler
* W Kaydedicisi
* Özel Amaçlı kaydediciler (FSR Register)
içerisinde;
* Durum kaydedicisi (Status register)
* OPTION register
* I/O kaydedici. (PORTA,…TRISA,..)
* Timer registers (TMR0,…)
* INTCON register (
* A/D dönüştürücü kayd.
* Porgram Sayıcı (PCL, PCLATH,..)
* .
* …
PIC MCU DONANIMSAL YAPISI : PIC16F887 KAYDEDİCİLER (REGISTERS)
PIC MCU DONANIMSAL YAPISI : KAYDEDİCİLER (REGISTERS)
W- Kaydedicisi: (Working Register - Akümülatör) :
Genel amaçlı bir kaydedicidir. Tüm işlemcilerde bulunan bu kaydedici ACC ya da A
ismiyle anılır. PIC serisi işlemcilerde ise W adıyla anılmaktadır. Bu kaydedici
işlemlerin çoğunda kullanılan bir kaydedicidir. 2 operandla yapılan işlemlerde,
operandlar işleme girerken, operandlardan bir tanesi burada tutulur; aritmetik ya da
lojik işlemlerde işlem sonuçlarını tutar, ayrıca çok özellikli bir kaydedici olduğu için
bit işlemleri, kaydırma, döndürme, eksiltme, artırma, tersini alma gibi işlemler de
burada yapılabilir.
NOT: MOVLW, ADDLW, ANDLW, MOVWF, gibi birçok komuttan da görüleceği
üzere çoğu işlem W kaydedicisi üzerinden gerçekleşir.
Program Sayıcı: Program akışını kontrol eden bir kaydedicidir. Çalışmakta
olan programların adresleri burada tutulur ve sayılır. Program icra edilirken halen
işletilecek olan komutun adresi PC’de bulunur ve bu komut okunduğunda adres
otomatik olarak 1 artar. Eğer komutun bir operandı varsa komut algılandıktan sonra
bu operand okunur ve bu okunma tamamlanınca PC yine 1 artar. Bu şekilde PC
sistemin işleyişini kontrol etmiş olur. Ayrıca program içerisindeki atlama
komutlarında atlanacak adres, PC’ye yüklenerek programın bir yerden bir başka
yere atlaması sağlanır.
Alt program çağırma işlemlerinde, programın bir noktadan diğer bir noktaya
atlarken geri dönüş adresinin belirlenmesi açısından, programın o anda
çalıştırdığı adresin de bir yerlerde tutulması gerekir.
Program Sayıcı (PC: Program Counter):
Fiziksel olarak, adresin düşük değerli
8 biti 'PCL' kaydedicisinde ve adresin
yüksek değerli 5 biti 'PCLATH' kayded
icisinin 5 bitinde saklanır. Mikro denet
leyicinin komutları işlemesi sırasında
artırılarak, programdaki komutların adı
m adım işlenmesini sağlar.
Program Sayıcı (PC: Program Counter):
PC, Adres yolunu kullanır.
Program belleğinin 11-bitlik adresi ( 211 =2Kbyte ) doğrudan adreslenebilir. Bununla
birlikte PIC16F877 gibi MCU lerde program belleği 13 bit (213 =8Kbyte ) dir. GOTO ve
CALL gibi komutlarla bu 2KByte lık alanda (000H-7FFH) doğrudan gidilebilir ama
7FFH üzerindeki adresler için PCLATH kaydedicine dolaylı erişim mümkündür.
Örneğin PIC16F877’de GOTO komutu ile belleğin ’F00’ bölgesine erişim için:
bsf PCLATH,3 ; PCLATH(4:3) = 11
bsf PCLATH,4
goto h’F00’ ;
PIC MCU DONANIMSAL YAPISI : KAYDEDİCİLER (REGISTERS)
Durum Kaydedicisi: (STATUS Register - Bayraklar) :
STATUS adıyla anılan bu kaydedici aynı zamanda bayrak işaretlerini tutan
registerdir. Diğer registerlerden farklı olarak bu register, blok olarak değil tek
tek bit olarak ele alınır. Bu registerin bitlerine bakılarak işlemin ve işlemcinin
durumu hakkında bilgi elde etmek mümkündür.
NOT:
STATUS, aritmetik ve mantık işlemleri, veri belleği için bank seçim bitlerine ait
durum bilgisini içeren bir kaydedicidir.
PIC18F
PIC16F
PIC MCU DONANIMSAL YAPISI : Durum Kaydedicisi
PIC MCU DONANIMSAL YAPISI : KAYDEDİCİLER (REGISTERS)
Seçenek Kaydedicisi: (OPTION_REG) :
OPTION adıyla anılan bu
kaydedici çeşitli kontrol
bitlerinin ayarlanmasında
kullanılır.TMR0 ve WDT
zamanlayıcıları için frekans
bölme oranlarını belirleme,
harici kesme sinyalinin
tetikleme kenarını seçme,
PORTB nin pullup
dirençlerini düzenleme ve
TMR0 / WDT zamanlayıcı
seçim işlemleri için gerekli
kontrol bitlerini içerir.
PIC MCU UYGULAMA DEVRESİ BİLEŞENLERİ
Bir PIC mikro denetleyicisi ile gerçekleştirilecek uygulama da o devreye/uygulamaya
özel elemanların (direnç, led, buton, lcd gibi) yanı sıra en azından besleme, reset ve
osilatör devresinin olması gerekir.
Watchdog Timer –
Bekçi Köpeği Zamanlayıcısı
Bilgisayar terimi olarak watchdog (bekçi köpeği), bilgisayarın
çalıştığını garanti eden çok güvenilir (sağlam) bir donanımdır.
Watchdog donanımının ardındaki düşünce çok basittir:
Bilgisayar zaman zaman watchdog aygıtına "Merhaba" demesi
gerekiyor ki bilgisayarın hala hayatta olduğu anlaşılsın. Eğer,
bunu yapamazsa, o zaman bilgisayar donanımsal olarak
yeniden başlatılacaktır.
Konfigurasyon bitlerini kullanarak WDT ON yada OFF yapmak
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF
PIC Mikrodenetleyicilerde Bekçi köpeği zamanlayıcısı (watchdog timer) yazılımdan
gelen bir hata durumunda sistemi yeniden başlatarak sistemin kilitlenmesini önler.
Eğer MCU içerisindeki program düzgün çalışıyorsa WDT sayıcısı asla maksimum
değere ulaşmaz. Ne zamanki programda bir kilitlenme veya durma olur o zaman WDT
sayıcısı maksimum değere ulaşır ve MCU ya bir RESET sinyali gönderir ve program
yeniden başlar. Yani WDT programın düzgün çalışmasını garanti eder.
Watchdog Timer –
Bekçi Köpeği Zamanlayıcısı
Besleme Devresi ve Bacak Bağlantıları
Dr. Bülent ÇOBANOĞLU
Besleme geriliminin bağlandığı bacaklar Vdd (PIC16F84 için 14 nolu bacak,
PIC16F877 için ise 11 ve 32 nolu iki farklı bacak) isimli bacaklardır.
Toprak/Şase bağlantısı için ise Vss (PIC16F84 için 5 nolu bacak, PIC16F877
için ise 12 ve 31 nolu iki farklı bacak) isimli bacaklar kullanılır. Şekildeki 16F877
entegresinin bacak bağlantılarına bakıldığında besleme ve toprak girişleri, iki
yanda birer tane olacak şekilde konumlandırılmıştır. Vdd' ile 'Vss' uçları arasına
devreye ilk gerilim uygulaması anında (PIC'e enerji verme sırasında) olabilecek
gerilim dalgalanmalarının sebep olabileceği arızaları önlemek amacıyla 0,1
mikroF'lık bir 'dekuplaj kondansatörü' bağlanır.
Reset Uçları ve Devresi: (1/2)
PIC microcontrollers aşağıdaki
durumlarda RESET oluşur:
• PIC e ilk güç verildiğinde (POR –
Power On Reset),
•MCLR girişi mantıksal 0
yapıldığında,
• Watchdog zamanlayıcısında taşma
olduğunda.
• BOR; Eğer belli bir süre (TBOR-
100us) Vdd gerilimi VBOR (about
4 volts) değerinin altında kalırsa
(BODEN biti ile aktif/pasif yapılır)
PIC mikro denetleyicilerin MCLR ucu (16F84 için 4 nolu, 16F877 için 1 nolu bacak)
reset bacağıdır. Bacak bağlantılarında MCLR üzerinde bulunan çizgi, lojik 0 da iken
reset işleminin gerçekleştiğini göstermektedir. Bu bacak lojik 0 (0V) seviyesine
çekildiğinde program kesilir ve tekrar lojik 1 (+5V) seviyesine gelince program ilk
satırdan itibaren çalışmaya başlar. Reset devresi aşağıdaki gibi kurulur.
MCLR pininin yanlışlıkla lojik '0' değeri ile aktif hale gelmesini engellemek amacıyla
bir direnç üzerinden + besleme ucuna bağlanması gereklidir. Bağlandığı ucu sabit
olarak lojik '1' değerinde tutan bu direnç, 'pull-up' direnci olarak isimlendirilir.
Reset Devresi Mantığı: (2/2)
Dr. Bülent ÇOBANOĞLU
PIC bir mikroişlemcili sistem olduğundan, komutları işleyebilmesi için
saat(clock) sinyali dediğimiz, frekansı belli olan bir kare dalga işarete ihtiyaç
duyar. PIC mikro denetleyicilerin saat sinyali girişi için kullanılan iki ucu
vardır; bunlar OSC1 (16F84 için 16. pin, 16F877 için 13. pin olmak üzere) ve
OSC2 (16F84 için 15. pin, 16F877 için 14. pin olmak üzere) uçlarıdır.
Bu uçlara farklı tipte osilatörlerden elde edilen clock sinyalleri uygulanabilir. Seçilecek osilatör tipi Pic’in kontrol ettiği devrenin hız gereksinimine bağlı olarak
seçilir. Clock osilatör tipleri şunlardır:
○ RC: Direnç/Kondansatör
○ XT: Kristal veya seramik resonetör
○ HS: Yüksek hızlı kristal veya seramik resonetör
○ LP: Düşük frekanslı kristal
Dr. Bülent ÇOBANOĞLU
Osilatör devresi ve bağlantısı: (1/2)
Kristal Osc. genelde C1 ve C2 kondansatörünün birbirine eşit olması gerekir.
Dr. Bülent ÇOBANOĞLU
Seramik Resonator
Osilatör devresi ve bağlantısı: (2/2)
Konfigürasyon bitleri ve işlevleri
Power-up timer (PWRTE)
Osilatör start-up timer
BOR (Brown Out Reset)
Yonga içindeki bir RC osilatör devresi ile belirli bir
frekansta çalışması denetlenen WDT (Watch Dog Timer)
Kesmeler
Kod koruma güvenliği
Güç harcamasının azaltılması istendiği durumlar için
uyku (sleep) modu
İsteğe bağlı osilatör seçenekleri: RC/ XT/ HS/ LS
Devre içi seri programlama (iki pin ile seri olarak
programlanabilme)
Devre içi düşük gerilimle programlama
Devre içi hata arayıcı (Debugger)
__CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF
__CONFIG 0x3F31;__CONFIG b’11111100110001’__CONFIG(UNPROTECT & LVPDIS & BORDIS & MCLREN & WDTDIS & PWRTEN & INTIO); //C için
__CONFIG( HS & WDTDIS & PWRTDIS & BORDIS & LVPDIS & WRTEN & DEBUGDIS & UNPROTECT ); // C için
Not: Program belleğinin 2007h adresinde olup 14 bittir. Bu bitlere sadece PIC programlama aşamasında
erişilebilmektedir.
Not: Kullanılan osilatör tipi programlama esnasında PIC içerisinde bulunan
konfigürasyon bitlerine yazılmalıdır.
Dr. Bülent ÇOBANOĞLU
I/O Portları: Analog/Digital Seçimi
ADFM biti dönüştürme işlemi sonunda 10 bitlik sayının formatını belirler.1: Sayı sağa kaydırılır.0: Sayı sola kaydırılır.
PCFG3 – PCFG0 bitleri A/D portlarının durumunu belirler. Tümü 0 yapılırsa bu durumda 8 tane analog kanal seçilmiş olur ve
her kanalın referans gerilimi VDD olarak ayarlanır.
16F877’de 8 tane 10 bitlik A/D çevirme
kanalı bulunur. A / D kanalları için RA4
hariç diğer A ve E portları kullanılır. A/D
çevirme işlemi 4 adet kaydediciyle
yapılmaktadır.
Aşağıda ilgili register lar ve adresleri
gösterilmiştir.
ADRESH 0x1E ; A / D sonuç
kaydedicisi (high register)
ADRESL 0x9E ; A / D sonuç
kaydedicisi (low register)
ADCON0 0x1F ; A / D kontrol
kaydedicisi 0
ADCON1 0x9F ; A / D kontrol
kaydedicisi 1
ADCON1, PORTA ve PORTE
portlarını dijital veya analog
giriş-çıkış olarak ayarlamaya
yarar. Default olarak bu portlar
analogtur ADCON1
kaydedicisine ilgili değerler
yüklenerek bütün pinler digital
veya analog işlemler için
ayarlanabilir. Ayrıntılı bilgi için
lütfen datasheet’e ve ileride
anlatacağımız ADC konusuna
göz atınız.
I/O Portları: Analog/Digital Seçimi :ADCON1
I/O Portları: Analog/Digital Seçimi : ADFM biti ve ADRESL-ARESH
I/O Portları: Analog/Digital Seçimi : ADCON0
TAD:Bir bitlik dönüşüm süresidir.
10 bitlik dönüşüm için 11TAD süresi çeker.
Mikrodenetleyiciler 41
Hemen (Immediate) Adresleme:
MOVLW h ‘0F’ ; OF verisi hemen W kaydedisine yazılır
Doğrudan (Direct) Adresleme :Kaydedici veya değişken içeriği okuma/yazma
MOVWF PORTA,F ;
42
Dolaylı (Indirect) Adresleme :INDF fiziksel bir register olmayıp mikrodenetleyicideki RAM adresini tutar.
INDF’e yazılan her veri FSR de bulanan adrese yazılmış olur.Örneğin FSR
(Özel Fonksiyonlu Kaydedici)’ye yazdığımız 0x20 değeri ile 0x20 adresinin
içeriğini INDF’i okuyarak elde edebiliriz..
INDF = [FSR]; okuma
[FSR] = INDF; yazma
Nerede kullanılabilir; Veri belleğinin belirli adreslerine ulaşmanız,
ulaştığınız adreslerin içeriğini değiştirmeniz veya bu adresteki değerleri alıp
kullanmanız gerekiyorsa Dolaylı adresleme kullanılır. Örnek; h ’20’ – h ‘2F’
RAM bölgesini temizleyen (sıfırlayan) bir program.
movlw 0x20; Göstergeye başlangıç değerini (adresi) ver .
movwf FSR; RAM‟a git
Sonraki:
clrf INDF; INDF yazmacını temizle
incf FSR, F; Göstergeyi bir arttır. (d = 1)
btfss FSR, 4; Hepsi yapıldı mı?
goto Sonraki; Temizlenecek alan bitmedi, sonrakine git.
……
43
Dolaylı (Indirect) Adresleme Kaydedicileri : INDF ve FSR
PIC Komut Seti
PIC MCU Paket Okuması
PIC MCU Paket Okuması
PIC MCU Assembly komut sembollerin / harflerin anlamları
PIC18F Komut Seti
(2/2)
PIC18F Komut
Seti (2/2)
PIC16F -PIC18F Komut Seti
Karşılaştırması
PIC16F -PIC18F Komut Seti
Karşılaştırması