You are on page 1of 107

1

1.GR 1.1 Mikroilemciler Mikroilemci herhangi bir sistemde merkezi ilem birimidir ve bulunduu sistemde aritmetik ve mantksal ilemleri yrtr. Merkezi lem Birimi (Central Processing Unit: CPU), kontrol devresini, bir ALU ( Aritmetik Mantk Birimi ) baz kaydediciler ve bir adres/program saycy ierir. Bir klavyeden gelen verilerin, bir basn alglaycsndan gelen saysallatrlm kn veya bir baka verinin bilgisayara alnmas ve bu bilgilerin k olarak salanmas mikroilemci tarafndan kontrol edilir. Mikroilemcinin bu tr ilemleri giri olarak alglayp, ka yanstmas iin mikroilemci programlanr. Bir mikroilemci, belleinde sakl bulunan program her bir komutu sra ile okuyarak yrtr. Her komut nce, onu yrtmek iin gerekecek ilemleri belirlemek zere mikroilemcinin anlayabilecei makina koduna evrilir ve sonra gereken ilemler yaplr. Mikroilemci entegre devresi, yazlan programlar meydana getiren makina komutlarn yorumlamak ve yerine getirmek iin gerekli olan tm mantksal devreleri ierir. Bir mikroilemci temel olarak ksmdan oluur. Bunlar merkezi ilem birimi (CPU), giri k birimi (G/) ve bellektir. 1.1.1 Merkezi lem Birimi Bilgisayarn kalbi veya beyni olarak adlandrlan mikroilemci ayn zamanda merkezi ilem birimi olarak da anlrlar. Merkezi ilem birimi genel olarak aadaki ilemleri yapar: Sistemdeki btn elemanlar ve birimlere zamanlama ve kontrol sinyali salar. Bellekten komut veya veri alp getirir ve iler, Veriyi giri/k birimlerine ya da oradan kendisine aktarr, Komutlarn kodunu zer, Komutla birlikte aritmetik ve mantk ilemlerini gerekletirir,

Program ilenirken giri/k cihazlarndan gelen servis isteklerine I bayrann

durumuna gre cevap verirler. Intel ve Motorola firmalarnn retmi olduu mikroilemcilerde yukarda bahsedilen ilemleri gerekletirmek zere ana blm vardr. Bunlar; Kaydediciler, Aritmetik Mantk Birimi (ALU) ve Zamanlama-Kontrol Birimidir. 1.1.1.1 Kaydediciler Mikroilemcinin iinde ilem yaparken geici olarak verilerin saklandklar saklayclardr. Mikroilemci ierisinde deiik ilemleri gerekletirmek zere akmlatr, indis kaydedicileri, stack pointer, program counter gibi kaydediciler mevcuttur. Mikroilemciler ierisinde ilem yaplrken bu kaydedicilere veri atlabilir, toplama, karlatrma ve kaydrma gibi baz ilemle gerekletirilebilir. 1.1.1.2 Aritmetik Mantk Birimi (ALU) ALU, yrtlmekte olan komutta belirtilen iki deer zerinde aritmetik ve lojik ilemleri yerine getirir. Bu iki deerden biri daima zel bir mikroilemci kaydedicisi olan ve A kaydedicisi olarak adlandrlan kaydedicinin o anki ieriidir. Dier ALU girii ise; mikroilemcinin blmn oluturan genel amal kaydedici grubundan bir baka kaydedicidir. 1.1.1.3 Zamanlama-Kontrol Birimi Mikroilemcinin kontrol birimi, mikroilemcinin iinde ve dnda olan btn veri aktarmlarn ve ALU ilemlerini kontrol eder ve evre birimlerle e zamanlama iin gerekli sinyallemeyi salar. Ayrca, kontrol birimi ALUda en son yaplan aritmetik ve mantksal ilemin sonucunu yanstan bayraklar giri olarak alr. 1.1.2 Giri-k Birimi (G/) Mikroilemcinin d dnya ile ilikisinin saland nitedir. Mikroilemciye verilen bilgiler bu nite yolu ile ilemci ierisine alnrken, CPU ve dier birimlerde ilenen veriler yine bu nite sayesinde d ortama aktarlrlar.

1.1.3 Bellek Bellek bir mikro bilgisayar sistemi ierisinde bilgileri saklar. Bellek iki blme ayrlmtr. Bir blm program saklar, dier blm ise mikro bilgisayara gerek duyduu bilgi ya da veriyi tutmak iin kullanlr. Genel amal bir mikro bilgisayar sisteminde program sklkla deitirilir. amar makinas denetleyicisi gibi bir mikroilemci tabanl sistemde program, fabrikada retilirken yklenmitir ve asla deimez. Bu tr bir uygulama iin program ROM ad verilen zel bir bellek trnde saklanr. ROM (Sadece okunur bellek):Program deyimleri, veri vb. sadece ROM bellekten kopya edilebilir. Yapmc veya kullanc tarafndan ROM bellee kaydedilen hibir bilgi deitirilemez ve bu tr belleklere yeni kayt yaplamaz. ROM belleklerden baka bir de RAM bellekler de vardr. RAM (Rastgele eriimi bellek): Kural olarak RAM lar, zerinde yazma ve okuma ilemleri yaplabilen bellekler olarak tanmlanmtr. Bir baka deyile RAM, deiken veri saklayabilen bir rastgele eriimli bellektir. RAM, bir elektronik devre olduu iin, gce gereksinim duyar. G kayna kesildii anda ok anlk olsa bile saklanan bir veri yitirilir. Sistem anahtar kapatld anda, bellein ierii yitirilmi olur. Bu nedenle bu bellee kalc olmayan saklama ortam ad verilir. Baka bellek trleri de vardr. rnein, EPROM, silinebilir programlanabilir ROM dur. EPROM, programcya bir yonga satn alp bunu programlama imkan verir. 1.2 Mikrodenetleyiciler Bir yazlm olmadan hibir ie yaramayan, ancak ierisine yazlan program vastasyla istenilen bir ilemi gerekletiren kontrol elemandr. Mikrodenetleyici yazlm olmas halinde neredeyse snrsz bir kullanm alanna sahiptir. Aslnda mikrodenetleyici bir bakma bir bilgisayardr. Her nekadar bir klavyesi, monitr, kasas ve bunun gibi evre birimleri olmasa da bir bilgisayarn yapt hereyi

yapabilir. rnein her bilgisayarn bir merkezi ilem nitesi (CPU:Central Processing Unit) vardr ve bu nite makine kodlarn bizim anlayabileceimiz karakterlere dntrr, programlar yorumlar, iler, dzenler, bilgisayarn eitli birimleriyle irtibat kurar. Ve bu ilemleri yaparken baz deikenleri ve geici olarak elde ettii bilgileri saklad bir rastgele eriimli hafzaya (RAM:Random Access Memory) ihtiya duyar. Ayrca bilgisayarlarn d dnyayla bilgi al ve verilerinde kullandklar baz giri ve k niteleri bulunmaktadr. rnek olarak fare ve klavye giri yaptmz elemanlara, monitr ve yazc k aldmz elemanlara birer rnektir. Bilgilerimizi kaydettiimiz harddiskler ise hem giri hem de k eleman olarak almaktadrlar. Aynen bilgisayarda olduu gibi mikrodenetleyiciye de fare ve klavye gibi evre elemanlarnn ilemlerini nispeten de olsa yerine getirecek elemanlar ekleyerek kk bir bilgisayar gibi kullanmamz mmkndr. Bir mikrodenetleyici genel olarak aadaki birimlerden oluur: CPU (Merkezi ilem nitesi - central processing unit) RAM (Rastgele eriimli bellek-Random Access Memory) EPROM/PROM/ROM (Silinir, yazlr sadece okunur bellek-Erasable Programmable I/O (Girdi/kt - input/output) - seri ve paralel Timers (Zamanlayclar) Interrupt controller (Kesmeler) Sadece kullanlacak ie uygun zellikleri bulunan bir mikrodenetleyici seildiinde maliyet nispeten dmektedir. Mikrodenetleyicilerde ilemler ve komutlar bit bit kontrol edilebildiinden giri ve k birimleri ve kesmeler ok etkin bir ekilde kulllanlabilmektedir. u an kullandmz masast veya dizst bilgisayarlar genel amal bilgisayarlardr ve binlerce program altrbilirler. Mikrodenetleyiciler ise zel amal bilgisayarlardr. ve programlandklar eyi en iyi ekilde yaparlar. Bunun dnda; Mikrodenetleyiciler sadece bir i iin programlanmlardr ve bu program ilerindeki

Read Only Memory)

ROM'da deimemek zere sakl bulunur.

Mikrodenetleyiciler dk gte alan iplerdir. Bir bilgisayar 50W civar g Mikrodenetleyicelere sadece girdi yaplmaz ayn zamanda kt da alnabilir. LED

harcarken mikrodenetleyiciler sadece 50 miliWatt civarnda gharcarlar. gstergelerle, sv kristal gstergelerle, ikaz sesleriyle vb.. rnein televizyonunuzda ve uzaktan kumandasnda bulunan mikrodenetleyicilerden bahsedelim. Kumandada bulunan mikrodenetleyici tulara bastmzda girdisini alm olur ve bunu televizyondaki alc mikrodenetleyiciye gnderir. Ve o mikrodenetleyici de gelen sinyale gre k vererek ya kanal seer, ya ses ayar yapar ya da televizyonla ilgili ilemleri yapar. Mikrodenetleyiceler genelde kk ve dk fiyatl iplerdir. Bir ok paradan oluan kompleks birdevreyi kolayca kk boyutlara ve maliyete indirmenizi salar. Ayrca mikrodenetleyiceler belleklerine gre de eit gsterirler ; 1.2.1 EEPROM Bellekli Mikrodenetleyiciler Elektriksel olarak silinebilen ve yazlabilen belleklerdir.ou mikrodenetleyicilerde snrl sayda bulunan EEPROM lar, bir defadan fazla yazlp silinebildikleri iin olduka kullanldr. 1.2.2 Flash (EPROM) Bellekli Mikrodenetleyiciler Flash bellekler EEPROM lardan daha hzl ve daha ok yazma silme ilemine izin vermeleri ynnden stndrler. Flash belleklerde bilgilerin korunmas sz konusu deildir. 1.2.3 OTP Bellekli Mikrodenetleyiciler Bir kez programlanabilen mikrodenetleyicilerdir. OTP bir kez programlanabilen bir ROM'dur. Programnz bir EPROM programlayc ile bir kez yazdktan sonra silemez veya deitiremezsiniz. Bu yntem programnz artk tamamen hazr olduunda ve btn hatalarndan arndrldktan sonra kullanlr. Mikrodalga frnlar gibi birok rnde kullanlan ve maliyeti de olduka dk olan bu iplerin iine dk gl ve dk maliyetli CPU lar yerletirildi. Motorola 6811 ve Intel 8051 ailesi mikrodenetleyicileri bu tre iyi birer rnektir. Bunlarn yannda Microchip firmas tarafndan retilen PIC mikrodenetleyicileri de son zamanlarda olduka poplerdir.

Gnmz standartlarnda bu ipler inanlmayacak kadar kk ve dk fiyatla satn alnabilmektedir. Sradan bir mikrodenetleyici iinde en azndan 1,000 byte kapasiteye sahip bir ROM ve 20 byte kapasiteye sahip bir RAM, 8 adet I/0 pini bulundurabilir.

1.3 Mikrodenetleyicinin Mikroilemciye Olan stnlkleri Mikroilemcinin kullanm ve mikroilemcili sistemin tasarm mikrodenetleyicili Mikrodenetleyicili bir sistemin almas iin elemann kendisi ve bir osilasyon Mikrodenetleyicinin ihtiya duyduu nbellek ve giri k birimi bir yonga ierisinde

sisteme gre hem daha masrafl hem de daha karmaktr. kaynann olmas yeterlidir. bulunmaktadr. Ancak mikroilemcili bir sistemde nbellek harici olarak bulunur.

2-PIC MKRODENETLEYC ALESNE GENEL BAKI PIC serisi mikrodenetleyiciler MICROCHIP firmas tarafndan gelitirilmitir. retim amac; ok fonksiyonlu mantk uygulamalarnn hzl ve ucuz bir mikrodenetleyici ile yazlm yoluyla karlanmasdr. PICin kelime anlam PERIPHERAL INTERFACE CONTROLLER (evresel arabirim denetleyicisi) dir. lk olarak 1994 ylnda 16 bitlik ve 32 bitlik byk ilemcilerin giri ve klarndaki yk azaltmak ve denetlemek amacyla ok hzl ve ucuz bir zme ihtiya duyulduu iin gelitirilmitir. ok geni bir rn ailesinin ilk yesi olan PIC16C54 bu ihtiyacn ilk rndr. PIC denetleyicileri RISC benzeri ilemciler olarak anlr. PIC16C54 12 Bit komut hafza genilii olan 8 bitlik CMOS bir ilemcidir. 18 bacakl dip klfta 13 I/O bacana sahiptir ve 20 Mhz osilator hzna kadar kullanlabilir. 33 adet komut iermektedir. 512 byte program EPROMu ve 25 byte RAM`i bulunmaktadr. Bu hafza kapasitesi CISC ilemciler iin dk gibi grnebilir ancak PICin RISC denetleyici olmas birok iin bu kapasitede uygulanmasna olanak vermektedir. PIC serisi tm denetleyiciler herhangi bir ek bellek veya giri/k eleman gerektirmeden sadece 2 adet kondansatr, 1 adet diren ve bir kristal ile altrlabilmektedir. Tek bacaktan 40 mA akm ekilebilme ve entegre toplam olarak 150 mA akm aktma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansnda ektii akm; alrken 2 mA, stand-by durumunda ise 20uA kadardr. PIC 16C54 un mensup olduu denetleyici ailesi 12Bit core 16C5X olarak anlr. Bu gruba temel grup ad verilir. Bu ailenin yesi dier denetleyiciler PIC16C57, PIC16C58 ve dnyann en kk ilemcisi olarak anlan 8 bacakl PIC12C508 ve PIC 12C509dur.

Interrupt (Kesme) kapasitesi ilk denetleyici ailesi olan 12Bit Core 16C5X ailesinde bulunmamaktadr. Daha sonra retilen ve orta snf olarak tannan 14Bit Core- 16CXX ailesi birok adan daha yetenekli bir grup ilemcidir. Bu ailenin temel zellii interrupt kapasitesi ve 14 bitlik komut ileme hafzasdr. Bu zellikler PICi gerek bir denetleyici olmaya ve karmak ilemlerde kullanlmaya yatkn hale getirmitir. PIC16CXX ailesi en geni rn yelpazesine sahip ailedir. 16CXX ailesinin en nemli zellikleri seri olarak devre stnde dahi programlanmasdr. PIC 16CXX ailesinin amatr elektronikiler arasnda en ok tannan ve dnyada zerinde enok proje retilmi eleman ise PIC16C84 veya PIC16F84 tur. PIC 16F84 un bu kadar popler olmas onun ok iyi bir denetleyici olmasndan ziyade program belleinin EEPROM (Elektrikle silinip yazlabilen bellek) olmasndan kaynaklanmaktadr. Seri olarak drt adet kabloyla programlanmas da dier nemli avantajdr. Bugne kadar amatrce bir ilemciyle uram herkesin en byk sknts EPROM veya EPROM tabanl denetleyicileri programladktan sonra UltraViole k kayna ile silip tekrar programlamaktr. Bu ok zahmetli ve bir amatr iin ekipman gerektiren yntem olmutur. Tasarlanan PIC kontroll ift kanall dijital termometrede sistemi kontrol etmek iin kullanlan PIC 16F877 ise PIC 16F84n tm zelliklerini tamaktadr.Ayrca PIC 16F877 de PIC16F84 e ek olarak baz zellikleri yer almaktadr 2.1 PIC eitleri Microchip rettii mikrodenetleyicileri 4 gruba ayrarak isimlendirmitir. Her bir grubu ise bir PIC ailesi olarak adlandrmtr. PIC ailelerine isim verilirken kelime boyu (word lenght) gz nne alnmtr. Bu ksmda kelime boyunun ne anlama geldiini aklamakta fayda vardr. Mikroiemciler (CPU) veya mikrodenetleyiciler (MCU) kendi ilerindeki dahili veri saklama alanlar olan kayededicileri arasndaki veri alveriini farkl saydaki bitlerle yaparlar. rnein 8088 mikroilemcisi ip ierisindeki veri alveriini 16 bit ile yaparken, pentium ilemcileri 32 bitlik verilerle iletiim kurarlar. Bir CPU veya MCUnun dahili veri yolu uzunluuna kelime boyu denir.

Microchip PICleri 12/14/16 bitlik kelime boylarnda retilmektedir ve buna gre aadaki aile isimleri mevcuttur. PIC 16C5XX ailesi 12 bit kelime boyu PIC 16CXXX ailesi 14 bit kelime boyu PIC 17CXXX ailesi 16 bit kelime boyu PIC 12CXXX ailesi 12 bit/14 bit kelime boyu Bir MCU ip dndaki harici nitelerle veri alveriini ka bitle yapyorsa buna veri yolu bit says denir. PICler farkl kelime boylarnda retilmelerine ramen harici veri yolu tm PIC ailelerinde 8 bittir. Yani bir PIC, G/ portu aracl ile evresel nitelerle veri alverii yaparken 8 bitlik veri yolu kullanr. PIC programclar program kodlarn yazarken bir komutun ka bitlik kelime boyundan olutuu ile pek fazla ilgilenmezler. Seilen bir ipi programlarken uyulmas gereken kurallar ve o iple ilgili zelliklerin bilinmesi yeterlidir. Bu zellikler PICin bellek miktar, G/ portu says, A/D dntrcye sahip olup olmad, kesme (interrupt) fonksiyonlarnn bulunup bulunmad, bellek tipinin ne olduu (Flash, EPROM, EEPROM vb) gibi bilgilerdir. 2.2 PIC Mikrodenetleyicilerinin Tercih Sebepleri a-) Fiyatnn ucuz olmas; b-) Mantksal ilemlerde performansnn yksek olmas; c-) Verilere ve bellee hzl bir ekilde eriimin salanmas; d-) 8 bitlik bir mikrodenetleyici olmas ; e-) Veri ve bellek iin ar yollarn (buslarn) ayrlm olmas; f-) Yksek frekanslarda alabilme zellii; g-) Uyku modunda (Sleep mode) 1A gibi kk bir akm ekmesi; h-) 14 bitlik komut ileme hafzas; i-) Yalnzca 2 kondansatr ve bir diren ile alabilme zellii; j-) RISC mimarisine sahip olmas; 2.3 PICin zellikleri

10

Gvenirlik:PIC komutlar bellekte ok az yer kaplarlar. Dolaysyla bu komutlar 12

veya 14 bitlik bir program bellek szcne sarlar. Harward mimarisi kullanlmayan mikrodenetleyicilerde yazlm programnn veri ksmna atlama yaparak bu verilerin komut gibi almasn salamaktadr . Bu ise byk hatalara yol amaktadr. PIC lerde bu durum engellenmitir. Hz: PIC olduka hzl bir mikrodenetleyicidir. Her bir komut satr 1snlik bir zaman

diliminde ilenir. rnein 5 milyon komutluk bir programn 20Mhz lik bir kristalle iletilmesi yalnz 1sn srer. Bu sre kabaca 386 diye tanmladmz saysal bilgisayarn hznn yaklak 2 katdr. Ayrca PIClerin RISC mimarisine sahip olmasnn hza etkisi olduka byktr. Komut Takm:PICte bir ilem gerekletirmek iin kullanlacak komut says

olduka azdr. rnein PIC16F8XX ailesinde 33 komutu kullanarak snrsz sayda ilem yapabilmek mmkndr. Statik ilem:PIC mikrodenetleyici tamamyla statik bir ilemcidir. Bu da demek oluyor

ki ilemciye pals salayan osilasyon kayna durdurulsa bile ilenen veriler muhafaza edilmektedir. Srme zellii: PICler yksek bir srme kapasitesine sahiptir. k olarak

tanmlanan pinlerin yalnz birinin aktif olmas halinde 40mA ekilebilmektedir. Entegre elemann tamam dnldnde ise 150 mAe kadar akm ekilebilmektedir. Gvenlik: PIC retim zellii itibariyle bir protect yani koruma bitine sahiptir. Bu

bitin programlanmas yolu ile PIC ierisine yazlan programn bakalar tarafndan okunmas ve kopyalanmasna engel olunmu olunur. Flash olma zellii: Bu zellik PICin yeniden programlanabilir olmas durumunu

ifade etmektedir. Yani PIC zerine yazlan program gelitirme amac ile silinebilir ve yeni bir program yklenebilir. 2.4 Bir PICin lem Yapabilmesi in Gerekli Bileenler Giri-k (I/O): Mikrodenetleyicinin d dnya ile ilikisini salayan, girdi ve kt

eklinde ayarlanabilen bir balant pinidir.

10

11

Yazlm: Mikrodenetleyicinin almasn ve iletilmesini salayan bilgidir. Baarl bir

uygulama iin yazlm hatasz olmaldr. Yazlm C, Pascal veya Assembler gibi eitli dillerde veya ikilik(binary) olarak yazlabilir Donanm: Mikrodenetleyiciyi, bellek, arabirim bileenleri, g kaynaklar, sinyal

dzenleyici devreler ve bunlar altrmak ve arabirim grevini stlenmek iin bu cihazlara balanan tm bileenlerdir Simlatr:PC zerinde alan ve mikrodenetleyicinin iindeki ilemleri simle eden

MPSIM gibi bir yazlm paketidir. Hangi olaylarn ne zaman meydana geldii biliniyorsa bir simlatr kullanmak tasarmlar test etmek iin kolay bir yol olacaktr. te yandan simlatr, programlar tmyle veya adm adm izleyerek hatalardan arndrma frsat sunar. u anda en gelimi simlatr program Microchip firmasnn gelitirdii MPLAB programdr. ICE : PIC MASTER olarak da adlandrlr. (In- Circuit Emulator / devre takipisi)

PC ve Mikrodenetleyicinin yer alaca soket arasna balanm yararl bir geretir. Bu gere yazlm, PC de alrken devre kart zerinde bir mikrodenetleyici gibi davranr. ICE, bir programa girilmesini, mikro iinde neler olduunu ve d dnyayla nasl iletiim kurulduunun izlenilmesini mmkn klar. Programlayc : Yazlmn mikrodenetleyicinin belleinde programlamasn ve

bylece ICE nin yardm olmadan almasn salayan bir birimdir. ounlukla seri port a (rnein ICSTART, PROMASTER) balanan bu birimler ok eitli biim, ebat ve fiyatlara sahiptir. Kaynak Dosyas : Hem asembler in hem de tasarmcnn anlayabilecei dilde

yazlm bir programdr. Kaynak dosya mikrodenetleyicinin anlayabilmesi iin nceden assemble edilmi olmaldr. Assembler : Kaynak dosyay bir nesne dosyaya dntren yazlm paketidir. Hata

aratrma bu paketin yerleik bir zelliidir. Bu zellik assemble edilme srecinde hatalar ktka program hatalardan arndrrken kullanlr. MPASM, tm PIC ailesini elinde tutan Microchip in son assemble edicisidir.

11

12

Nesne dosyas (object file) : Assembler tarafndan retilen bu dosya; programc,

similatr veya ICE nin anlayabilecekleri ve bylelikle dosyann ilevlerinin almasn salayabilecekleri bir dosyadr. Dosya uzants assemble edicinin emirlerine bal olarak , .OBJ veya .HEX olur.

3-PIC 16F877 3.1 Genel Tanmlama PIC 16F877 yksek performansl, CMOS, full-statik, 8 bit mikrodenetleyicidir. Tm PIC 16/17 mikrodenetleyicileri gibi PIC 16F877 de RISC mimarisini kullanmaktadr. PIC16F87X mikrolar birok esas zelliklere sahiptir. 14 seviyeli, derin kme ve oklu i ve d kesme kaynaklarna sahiptir. 2 aamal komut hatt tm komutlarn tek bir saykl la (evrimle) ilenmesini salamaktadr. Yalnzca baz zel komutlar 2 saykl ekerler. Bu komutlar dallanma komutlardr. PIC16F87X ailesi d elemanlar azaltacak spesifik zelliklere sahiptir ve bylece maliyet minimuma inmekte, sistemin gvenirlii artmakta, enerji sarfiyat azalmaktadr. Bunun yan sra tm PIClerde 4 adet osilatr seenei mevcuttur. Bunlarda tek pinli RC osilatr, dk maliyet (4 MHZ) , LP osilatr (Kristal veya seramik rezonatr) , enerji sarfiyatn minimize etmekte (asgari akm) (40 KHZ), XT kristal veya seramik rezonatr osilatr standart hzl ve HS kristal veya seramik rezonatrl osilatr ok yksek hza sahiptir (20 MHZ). PIC mikrodenetleyicilerinin en byk zellii sleep modu zelliidir. Bu mod sayesinde ilem yaplmad durumlarda PIC uyuma moduna geerek ok dk akm eker. Kullanc bir ka i ve d kesmelerle PIC i uyuma modundan karabilmektedir. Yksek gvenilirlikli Watchdog Timer kendi bnyesindeki ip st RC osilatr ile yazlm kilitlemeye kar korumaktadr. PIC16F877 EEPROM program bellei , ayn aygt paketinin orjinali ve retimi iin kullanlmasna olanak vermektedir. Yeniden programlanabilirlii mikroyu uygulamann sonundan kaldrmadan kodu gncelletirmeye izin vermektedir. Bu aygtn kolayca eriilemedii, fakat prototipinin kod gncelletirmesi gerekli olduu durumlarda, bir ok uygulamann gelitirilmesinde yararldr. Bunun yan sra bu kodun gncelletirilmesi dier ayr uygulamalarda da yararldr. 3.2 PIC 16F877nin Genel zellikleri

12

13

Yksek hzl RISC ilemciye sahiptir; 35 adet komut mevcuttur; Tm komutlar 1 saykl eker, (Dallanma komutlar 2 saykl eker.); 20 Mhzye kadar ilem hzna sahiptir; 8Kx14 wordlk flash program bellei mevcuttur; 368x8 baytlk data bellei; 256x8 bytelk EEPROM data bellei; PIC16C73B/74B/76/77 ile uyumlu pin yaps; Dorudan ve dolayl adresleme; Power-on Reset (POR), Power-up Timer (PWRT) , zerinde bulunan RC osilatr ile Programlanabilen kod koruma; Enerji tasarrufu iin uyku (SLEEP) modu; Dk gl yksek hzl CMOSFLASH/EEPROM teknolojisi; Tamamen statik dizayn; Devre zerinde seri programlama; 5 Vluk kaynak ile alma; 2 V ile 5.5 V arasnda ilem yapabilme zellii; Dkj g harcamas;

alan Watchdog Timer (WDT);

- < 2 mA typical @ 5V, 4 MHz -20 mA typical @ 3V, 32 kHz -< 1 mA typical standby 3.3 PIC 16F877nin Belirleyici zellikleri Timer0: 8 bit pescalere sahip 8bit zamanlayc/sayc, Timer1:Sleep modunda art gsterebilen ve harici saat darbesiyle artrlabilen Timer2:8bit peryot kaydedicili,prescaler ve postscalerli 16bit zamanlayc/sayc, ki adet tutma,karlatrma, PWM modl 200ns znrlkte 16 bitlik karlatrma 10 bit znrlkte PWM 10 bit ok kanall Analog-Dijital evirici

Prescaler li 16 bit zamanlayc/sayc,

13

14

Seri port ve I2C modlleri 9 bit adres saptamaya sahip USART/SCI 8 bit geniliinde paralel slave port Aada tablo de PIC16F877nin PIC 16F84 ile karlatrlmas yer almaktadr. PIC 16F877 ile PIC 16F84n karlatrlmas

ZELLKLER alma hz Program bellei Eeprom bellei Kullanc RAM Giri/k port says Timer A/D evirici Capture/Comp/PWM Seri evresel arayz Parelel slave port USART/SCI

PIC 16F877 DC-20 Mhz 8Kx14 word Flash ROM 256 byte 368x8 byte 33 Timer0,Timer1,Timer2 8 kanal 10 bit 16 bit Capture 16 bit compare 10 bit PWM znrlk SPI ve I2C modunda SPI portu (senkron seri port) 8 bit, harici RD,WR ve CS kontrollu 9 bit adresli

PIC 16F84 DC-10 Mhz 1Kx14 word Flash ROM 64 byte 68 x 8 byte 13 Timer0 YOK YOK YOK YOK YOK

3.4 PIC 16F877nin Fiziksel Yapsnn ncelenmesi


MCLR/VPP/THV RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 VDD VSS OSC1/CLKIN OSC2/CLKOUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RD0/PSP0 RD1/PSP1 1 2 3 4 5 6 40 39 38 37 36 35 RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT VDD VSS RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3/PSP3 RD2/PSP2

9 10 11 12 13 14 15 16 17 18 19 20

PIC16F877
14

7 8

34 33 32 31 30 29 28 27 26 25 24 23 22 21

15

ekil 3.PIC 16F877nin bacak yaps 3.5 PIC 16F877 Pin Tanmlamalar Tablo 3.2:PIC 16F877de Pin Tanmlamalar

15

16

Tablo de; P:Power, G/:Giri/k, ST: Schmitt Trigger giri, G:Giri, :k, TTL:Transistor-Transistor lojik giri 3.6 PIC 16F877nin Basitletirilmi Yaps
PortA 13 Flash Program Bellei Data Bus Program Sayac 8
RA4/T0CKI RA5/AN4/SS RA3/AN3/VREF+ RA2/AN2/VREFRA1/AN1 RA0/AN0

RAM Dosya Kaydedicileri Program Bus 14 8 Seviye Yn ( 13 Bit ) 9 RAM Adr.

PortB
RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD

Komut Kaydedicisi 7 Direk Adr.

Adr. Mux. Dolayl Adr. FSR Kayd. 8 STATUS Kayd. TMR0 PortD TMR0 PortC

RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT

Komut Kod zcs

Power-up Timer Oscillator Start-up Timer Power-on Reset Watchdog Timer Brown-out Reset ALU

Mux.
RD7/PSP7:RD0/PSP0

TMR0 PortE
RE0/AN5/RD

Zamanlama Kayna

8
W Kayd. TMR0

RE1/AN6/WR RE2/AN7/CS

OSC2/CLKOUT OSC1/CLKIN

MCLR Vdd,Vss

ekil : PIC 16F877 basitletirilmi i yaps 3.7 Bellek Organizasyonu

16

17

Her PIC mikrodenetleyicisinde 3 bellek blou bulunmaktadr. Bunlar program bellei,veri bellei ve bunlar ayran veri hattdr. Her bir bellek kendi taycsna sahiptir; bylece her bir bloa eriim ayn osilatr sreci boyunca meydana gelebilmektedir. Bunun tesinde, veri bellei genel amal RAM ve zel fonksiyon kaytlar (SFR) olmak zere ikiye blnr. SFR`ler her bir bireysel zellemi modl ele alan blmde aklanan zel modlleri kontrol etmek iin kullanlmaktadr. Veri bellei EEPROM veri belleini de iermektedir. Bu bellek, direkt veri belleine planlanmam, fakat indirekt olarak planlanmtr; ve indirekt adres gstergeleri okumak/yazmak iin EEPROM belleinin adresini belirlemektedir. 3.7.1 Program Bellek Organizasyonu PIC 16F877 13 bit program sayacna ve 8Kx14 adresleme kapasitesine sahiptir. PIC16F877 denetleyicisi 8Kx14 FLASH program belleine sahiptir. Reset vektr 0000h ve kesme vektr 0004h adresindedir. ekil te PIC16F877 program bellek haritas grlmektedir.

ekil 3.3:PIC16F877 program bellek haritas

17

18

3.7.2 Veri Bellek Organizasyonu Veri bellei genel amal yazmalar ve zel ilev yazmalar (SFR) olmak zere ikiye ayrlr. RP0 ve RP1 bitleri kme seimi iin ayrlm bitlerdir. Her bir bank (kme) 7Fh ye kadar (128 bayt) uzanr. Her bankn alt ksmlar zel ilev yazmalar iin ayrlr. stteki zel ilev yazmalar ise statik RAM olarak kullanlan yazmalardr. Btn banklarda zel ilev yazmalar vardr. zel ilev yazmalarndaki yksek kullanm bir banktan kod indirgemesi ve hzl eriim iin baka bankta gsterilebilir.
RP1 RP0

= 00 Bank0 = 01 Bank1 = 10 Bank2 = 11 Bank3 3.8 zel Fonksiyon Kaydedicileri zel fonksiyon kaydedicileri gerek bellek birimleri olarak gzkmeseler de, PIC ierisinde veri bellei adreslerinde tanmlanm sradan bellek hcreleridir. Bu kaydediciler programlama esnasnda bir nevi kayt tutma grevi stlenirler. Tablo 3.3te zel fonksiyon kaydedicilerinin isimleri ve adresleri verilmitir. Tablo : PIC 16F877de zel Fonksiyon Kaydedicileri ve Adresleri 00 01 02 03 04 05 06 07 08 09 0A BANK 0 INDF TMR0 PCL STATUS FSR PORTA PORTB PORTC PORTD PORTE PCLATH 80 81 82 83 84 85 86 87 88 89 8A BANK 1 INDF OPTION_REG PCL STATUS FSR TRISA TRISB TRISC TRISD TRISE PCLATH 100 101 102 103 104 105 106 107 108 109 10A BANK 2 INDF TMR0 PCL STATUS FSR PORTB PCLATH

18

19

0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F

INTCON PIR1 PIR2 TMR1L TMR1H T1CON TMR2 T2CON SSPBUF SSPCON CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG CCPR2L CCPR2H CCP2CON ADRESH ADCON0

8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F

INTCON PIE1 PIE2 PCON SSPCON2 PR2 SSPADD SSPSTAT TXSTA SPBRG ADRESL ADCON1

10B 10C 10D 10E 10F 180 181 182 183 184 185 186 187 188 189 18A 18B 18C 18D 18E 18F

INTCON EEDATA EEADR EEDATH EEADRH BANK 3 INDF OPTION_REG PCL STATUS FSR TRISB PCLATH INTCON EECON1 EECON2

3.8.1 STATUS Kaydedicisi Aritmetiksel ilemlerin yrtld, sfrlama ilemlerinin gerekletirildii ve kme kurma ilemlerinin gerekletirildii kaydedicidir.

ekil 3.4:Status kaydedicisinin bit yerleimi Status,0 (C): (Carry Bit)Aritmetiksel ilemler sonucunda tamalarn kaydedildii bittir. Bu bit bir ilem sonucunda 1 ise tamann olduu, 0 ise tamann olmad anlalr. Status,1(DC):(Digit Carry Bit)Bu bit; ilem sonucunda ilk 4 bitin dna tama olup olmadnn kaydn tutar. Eer bu bit 1 ise 5. bite tama olduu, 0 ise 5. bite tama olmad anlalr.

19

20

Status,2(Z):(Zero Bit)lem yaplan hcrede sfrlamann olup olmadnn kontroln yapar. 1 ise kontroln yapld hcrenin saysal deeri 0 olmu demektir, 0 ise hcre sfrdan farkl bir saysal deere sahiptir. Status,3(PD):(Power Down Bit)Sleep modu ve watchdog timer ile ilgili ilemlerde kullanlr. Watchdog timer sfrlandktan sonra (CLRWDT) bu bit 1 yaplmaldr. Mikrodenetleyici sleep moduna sokulur iken de bu bit 0 yaplarak ileme balanr. Status,4(TO):(Time Out Bit)PD biti gibi bu bit de sleep modu ve watchdog timer ile ilgili ilemlerde kullanlr. Watchdog timerin sfrlanmas ilemi sonunda bu bit 0 yaplrken, mikrodenetleyici sleep modundan karlrken bu bit 1 yaplr. Status,5,6(RP0-RP1):(Register Bank Select Bits) Kme seimi ile ilgili ilemlerde kullanlrlar. ki bit bir arada dnldnde 4 konum mevcuttur ve bu drt konumun her birisinde de ayr bir kme kurulmaktadr.(00=Bank0, 01=Bank1, 10=Bank2, 11=Bank3). Direkt adresleme modunda kullanlan bir bittir. Status,7 (IRP): Status5,6 gibi bu bit de kme seimi ilemlerinde kullanlr. Ancak bu bit dolayl adresleme durumlarnda kullanlr.( 1 = Bank 2, 3 0 = Bank 0, 1 ) 3.8.2 OPTION Kaydedicisi Bu kaydedici zerinde portB, TMR0 ve d kesmeleri dzenleyici bitler bulunmaktadr.

ekil 3.5:Option Kaydedicinin bit yerleimi Option,0,1,2(PS0,PS1,PS2):(Prescaler Rate Select Bits)Timer0(TMR0) ve

Watchdog Timer (WDT)n sre oranlarn belirleyen bitlrdir. bit bir arada dnld zaman 8 farkl durum ortaya kmaktadr. 8 durum iin TMR0 ve WDTn ald durumlar Tablo 3.4 teverilmitir.

20

21

Tablo 3.4:PS2,PS1,PS0a gre TMR0,WDT oranlar

Option,3(PSA):(Prescaler Assignment Bit) Ald duruma gre TMR0 veya WDTa tahsis edilir. Eer 0 ise TMR0 zerinde yaplan ilemlerde kullanlr, 1 ise WDT zerinde yaplan ilemlerde kullanlr. Option,4(TOSE):(Timer0 Source Edge select bit) Devrede harici clock kayna kullanlmas durumunda palslerin den kenar m yoksa ykselen kenar m olduunun tayininde ilem yapar. Eer 1 ise RA4/TOCKI pininde kullanlan palslerin den kenar, 0 ise RA4/TOCKI pinindeki palslerin ykselen kenar olmas gerekir. Option,5(TOCS):(Timer0 Source select) PIC ile yaplan devrede hangi pals kaynann kullanlacana karar vermek iin kullanlr. Eer 1 ise palsler RA4/TOCKI pininden, 0 ise dahili pals kaynandan (CLKOUT) salanr. Option,6(INTEDG):(Interrupt edge select )RBO/INT pininde kesme sinyali olmas halinde ykselen kenar veya den kenar tetikleme gnderilmesi durumlarn ayarlar. 1 ise RBO/INT pininden ykselen kenar, 0 ise RBO/INT pininden den kenar bir tetikleme uygulanmaldr. Option,7(RBPU):(PortB Pull-up Control ): Bu bit uygulamalarda alan daralmasn salayan bir bittir. Bu bitin 1 yaplmas ile gerilimin pozitif ucu ile portB pini arasna bir diren konulur. Bu diren sayesinde PortBnin bu pini lojik 1de tutulmu ulur. Bu pini lojik 0 yapmak iin ise pin ile gerilimin negatif ucu arasn bir push buton ile ksa devre yapmak yeterli olacaktr. Bu bitin 0 yaplmas halinde ise pinledeki pull-up direnleri kaldrlr. Bu biti kullanr iken yalnz portB iin pull-up direnci konulduunu unutmamak gerekir.

21

22

ekil 3.6:RBPUnun analog dzen karl ekil 3.6.ada RBPUnun kullanlmad durumda kararllk iin B portuna taklmas gereken harici direncin balants grlmektedir. ekil 3-6-bde ise RBPUnun kullanld durum verilmitir. Bu durumda harici bir dirence ihtiya duyulmamtr. 3.8.3 INTCON Kaydedicisi Bu kaydedici tm kesmelerin kontrol iin baz okunabilir ve yazlabilir bitler salayabilmektedir.

ekil 3.7: Intcon kaydedicisinin bit yerleimi Intcon,0 (RBIF): B portuna ait kesme bayrak bitinde deiiklikler yapmaya yarar. Program banda RB7:RB4 bitlerinin sfrland varsaylr ise RB7:RB4 pinlerinden herhangibirisinin durum deitirmesi halinde RBIF 1 olur. (0dan 1e) 1den sfra dme durumunda ise RBIF lojik olarak konum deitirir ve 0 olur. Intcon,1(INTF):RB0/INT pini ile ilikilendirilmitir. Bu bitin 0 olmas durumunda RB0/INT aktif deildir, 1 olmas durumunda ise aktiftir. Intcon,2 (TOIF): TMRO da meydana gelen tamaya gre ilem yapar. Eerki TOIF 1 ise TMROda tama vardr. Aksi durumda ise tama yoktur. Intcon,3 (RBIE): levi RBIFinkine benzer. PortB kesme yetkilendirme bitidir. 1 olmas durumunda PortB kesme yetkilendirmesi aktif, dier durumda ise aktif deildir. Intcon,4 (INTE): RB0/INT kesme yetkilendirme bitidir. Bu bitin 1 olmas halinde RB0/INT pini kesme yetkilendirmesi verilmitir. 0 olmas halinde RB0/INT pininde kesme yetkilendirmesi yoktur.

22

23

Intcon,5 (TOIE): TMR0 kesmesini yetkilendirme bitidir. TOIE=1 ise kesme yetkilendirmesi aktif durumdadr. 0 olmas halinde ise TMR0 daki kesme ketkilendirmesi kalkm durumdadr.

Intcon,6 (PEIE):evresel Kesmeler iin yetkilendirme bitidir.PEIE=1 olmas durumunda evresel kesmeler etkindir,PEIE= 0 olmas durumunda evresel kesmeler etkin deildir. Intcon,7 (GIE):Geni kapsaml bir yetkilendirme bitidir. Bu bitin 1 yaplmas ile program ierisinde tm yetkilendirmeler aktif hale getirilebilir. 0 olma durumunda ise verilen tm yetkilendirmeler kaldrlabilir 3.8.4 PIE1 Kaydedicisi evresel kesmelerle ilgili ilemleri gerekletirmek iin kullanlan kaydedicidir.

ekil 3.8: PIE1 kaydedicisinin bit yerleimi Pie1,0(TMR1IE): TMR1de meydana gelen tamay saptamak iin gerekli olan kesmeyi kontrol eden bittir. TMR1IE=1 ise TMR1 tama kesmesi etkin olur,TMR1IE=0 ise TMR1 kesmesi kullanm d olur. Pie1,1(TMR2IE): TMR2 ve PR2 nin denklik kesmesini kontrol eden bittir. Kesmeyi etkinletirmek iin bu bit 1 seviyesinde, kullanm d brakmak iin ise 0 seviyesinde tutulur. Pie1,2(CCP1IE):CCP1 (Capture/Compare/PWM) kesmesini kontrol etmek iin kullanlan bittir. Eer bu bit 1 ise CCP1 kesmesi etkin olur, 0 ise CCP1 kesmesi kullanm d olur. Pie1,3(SSPIE):Ezamanl seri port (SSP= Synchronous Serial Port) uygulamalar iin kesme yetkilendirme bitidir. Bu bit 1 ise SSP kesmeleri etkin, 0 ise kullanm ddr.

23

24

Pie1,4(TXIE):USART gnderme kesmesini yetkilendirme bitidir. TXIE 1 ise kesme etkin, 0 ise kesme kullanm ddr. Pie1,5(RCIE): USART alma kesmesini yetkilendirme bitidir. RCIE 1 ise kesme etkin, 0 ise kesme kullanm ddr. Pie1,6(ADIE):A/D evirme kesmesini yetkilendirme bitidir. ADIE=1 ise kesme etkin, ADIE=0 ise kesme kullanm d yaplr. Pie1,7(PSPIE): Parallel Slave Port okuma/yazma kesmesini yetkilendirme bitidir. PSPIE 1 ise kesme etkin, 0 ise kullanm ddr. 3.8.5 PIR1 Kaydedicisi evresel kesmelerin ilemlerini bitirip bitirmediklerini kontrol eden kaydedicidir.

ekil 3.9: PIR1 kaydedicisinin bit yerleimi Pir1,0(TMR1IF): TMR1de meydana gelen tamay tutan bittir. Eer bu bit 1 ise TMR1de tama vardr,0 ise tama yoktur. Pir1,1(TMR2IF): TMR2 ile PR2 arasndaki denklii gsteren bittir. Eer TMR2IF=1 olmusa TMR2 ve PR2 arasnda bir denklik sz konusudur,TMR2IF= 0 ise byle bir durum yoktur. Pir1,2(CCP1IF):CCP1 ilemine dair bilgi veren bittir. Eer bu bit 1 ise; capture modunda TMR1 kaydedicisi capture edilmitir ve bu bitin temizlenmesi gerekir, compare modunda TMR1 kaydedicisi elik ynnden karlatrlmtr ve bu bitin temizlenmesi gerekir,0 ise CCP ilemleri tamamlanmamtr. Pir1,3(SSPIF):Ezamanl seri port (SSP) uygulamalarnn durumlarn gsteren bittir. Bu bit 1 ise SSP ilemleri tamamlanmtr, 0 ise tamamlanmamtr. Pir1,4(TXIF): USART gnderme hattnn durumunu gsteren bittir. TXIE 1 ise USART gnderme hatt bo,0 ise doludur.

24

25

Pir1,5(RCIF): USART alma hattnn durumunu gsteren bittir. RCIE=1 ise USART alma hatt dolu,RCIF=0 ise botur. Pir1,6(ADIF):A/D evirme ileminin tamamlanp tamamlanmad hakknda bilgi veren bittir. ADIF 1 ise evirme ilemi tamamlanm, 0 ise tamamlanmamtr. Pir1,7(PSPIF): Parallel Slave Port okuma/yazma ileminin tamamlanp tamamlanmadn gsteren bittir. PSPIF 1 ise okuma/yazma ilemi tamamlanmtr, 0 ise okuma/yazma ilemi henz tamamlanmamtr. 3.8.6 PIE2 Kaydedicisi CCP2 evresel kesmesi, SSP hat akmas ve EEPROM yazma kesmesi kontrollerinin yapld kaydedicidir.

ekil 3.10: PIE2 kaydedicisinin bit yerleimi Pie2,0 (CCP2IE): CCP2 (Capture/Compare/PWM) kesmesini kontrol etmek iin kullanlan bittir. Eer bu bit 1 ise CCP2 kesmesi etkin olur, 0 ise CCP1 kesmesi kullanm d olur. Pie2,1-2:Kullanm ddr ve daima 0 seviyesindedir. Pie2,3(BCLIE):Hat akma kesmesidir. BCLIE =1 olmas durumunda bu kesme etkin, BCLIE=0 olmas durumnda ise kullanm ddr. Pie2,4(EEIE):EEProm yazma kesmesi yetkilendirme bitidir. EEIE=1 ise yazma kesmesi etkin,EEIE= 0 ise kullanm ddr. Pie2,5: Kullanm ddr ve daima 0 seviyesindedir. Pie2,6:Baka ilemler iin ayrlmtr. Pie2,7: Kullanm ddr ve daima 0 seviyesindedir. 3.8.7 PIR2 Kaydedicisi

25

26

CCP2 evresel kesmesi, SSP hat akma kesmesi ve EEPROM yazma kesmesinin yapt ilemler hakknda bilgi veren bitleri bulunduran bir kaydedicidir.

ekil 3.11: PIR2 kaydedicisinin bit yerleimi Pie2,0 (CCP2IF): CCP2 ilemleri ile ilgili kayt tutan bir bittir. Eer bu bit 1 ise; CCP2 ilemleri tamamlanmtr, 0 ise tamamlanmamtr. Pie2,1-2:Kullanm ddr ve daima 0 seviyesindedir. Pie2,3(BCLIF):Hat akmasn izleyebileceimiz bir bittir. BCLIF 1 ise SSPde bir akma meydana gelmitir, 0 ise byle bir durum yoktur. Pie2,4(EEIF):EEPROM yazma durumunu gsteren bittir. EEIF= 1 ise yazma lemi tamamlanmtr, 0 ise yazma ilemi tamamlanmamtr. Pie2,5: Kullanm ddr ve daima 0 seviyesindedir. Pie2,6:Baka ilemler iin ayrlmtr. Pie2,7: Kullanm ddr ve daima 0 seviyesindedir. 3.9 PCL ve PCLATH Kaydedicileri Program Saycs (PC=Program Counter) hangi satrda ilem yaplacann kaytlarn tutar ve iletim iin gidip komut alnmas ilemlerini gerekletirir. 13 bit geniliindedir. Dk bayt PCL kaydedicisi olarak adlandrlr. Bu kaydedici okunabilir ve yazlabilir zellie sahiptir. Yksek bayt ise PCH kaydedicisi olarak adlandrlr ve direkt olarak yazlamaz ve okunamaz. PCH kaytnda btn gncelletirmeler, PCLATH kaydedicisini gzden geirirler. 3.9.1 STACK (Yn)

26

27

Stack (yn) program ierisinde kesme ve arma neticesinde dallanlan 8 programn satr adreslerini tutar. Program iletilirken ise RETLW,RETURN,RETFIE gibi komutlar grldnde gidilecek satrlarn adresleri de yine ynlarda tutulur. 8 adet ynn herbirisi 13 bit genilie sahiptir ve bunlara program ierisinde mdahale edilemez. 3.10 Giri/k Portlar (G/ Portlar) G/ portlar giri/k vazifelerinin dnda baz evresel ilemleri de yapacak zelliklere sahiptirler. evre birimleri kullanldnda genel amal giri/k pini kullanlmaz. 3.10.1 PORTA ve TRISA Kaydedicisi PORTA 6 bit giri/k olarak ynlendirilebilir porttur. Bu portu ynlendiren yazma ise TRISA yazmacdr. TRISA kaydndaki herhangi bir bit 1 ise buna uygun k srcs yksek diren moduna getirilecektir. TRISA kaydndaki herhangi bir bitin 0 olmas durumunda ise k mandal seilen pinin zerine getirilir. Analog giri kullanldnda TRISA yazmac RA pininin ynn kontrol eder. ekil 3.12.a ve ekil 3.12.b A portunun i yapsn gstermektedir.

Data Bus D WR Port Q

Ck

RA4

DATA Latch Vss D WR TRIS Q

Ck

Q Schmitt Trigger Giri Tamponu

TRIS Latch

RD TRIS Q D

En RD Port

TMR0 Clock Girii NOT: G/ Pini Vss'ye Kar Koruma Diyotuna Sahiptir

27

28

Data Bus D WR Port Q Vdd Ck Q P N D WR TRIS Q Vss Ck Q Analog Giri Modu G/ Port

DATA Latch

TRIS Latch

RD TRIS Q D

En RD Port A/D eviriciye NOT: G/ Pinleri Vdd ve Vss'ye Kar Koruma Diyotuna Sahiptir

ekil 3.12.a :RA0:RA3 ve RA5 yaps

ekil 3.12.b:R A4/TOCKI Yaps

rnek 3.1: A portunun G/ olarak kurulmas: bcf bsf status, rp0 status, rp0 ; ; Bank 1 seildi. ; Giri iin RA0,RA2 ; k iin RA1,RA3,RA4,RA5 3.10.2 PORTB ve TRISB Kaydedicisi PORTB 8 bit giri/k olarak ynlendirilebilir porttur. Bu portu ynlendiren yazma ise TRISB yazmacdr. TRISB kaydndaki herhangi bir bit 1 ise buna uygun k srcs yksek diren moduna getirilecektir. TRISB kaydndaki herhangi bir bitin 0 olmas durumunda ise k mandal seilen pinin zerine getirilir. Analog giri

movlw b00000101 ; PortA nn giri ve k olacak pinleri belirleniyor movwf trisa

28

29

kullanldnda TRISB yazmac RB pininin ynn kontrol eder. (1) Her bir PORTB pini i diren drc engellere sahiptir. RBPU(OPTION REG<7) bitinin silinmesiyle aktif yaplr. Drc engeller, port pini k olarak konfigre edildii zaman otomatik olarak kapanmaktadr. Ayrca drt PORTB pini, RB7: RB4 deiim zelliklerinde kesmelere sahiptir. Yalnzca giri olarak konfigre edilen pinlerkesmenin meydana gelmesine sebep olabilirler. (yani, herhangi bir k olarak ekillendirilen RB7:RB4 pini deiim ilikisi zerindeki kesmeden hari tutulmutur. ) Giri modundaki pinlerin deeri PORTB` nin nceki okunmasndaki eski deeri ile karlatrlr. Pinlerin uyumayan ksmlar RB port deiim kesmesini retmek iin birlikte ORlanr. ekil 3.13.a ve ekil 3.13.b portunun i yapsn gstermektedir. rnek 3.2 : B Portunun Kurulmas: bcf bsf status, rp0 status, rp0 ; ; Bank 1 seildi. ; PortB nn G/ olacak pinleri belirleniyor ; Giri iin RB<3:0> ; k iin RB<5:4>

movlw b10111111 movwf trisb

29

30

RBPU (2) Data Bus RBPU (2) Data Latch Data Bus WR Port D C TRIS Latch D WR TRIS C Q TTL Input Buffer RD TRIS RBIF kur RB7:RB4 ten gelen Q G/ pin (1) WR TRIS VDD weak P pull-up WR Port C TRIS Latch D C RD TRIS Q TTL Input Buffer Latch Q RD Port D EN Data Latch D Q

VDD

weak P pull-up

G/ pin (1)

ST Buffer

Q1

D EN

RD Port

EN

RD Port Q3

RB0/INT

Schmitt TriggerBuffer

RD Port

ekil 3.13.a: RB3:RB0 Pinleri Yaps 3.10.3 PORTC ve TRISC Kaydedicisi

ekil 3.13.b: R7:RB4 Pinleri Yaps

PORTC 8 bit G/ olarak ynlendirilebilir porttur. Bu portu ynlendiren yazma ise TRISC yazmacdr. TRISC Kaydndaki herhangi bir bit 1 ise buna uygun k srcs yksek diren moduna getirilecektir. TRISC Kaydndaki herhangi bir bitin 0 olmas durumunda ise k mandal seilen pinin zerine getirilir. Analog giri kullanldnda TRISC yazmac RC pininin ynn kontrol eder. ekil 3.14.a ve ekil 3.14.a C portunun i yapsn gstermektedir. rnek 3.3: C Portunun Kurulmas; bcf bsf status, rp0 status, rp0 ; ; Bank 1 seildi. ; kullanlan deer ; ayarlanyor. movwf trisc ; Giri iin RC<3:0> ; k iin RC<5:4>

movlw b10111111 ; Veri ynlendirmek

30

31

ekil 3.14.a: RC0:2, RC5:7 Pinlerinin Yaps 3.10.4 PORTD ve TRISD Kaydedicisi

ekil 3.14.b:RC3:4 Pinlerinin Yaps

PORTD 8 bit Schmitt trigger tampon girili porttur. Bu port PSPMODE (TRISD) denetim biti tarafndan kurulur. Giri tamponu TTL tampondur. ekil 3.15 de D portunun blok diyagram grlmektedir.

ekil 3.15: D Portu I/O Blok Diyagram

31

32

3.10.5 PORTE ve TRISE Kaydedicisi Bu port RE0/RD/AN5, RE1/WR/AN6 ve RE2/CS/AN7 olmak zere 3 adet pine sahiptir. Giri veya k portu olarak ayarlanabilir. PORTE kontrol TRISE tarafndan yaplr. PSPMODE(TRISE<4>) denetim biti tarafndan ayarlanr. ekil 3.16 da E portu blok diyagram grlmektedir.

ekil 3.16 : E Portu I/O Blok Diyagram 3.11 Veri EEPROM ve Flash Program Hafzas Veri EEPROM ve FLASH proram hafzas normal ilem sresinde okunabilme ve yazlabilme zelliine sahiptir. Veri bellei, kaydedici dosyaya dorudan planlanmamtr. Bunun yerine bu bellek, zel fonksiyon kayd zerinden dolayl olarak adreslenmitir. Burada bu bellei okuyan ve yazan 6 zel kaydedici mevcuttur. EECON1 EECON2 EEDATA EEDATH EEADR EEADRH

32

33

EEPROM veri bellei okuma ve yazmaya izin verir. EEDATA yazma/okuma iin 8 bitlik veri tutar ve EEADR eriilen EEPROM adreslerini saklar. EEDATH ve EEADRH kaydedicileri veri EEPROM u kullanmak iin eriemezler. Bu aygtlar Oh ile FFh geniliindeki adresli EEPROM belleinin 256 byte na sahiptir. EEPROM veri bellei yksek silme/yazma srelerine oranlanmtr. Yazma sresi yonga (chip) zamanlaycs tarafndan denetlenmektedir. Yazma sresi chipten chipe olduu gibi scaklk ve gerilimlede deimektedir. Program hafzas kelime okuma ve yazmasna izin verir. Byte veya word verisi otomatik olarak silinir ve yeni veri yazlr. Program hafzas arabirimi blokland zaman, EEDATH : EEDATA kaydedicileri oku/yaz iin 14 bit veriyi 2 byte word halinde tutar. EEADRH ve EEADR kaydedicileri EEPROMda 13 bitlik 2 byte word adresini tutar. Bu aygtlar OH ile 3FFFh arasndaki adreste 8K word program EEPROMuna sahiptir. Program hafzasna yazlan deer bir talimat olmay gerektirmez. Bu yzden kalibrasyon parametreleri, seri numaralar ASCII kodunda depolanabilir.(6) 3.11.1 EEADR EEADR kayd EEPROM verisinin maksimum 256 byten veya FLASHn maksimum 8K wordn adresleyebilir. Program adres deeri seilirken EEADRH kaydedicisi adresin MSBsini yazar, EEADR kaydedicisi ise LSBsini yazar.(6) 3.11.2 EECON1 ve EECON2 Kaydedicileri EECON1 bellee ulamak iin kontrol kaydedicisidir. EECON2 fiziksel kaydedici deildir. EECON2 yalnzca bellekteki yaz dizisini okumak iin kullanlr. Eer eriim, program veya veri belleine ulama olacaksa buna EEPGD denetim biti karar verir. Veri bellei temizlendiinde, sonradan yaplan ilemler veri belleine ilenirler. Bellek ayarlandnda ise yine sonradan yaplan ilemler bellee ilenirler. RD ve WR kontrol bitleri srasyla oku-yaz ilemlerini balatr.

ekil 3.17: EECON1 Kaydedicinin bit yerleimi Eecon1,0(RD): Okuma modu kontrol bitidir.1 olmas durumunda EEPROM okuma modundadr, 0 olmas durumunda ise EEPROMdan oku modundan klr.

33

34

Eecon1,1(WR):EEPROMa data yazma ilemini kontrol eden bittir. Bilgi yazm esnasnda 1 yaplr ve yazmn sonlandrlmas iin 0 yaplr. Eecon1,2(WREN):EEPROMa yazma yetkilendirme bitidir. WREN=1 olmas durumunda yazm iin izin verilmitir. WREN=0 olmas durumunda ise data yazm iin yetki yoktur. Eecom1,3(WRERR):Yazm ileminde ikaz bitidir. Yazm ileminde bir sebepten dolay erken sonlandrma var ise bunu bildiren bittir. Eer ki bu bit 1 ise, yapmak istediimiz veri yazma ilemi erken sonlandrlmtr ve bir hata sz konusudur. Bu durumda watchdog timer sfrlanr veya mikrodenetleyici resetlenerek programn bana dnlr. 0 olma durumunda ise yazm ilemi baar ile tamamlanm demektir. Eecon7,(EEPGD): Program bellei/veri bellei seim bitidir. Eer EEPGD=1 ise program belleine eriim yerkisi verilir,EEPGD= 0 ise veri belleine eriim yetkisi verilir. 3.11.3 Flash Program Belleinin Okunmas Program belleinin yeri EEADR ve EEADRH kaydedicilere adresin 2 byte yazlarak okunabilir. [ EEPGD ayarlandnda] Okuma kontrol biti bir kez ayarlanp mikrodenetleyici veriyi okumak iin komut evremini kullanacaktr. rnek 3.4: FLASH Program okuma: bsf bcf status, rp1 ; status, rp0 ; Bank 2 ; ; MSByte Program adresini oku ; ; LSByte Program adresini oku (EECON1<7>) ve RD (EECON1<0>) kontrol bitleri

movlw addrh movwf eeadrh movlw addrl movwf eeadr bsf bsf bsf

status, rp0 ; Bank 3 eecon1, eepgd ; EEPROM Program belleini eecon1, rd ; oku

34

35

nop nop bcf status, rp0

; Burada herhangi bir komut olmad iim ; ilem yaplmaz ve dng iin zaman harcanmaz ; Bank 2

3.11.4 Flash Program Belleinin Yazlmas WR Kurulum biti ayarlanr ise FLASH program bellei sadece yazlabilir duruma getirilir. FLASH Bellee yazma yeri, adresin ilk iki byte EEADR ve EEADRH kaydedicilerine yazlarak ve EEPGD/RD kontrol bitleri 1 yaplarak ilk iki byte EEDATA ve EEDATH kaydedicilerine yazlarak tespit edilir. Program hafzas yazmak iin rnek 3.5 takip edilebilir.(6) rnek 3.5: EEPROM veri yazma bsf bcf status, rp1 status, rp0 ; ; Bank 2 ; ; MSByte Program adresi oku ; ; LSByte Program adresi oku ; ; MS Program bellek deerini yaz ; ; LS Program bellek deerini yaz ; Bank 3 ; PROGRAM bellek noktas ; Yazm etkin ; Komutlar etkin deil ; ; 55h yaz ; ; AAh yaz ; WR bitini yazmaya balamak iin ayarla ;ilem yok ;ilem yok

movlw addrh movwf eeadrh movlw addrl movwf eeadr movlw datah movwf eedath movlw datal movwf eedata bsf status, rp0 bsf eecon1, eepgd bsf eecon1, wren bcf ntcon, ge movlw 55h movwf eecon2 movlw aah movwf eecon2 bsf eecon1, wr nop nop

35

36

bsf intcon, gie bcf eecon1, wren

; Komutlar aktif ; Yazma aktif deil

3.11.5 Yazm Dorulanmas EEPROM verisine yazlan deerlerin yazlmas istenen deerlerle dorulanmas gerekmektedir. Bu EEPROM biriminin spesifikasyon limitine yakn uygulamalarda kullanlmaldr. Toplam kaldrma diski , uygunluk (rahatlk) derecesini belirlemeye yardmc olacaktr. Genel olarak EEPROM yazm baarszl 1 olarak yazlan, fakat geriye 0 olarak okunan bitten kaynaklanmaktadr. rnek 3.6: Yazm dorulanmas: bcf status, rp0 ; Bank 0 ; Herhangi kod buraya gidebilir movf eedata, w bsf bsf bcf status, rp0 eecon1, rd status, rp0 ; Bank 0 da olmaldr. ; Bank1 ; Evet yazlan deeri oku ; Bank0 ; (Wreg) yazlan ve(EEDATA) okunan deerler aynm? subwf eedata, w 3.11.6 Taklit Yazlmlara Kar Koruma Baz durumlarda, aygt EEPROM veri belleine yazmak istemeyebilir. Taklit yazlmlara kar korunmak iin, deiik mekanizmalar monte edilmi, kurulmutur. Yksek gte WREN temizlenir. Bunun yan sra , yksek g timer i (72 msn sreli) EEPROM yazmn nler. Yazlm balatan ardk ve WREN biti ikisi birlikte BrownOut,g arzas veya yazlm aksamasnda tesadfi yazlmlar nlemeye devam eder. 3.11.7 Kod Koruma Sresince EEPROM Veri lemi Microdenetleyici, kod korumal durumdayken dzene sokulan verileri okuyabilir ve EEPROM verisine yazabilir. ROM aygtlarnda iki koruma biti mevcuttur. Birisi ROM program bellei dieri ise EEPROM veri bellei iindir.

36

37

3.12 Zamanlama0 (TIMER0) Modl ve TMR0 Kayd Timer0 modl, timer/saya aadaki zelliklere sahiptir. 8 bitlik timer/saya , Okunabilir ve yazlabilir , 8 bitlik programlanabilir prescaler., ten veya dtan saat ayar , FFh` tan 00h` ye tama zeri kesme , D saatin snr seimi , Timer modu TOCS bitinin (OPTION<5>) temizlenmesiyle seilir. Timer modunda Timer0 modl her bir komut srecini uzatr. Eer TMR0 kayd yazlysa, uzama takip eden 2 sreci engeller. Kullanc ayarlanan deeri TMR0 kaydna yazarak, bunun etrafndan alabilir. Saya modu TOCS bitinin (OPTION<5>) ayarlanmasyla seilir. Bu modda, TMR0, RA4/TOCK1 pininin snrlarnn herbir artnda ya da dnde artacaktr. Genileyen snr, TO kaynak snr seim biti tarafndan, TOSE (OPTION<4>) tarafndan belirlenmektedir. TOSE bitinin temizlenmesi artan snrlar seecektir. Prescaler, Timer0 modl ile Watchdog Timer arasnda paylalmaktadr. Prescaler atamas, yazlmda PSA biti kontrol tarafndan denetlenmektedir. (OPTION<3>) PSA bitinin temizlenmesi, prescaler Timer0 modlne atayacaktr. Prescaler okunabilir veya yazlabilir deildir. Prescaler, Timer0 zamanlama modlne atandnda prescaler deeri (1:2,1:4,1:8,1:16,1:32,1:64,1:128,1:256 olmak zere) yazlm tarafndan seilebilirdir. (1) 3.12.1 TMR0 Kesmesi

ekil 3.18:TMR0 blok diyagram

37

38

TMR0 kesmesi, TMR0 kayd FFH`dan 00h`ye aknda retilmektedir. Bu fazla akm TOIF bitini ( INTCON<2>) kurar (ayarlar). Kesme, aktif TOIE bitinin (INTCON<5>) temizlenmesi ile gizlenebilir. (INTCON<5>) TOIF biti, Timer0 modl tarafndan, bu kesmenin yeniden aktifletirilmesinden nce yazlmdan silinmelidir. TMR0 kesmesi (ekil 3.18) denetleyiciyi SLEEP` ten karamaz, nk, SLEEP boyunca timer kapaldr.

ekil 3.19: TMR0 Zamanlamas: Prescaler siz ten Clock 3.12.2 TMR0n Dtan Saat le Kullanm Dtan saat girileri TMR0 iin kullanldnda, baz n artlarn gerekletirilmesi gerekir. Dtan saat gereksinimi , iten faz saati senkronizasyonundan kaynaklanmaktadr. Bunun yansra, TMR0 kaydnn senkronize edilmesinden sonra, fiili artmada gecikme mevcuttur. 3.12.2.1 Dtan saat senkronizasyonu Hi bir prescaler kullanlmad taktirde , dtan saat girii prescaler kndaki gibidir. RA4/TOCKI pininin iten faz saati ile senkronize edilmesi i faz saatlerinin Q2 ve Q4 srelerindeki prescaler kn rneklemek yoluyla yerine getirilir. Bunun iin , TOCKI nin dk deerinin en azndan 2TOSC (art ufak RC gecikmesi) olmas gerekir. Prescaler kullanldnda, d saat girii asenkron sayc tipi prescaler a blnr ve bylece prescaler k simetrik olur. D saatin rnekleme gereksinmelerini karlamak iin saya (counter) dikkate alnmaldr. Bylece prescaler deerine blnen en azndan 4 TOSC peryot uzunluuna sahip olmaldr. (1)

38

39

3.12.2.2 TMR0 gecikme uzatlmas Prescaler k , i saat ile senkronize edildii iin, d saat snrlarnn meydana gelmesindeki zamandan TMR0 modlnn fiili olarak uzatlmas zamanna kadar kk bir gecikme vardr. ekil 3.20 d saat snrndan Timer uzamasna kadar gecikmeyi gstermektedir. 3.12.3 Prescaler ( Blc) 8 Bitlik saya Timer0 modlnde veya Watchdog timernda bulunur. Prescaler dardan verilen sinyali 256 ya kadar blmeye yarar. Timer0 modl ile watchdog timer arasnda karlkl istisna tutulan yalnzca bir tek prescaler mevcuttur. Bylece Timer0 modlne prescaler atamas, watchdog timern prescaleri olmad anlamna gelmektedir. PSA ve PS2 : PSO bitleri (option <3:0>) prescaler atamasn ve prescaler orann belirlemektedir.

ekil 3.20: D saatli TIMER0 zamanlaycs Timer0 modlne yazlan btn komutlar, timer0 modlne atandnda prescaleri lecektir. WDT ye atandnda , CLRWDT komutu watchdog timer boyunca prescaler i temizleyecektir. Prescaler yazlabilir veya okunabilir deildir. 3.13 Zamanlayc 1 (TIMER1) Modl Timer1 modl: Timer/saya aadaki zelliklere sahiptir. 16 bit timer/saya, Okunabilir ve yazlabilir, ten ve dtan saat seimi,

39

40

FFFFhden 000ha tama zeri kesme, CCP modlnden resetleme, ekil 3.21de Timer1in aktif/pasif, ayarlama/sfrlama ilemleri gsterilmektedir.

ekil 3.21: TIMER1 Blok diyagram 3.13.1 Zamanlayc1 (TIMER1) lemleri Timer1 aadaki modlardan birini iletebilir. Zamanlayc olarak Senkronize sayac olarak Asenkronize sayac olarak TMR1CS (T1CON<1>) biti bu modlardan hangisinin altrlacana karar verir. Zamanlayc modunda Timer1 her komut evrimi artlar, saya modunda her harici saat girii ykselmesini belirler. Timer1 osilatr aktifken RC1/T10SI ve RC0/T10S0/T1CKI pinleri giri olurlar. TRISC<1:0> deeri ihmal edilir. 3.13.2 T1CON: TIMER1 Kontrol Kaydedicisi TIMER1deki ilemlerin kontrol edildii ve ilemler yrtlrken baz bilgilerin alnd kaydedicidir.

ekil 3.22: T1CON Kaydedicinin bit yerleimi

40

41

T1con,0(TMR1ON):Timer1 e yetki veren bittir. TMR1ON biti 1 yapldnda Timer1 kullanlr durumdadr,0 ise kullanm ddr. T1con,1(TMR1CS):Timer 1 iin clock kaynann seildii bittir. TMR1CS 1 ise clock kayna olarak RC0/T1OSO/T1CKI pininden gelen sinyalin ykselen kenarlar seilir. TMR1CSnin 0 olmas halinde ise dahili clock kayna kullanlr. T1con,2(T1SYNC):Harici clock kaynann senkron kontroln yapan bittir. Eer harici kaynak ile Timer1 ezamanl almyorsa T1SYNC 1 seviyesinde olur. Eer ezamanl bir alma var ise T1SYNC 0 seviyesindedir. T1con,3(T1OSCEN): Timer1 osilatr kayna yetkilendirme bitidir. T1OSCEN 1 ise osilatr kayna etkindir, 0 ise kullanm ddr. T1con,4-5(T1CKPS0,T1CKPS1):Timer1 giri sinyalinin blme (prescale)

orannn seildii bilerdir. Bu bitlerin ald deerlere gre blme prescaler deeri deimekte ve buna bal olarak Timer1 artma frekans deimektedir. 11 = 1:8 Prescale deeri 10 = 1:4 Prescale deeri 01 = 1:2 Prescale deeri 00 = 1:1 Prescale deeri 3.14 Zamanlayc2 (TIMER2) Modl Timer2 modl aadaki zelliklere sahiptir. 8 bit zamanlayc (TMR2 kaydedici), 8 bit peryot kaydedici (PR2), Okunabilir ve yazlabilir, Yazlm ile programlanabilir prescaler, TMR2, PR2 elemesinde kesme, Saat kaymasn retmek iin TMR2 knn seimli kullanm SSP modl,

41

42

ekil 3.23: TIMER2 Blok diyagram Timer2 ekil 3.23te gsterilen denetim yazmacna sahiptir. Timer2 g tketimini en aza indirgemek iin TMR0 denetim bitini temizleyerek kapanabilir. 3.14.1 Zamanlayc2 (TIMER2) lemleri Timer2, CCP modlnn PWM modu iin PWM zaman taban olarak kullanlabilir. Giri saati (Fosc/4) in prescale seeneine sahip olur. Aadaki durumlardan herhangi biri gerekletiinde prescaler ve postscaler sayalar temizlenirler. TMR2 kaydedicisine yazldnda , T2CON kaydedicisine yazldnda, Herhangi bir aygt hazr olduunda ,

***T2CON yazldnda, TMR2 temizlenemez. 3.14.2 T2CON: TIMER2 Kontrol Kaydedicisi Timer2deki ilemlerin kontrol edildii ve ilemler yrtlrken baz bilgilerin alnd kaydedicidir.

ekil 3.24: T2CON Kaydedicinin bit yerleimi T2con,0-1(T2CKPS0,T2CKPS1): Timer2de prescalerin ayarland bitlerdir. Bu bitlerin ald deerlere gre prescaler deeri deimektedir.

42

43

00 = Prescaler is 1 01 = Prescaler is 4 1x = Prescaler is 16 T2con,2(TMR2ON): Timer2 e yetki veren bittir. TMR2ON biti 1 yapldnda Timer2 kullanlr durumdadr,0 ise kullanm ddr. T2con,3:6(TOUTPS3:TOUTPS0): Timer2de postscaler ayarlarnn yapld bitlerdir. Bu bitlerin ald deerlerle timer2 deiik postscaler deerlerine ulamaktadr. 0000 = 1:1 Postscaler 0001 = 1:2 Postscaler 1111 = 1:16 Postscaler 3.15 CAPTURE/COMPARE/PWM(CCP) Modlleri CCP modlleri yakalama, karlatrma, pals genilii modlasyonu gibi ilemleri gerekletirmek zere baz zelliklerle donatlmlardr. Her bir CCP modl 16 Bitlik yakalama (capture) kaydedicisi, 16 bitlik karlatrma (compare) kaydedicisi veya PWM kaydedicisine sahiptir. Tablo 3.5 de CCP modlnn her elemannn ilikide bulunduu zamanlama kaynaklar verilmitir. Tablo 3.5:CCP Timer likisi

PIC 16F877nin CCP modlleri olan CCP1 ve CCP2nin almalar zel tetikleyicileri dnda hemen hemen ayndr. Bu nedenle bundan sonraki anlatmlarmz CCP1 modl zerinde younlatrlacaktr.

43

44

3.15.1 CCP1 Modl CCP modl, dk ksm 8 bit olan CCPR1L ,yksek ksm 8 bit olan CCPR1H olan ve CCPR1 olarak adlandrlan bir kaydediciden olumaktadr. CCP1 modlnn ilemleri ise CCP1CON kaydedicisi tarafndan kontrol edilmektedir. Bu modldeki kaydedicilerin tm yazlabilir ve okunabilir zelliktedirler. 3.15.2 CCP1CON Kaydedicisi Yukarda da belirtildii gibi bu kaydedici CCP1 modlnn yapt ilemleri denetler ve yetkilendirmeleri yapar.

ekil 3.25: CCP1CON Kaydedicinin bit yerleimi Ccp1con,0:3(CCPxM0:CCPxM3): CCP iin mod seim bitleridir. Bu bitlerin ald deerlere gre CCP1 modl capture/compare/PWM modlarna sokulmaktadr. 0000 = Capture/Compare/PWM etkin deil (CPM kullanm d) 0100 = Capture modu, her den kenarda 0101 = Capture modu, her ykselen kenarda 0110 = Capture modu,her 4. ykselen kenarda 0111 = Capture modu, every 16. ykselen kenarda 1000 = Compare modu, denklikte durumunda k 1le(H) (CCPxIF=1) 1001 = Compare modu, denklik durumunda k 0la (L) (CCPxIF=1) 1010 = Compare modu, denklikdurumnda yazlm kesmesi ret 1011 = Compare modu, zel tetikleme (CCPxIF=1, CCP1 TMR1i resetler, CCP2 TMR1i resetler ve A/D evirme balar.(Eer A/D evirme modl yetkilendirilmise).) 11xx = PWM modu Ccp1con,4:5(CCPxX:CCPxY): CCP modln PWM modundaki Lsb ayarlarn gerekletiren bitlerdir.

44

45

3.15.3 CAPTURE (Yakalama) Modu Capture modunda RC2/CCP1deki bir takm olaylarla; CCPR1H:CCPR1L, TMR1in 16 bitlik deerini yakalar ve kaydeder. RC2/CCP1deki olaylar u ekilde tanmlanmaktadr: Her den kenar Her ykselen kenar Her 4. ykselen kenar Her 16. ykselen kenar RC2/CCP1deki bu durumlardan birisi CCPxM0:CCPxM3 bitleri sayesinde seilir. Bir yakalama ilemi gerekletiinde CCP1IF (PIR1,2) kurulur ve bir kesme talebinde bulunulur.Eer yeni bir yakalama gerekleirse CCP1R registerine yeni deer kaydedilir ve eski deer tamamiyle silinir. 3.15.3.1 Capture Modunda Pin Durumu Capture modunda RC2/CCP1 pini Trisc<2> vastasyla giri olarak ayarlanmaldr. Bu sayede RC2/CCP1 pini capture ilemi iin gerekli clocklar alabilecektir. ekil 3.26da capture modunda veri yakalama ileminin nasl gerekletiini gsteren diyagram bulunmaktadr.

ekil 3.26:Capture Modunda Veri Yakalama leminin Gereklemesi 3.15.3.2 CCP Prescaler CCPde prescaler ayarlarn gerekletirmek zere, CCP1M3:CCP1M0 bitleri ayrlmtr. CCP modl kullanm d ise veya CCP modl capture modunda kullanlmyorsa prescaler saycs temizlenmi vaziyette durur. Bu herhangi bir resetleme

45

46

durumunda prescalerin temizlenecei anlamna gelir. Capture prescaleri dier bir kesmenin retilmesi durumunda deiim gsterir. rnek 3.7de CCP prescalerin kurulmasna dair bir rnek verilmitir. Bu rnek programda prescaler sayc temizlenmitir ve hata kesmelerinin retilmesi engellenmitir. rnek 3.7 clrf ccp1con ;CCP modln kapal duruma getir. ; CCP1CON kaydedicisini ykle

movlw new_capt_ps ;CCPyi kur, prescaleri ile ykle movwf ccp1con

3.15.4 COMPARE (Karlatrma) Modu Karlatrma modunda 16 bitlik CCPR1 ile TMR1in karlkl bitleri baytlar karlatrlr. Eer bir eitlik sz konusu ise RC2/CCP1de ; Yksek seviyeye (H) ekilme Dk seviyeye (L) ekilme Deiiklik olmama.

durumlarndan birisi gerekleir. Gereklemesi istenilen durum program yardmyla belirlenir. RC2/CCP1 pinindeki deime durumu CCP1M0:CCP1M0 (CCP1CON<0:3>) bitleri yardm ile yaplmaktadr. 1000 = denklik durumunda k 1le(H) 1001 = denklik durumunda k 0la (L) 1010 = denklik durumnda yazlm kesmesi ret (pinde deiiklik olmaz) Denklik durumunda daima CCP1IF biti yksek (H) durumuna ekilmektedir. Compare modunda grev alan kaydedici, pin ve dier evre elemanlarnn ilikileri ekil 3.27de verilmitir.

46

47

ekil 3.27: Compare Modu lemlerinin Blok Diyagram 3.15.4.1 zel Hal Tetikleyicisi Bu modda dahili donanm tetikleme kayna baka bir yerde herhangi bir ilemi balatmak iin tetikleme retir. CCP1in zel hal tetikleyici k TMR1 kaydedici iftini resetler. Bu durum Timer1de yeni bir 16 bitlik programlanma devresini balatr. CCP2nin zel hal tetikleyicisi ise TMR1i resetler ve eer A/D modl kullanlr vaziyette ise yeni bir A/D evirme ilemi balar. 3.15.5 PWM (Pals Genilik Modlasyonu) Modu Bu modda CCP1 pininden 10 bit znrlkte PWM k alnr. PWM modunda ilem yapabilmek iin TRISC<2> biti k konumunda tutulmaldr. ekil 3.28de PWM modunda gerekletirilen ilemlerin basit blok diyagram verilmektedir. ekil 3.29 da ise PIC 16F877den elde edilecek bir PWM kn ekli verilmitir.

ekil 3.28: PWM Moduna Ait Basitletirlmi Blok Diyagram

47

48

ekil 3.29: PWM k ekli 3.15.5.1 PWM Sresi Bir PWM ilemi ile verinin aktarlmas PR2 kaydedicisinin deerine baldr. (PR2=TMR2 prescaler deeri). PWM sresi forml 3.1 den faydalanlarak hesaplanabilir. PWM sresi = [(PR2) + 1] . 4 . TOSC Forml 3.1 PWM frekans ise 1/PWM sresinden bulunabilir. TMR2nin PR2ye eit olmas durumunda ise, sonraki peryotta u durum meydana gelir. TMR2 temizlenir. CCP1 pini yksek seviyeye (H) ekilir. PWM grev saykl CCPR1L den CCPR2H ierisine atlr.

3.15.5.2 PWM Grev Saykl PWM grev saykl CCPR1L ve kaydedicisi ve CCP1CON<4:5> bitlerine baldr. PWMde ki 10 bitlik znrlk; CCPR1L kaydedicisinin 8 bitlik ksmnn MSB, ve CCP1CONun 4 ve 5. Bitlerinin LSB olarak kabul edilmesiyle elde edilir. Bu 10 bit znrlk CCPR1L:CCP1CON<5:4> eklinde gsterilmektedir. PWM grev sayklnn hesaplanmasnda ise forml 3.2 kullanlabilir. (CCPR1L:CCP1CON<5:4>) Tosc (TMR2 prescaler deeri) Forml 3.2

48

49

3.15.5.3 PIC 16F877nin PWM lemi in Kurulmas PR2 kaydedicisi yazlarak PWM sreci balatlr, CCPR1L kaydedicisine ve CCP1CON<5:4> bitlerine PWM grev saykl yazlr, TRISC<2> biti temizlenerek CCP1 pini k olarak ayarlanr, TMR2 prescaler deeri ayarlanr ve T2CONOn biti vastasyla Timer2 yetkilendirilir, CCP1 modl PWM ilemi iin dzenlenir.

3.16 MSSP (Asl Ezamanl Seri Port) Modl MSSP The Master Synchronous Serial Port) modl baka evre birimlerle veya mikrodenetleyicilerle seri olarak haberlemeyi salayan bir arabirimdir. Burada bahsedilen evre birimleri; seri EEPROM, shift register, display srcleri, A/D evirici gibi birimler olabilir. MSSP modlnn iki tip alma modu bulunmaktadr. Serial Peripheral Interface (SPI) Inter-Integrated Circuit (I 2C) MSSPnin alma modlarna gemeden nce bu modln kontroln salayan kaydedicilerden bahsetmekte fayda vardr. MSSP modlnde ilemleri kontrol eden balca kaydedici; SSPSTAT,SSPCON,SSPCON2 kaydedicileridir. 3.16.1 SSPCON Kaydedicisi

ekil 3.30: SSPCON Kaydedicisinde Bit Yerleimi Sspcon,0:3(SSPM0:SSPM3): SSP (Synchronous Serial Port) iin mod seim bitleridir. Bu bitlerin ald deerlere gre MSSP modl daha nce de bahsettiimiz modlardan birisine sokulur ve zel bir ilem iin tahsis ilemi yaplr. 0000 = SPI master modu, clock = FOSC/4 0001 = SPI master modu, clock = FOSC/16 0010 = SPI master modu, clock = FOSC/64 0011 = SPI master modu, clock = TMR2 k/2

49

50

0100 = SPI slave modu, clock = SCK pin. SS pin kontrol yetkilendirmesi. 0101 = SPI slave modu, clock = SCK pin. SS pini kullanm d. 0110 = I2C slave modu, 7-bit addres 0111 = I2C slave modu, 10-bit addres 1000 = I2C master modu, clock = FOSC / (4 * (SSPADD+1) ) 1011 = I2C sabit kontroll master mod 1110 = I2C sabit kontroll master mod, balat ve durdur kesmeleri ile birlikte 7 bit adres yetkilendirmesi 1111 = I2C sabit kontroll master mod, balat ve durdur kesmeleri ile birlikte 7 bit adres yetkilendirmesi 1001, 1010, 1100, 1101 = Baka ilemler iin ayrlmtr. Sspcon,4(CKP): Clockun polaritesini semek iin kullanlan bittir. SPI modunda; CKP 1 ise, yksek seviye etkizis kabul edilir, CKP 0 ise dk seviye etkisiz kabul edilir. I2C slave modunda; CKP 1 ise clock yetkilendirmesi yaplr, CKP 0 ise clock dk seviyede tutulur. Sspcon,5(SSPEN): MSSP modl iin yetkilendirme bitidir. SPI modnda;SSPEN =1 ise seri port kullanmdadr ve SCK ,SDO, SDI ve SS ular kullanlabilir. SSPEN =0 ise seri port ilemleri kullanm d braklr. I2C modunda; SSPEN=1 ise seri port ilemleri etkin yaplr ve SDA ve SCL pinleri kullanlabilir duruma getirilir. SSPEN= 0 ise seri port ilemleri kullanm ddr. Sspcon,6(SSPOV): MSSP modlnde alma ileminde tamalar izleyen bittir. SPI modunda; SSPOV 1 ise, SSPBUF nceki veriyi tutarken yeni bir bayt alnr. SSPSR verisi zerindeki tama kaybolur. Slave modunda kullanc SSPBUF kaydedicisini okumak zorundadr, sadece data iletimi srasnda bu bit nemsizdir. Master modda tama biti SSBBUF kaydedicisine yeni bir veri yazlana kadar kurulmaz. Yeni bir ilem gerekletirebilmek iin SSPOV biti programdan temizlenmelidir. SSPOV biti 0 ise herhangi bir tama yoktur.

50

51

I2C modunda; SSPOV 1 ise, SSPBUF nceki veriyi tutarken bir baytlk veri alnr. SSPOV biti iletim modunda nemsizdir. Alm modunda yeni bir ilem iin SSPOV bitinin programdan temizlenmesi gerekir. Sspcon,7(WCOL): Yazm akmas bitidir. Bir nevi hata kontrol yapar. SPI modunda;WCOL 1 ise I2C hatt megul iken SSPBUF kaydedicisine veri yazlmaya kalklmtr. Bu durum bir akmadr. WCOL 0 ise herhangi bir akma yoktur. I2C modunda; Hala nceki data iletilirken SSPBUF kaydedicisine veri yazlmtr. Bu bir akmadr ve WCOL bitinin programdan silinmesi gerekir. WCOL 0 ise herhangi bir akma yoktur. 3.16.2 SSPSTAT Kaydedicisi

ekil 3.31:SSPSTAT Kaydedicisi Bit Yerleimi Sspstat,0(BF): Tamponun doluluk durumu hakknda bilgi tutan bittir. Alm durumunda (SPI ve I2C modunda);BF= 1 ise alm ilemi tamamlanmtr ve SSPBUF kaydedicisi doludur. BF=0 ise alm ilemi tamamlanmamtr ve SSPBUF botur. letim durumunda ( I2C modunda); BF =1 ise veri iletimi srmektedir ve SSPBUF kaydedicisi doludur. BF=0 ise veri iletim ilemi tamamlanmtr ve SSPBUF kaydedicisi botur. Sspstat,1(UA): 10 bitlik I2C modunda adres gncelleme bitidir. UA=1 ise SSPADD kaydedicisinde gsterilen adres gncellenir. UA=0 ise gncelleme gereklemez. Sspstat,2(R/W): SPI veya I2C modunda ilem yaplrken okuma m yoksa yazma m yapldnn bilgisini tutan bittir. SPI modunda; R/W =1 ise okuma, R/W=0 ise yazma yaplyordur.

51

52

I2C modunda;R/W=1 ise veri iletimi yaplmakta, R/W=0 ise veri iletim ii yaplmamaktadr. Sspstat,3(S): I2C modunda balang bitidir. S biti 1 yapldnda start biti son bulur,S biti 0 yapldnda ise start biti son bulmaz. Sspstat,4(P): I2C modunda sonlandrma bitidir. S biti 1 yapldnda durdurma biti son bulur,S biti 0 yapldnda ise durdurma biti son bulmaz. Sspstat,5(D/A): I2C modunda veri ve adres arasndaki durumlar gsteren bittir. D/A=1 ise data alnmtr yada iletilmitir. D/A=0 ise adres yollanmtr veya bir adres alnmtr. Sspstat,6(CKE):SPI clock kaynann trn belirlemekte kullanlan bittir. SPI modunda; CKP=0,CKE=1 ise SCKnn ykselen kenarnda veri iletilir SPI modunda; CKP=0,CKE=0 ise SCKnn den kenarnda veri iletilir SPI modunda; CKP=1,CKE=1 ise SCKnn den kenarnda veri iletilir SPI modunda; CKP=1,CKE=0 ise SCKnn ykselen kenarnda veri iletilir I2C modunda; CKE=1 ise giri seviyesi olarak SMBUS izlenir, CKE=0 ise I2C izlenir. Sspstat,7(SMP): rnekleme bitidir. SPI master modda;SMP=1 ise giri sinyali data knn sonunda rneklenir, SMP=0 ise giri sinyali k sinyalinin orta noktasnda rneklenir. SPI slave modda; SMP biti 0 (L) seviyesinde tutulmaldr. I2C modunda; SMP=1 ise standart hz iin (100KHz ve 1 MHZ) slew rate kontrol kullanm ddr. SMP=0 ise yksek hz modunda kullanm iin (400KHz) slew rate yetkilendirilmitir.

52

53

3.16.3 SSPCON2 Kaydedicisi

ekil 3.32:SSPCON2 Kaydedicisi Bit Yerleimi Sspcon2,0(SEN): I2C modunda start durum ayarnn yapuld bittir. SEN=1 ise SDA ve SCL pinlerinde start vaziyeti alnr. SEN=0 ise start durumu yetkisizlendirilir. Sspcon2,1(RSEN): I2C modunda start durum yineleme bitidir. RSEN=1 ise SDA ve SCL pinlerinde alnan start vaziyeti tekrarlanr. RSEN=0 ise start durum yineleme kullanm d olur. Sspcon2,2(PEN): I2C modunda stop (durdurma) durum yetkilendirme bitidir. PEN=1 ise SDA ce SCL pinlerinde stop vaziyeti balatlr. PEN=0 ise stop vaziyeti kullanm ddr. Sspcon2,3(RCEN): I2C modunda alm yetkilendirme bitidir. RCEN=1 ise I2C modunda veri alm vaziyetine geilir. RCEN=0 ise alm modu kullanm ddr. Sspcon2,4(ACKEN): I2C modunda ezamanl ard arda veri alm yetkilendirme bitidir. ACKEN=1 ise SDA ve SCL pinlerinden ezamanl ard arda veri iletimi balatlr ve ACKDT veri biti iletilir. Bu bit donanm tarafnda otomatik olarak temizlenir. Sspcon2,5(ACKDT): I2C modunda master alm durumunda veri kabul bitidir. ACKDT=1 ise iletilen veri kabul edilmemitir (alnmamtr.) .ACKDT=0 ise iletilen veri kabul edilmitir (alnmtr). Sspcon2,6(ACKSTAT): I2C modunda iletim durumunda stat kabul bitidir. ACKSTAT=1 ise alnan veri kabul edilmemitir. ACKSTAT=0 ise alnan veri kabul edilmitir. Sspcon2,7(GCEN): I2C modunda genel arma yetkilendirme bitidir. GCEN=1 ise SSPSRden gelen arma adresi (0000h) alndnda kesme etkinletirilir. GCEN=0 ise genel arma adresi yetkisizletirilir.

53

54

3.16.4 SPI (Seri evresel Arabirim) Modu SPI modu 8 bit uzunluundaki verinin ayn anda ezamanl olarak alnmasna ve iletilmesine olanak tanr. SPI modunda haberleme temel olarak 3 pin ile salanmaktadr. Serial Data Out (SDO) Serial Data In (SDI) Serial Clock (SCK) Bu pine ek olarak slave modda ilem yapmak zere bir drdnc pin olarak SLAVE SELECT (SS) mevcuttur. 3.16.4.1 SPI lemleri SPI modunda ilem yapabilmek iin birka ayarn yaplmas gerekmektedir. Bu ayarlar SSPCON<5:0> ve SSPSTAT<7:6> bitleri zerindeki deiikliklerle yaplabilir. Bu ayarlar sayesinde SPI modunda aadaki deiiklikler gerekletirilebilir. Master mod seimi (SCK clock k) Slave mod seimi (SCK clock girii) Giri verisi rnekleme evresi (sonda veya ortada) Clock tr (SCK nn denkenar veya ykselen kenarnda veri aktarma) ekil 3.33te MSSP modlnde SPI modunda ilemlerin nasl gerekletirildiini gsteren blok diyagram bulunmaktadr. MSSP modlnde yaplan ilemler bir iletme/alma kaydrmal kaydedici (SSPSR) ve bir tampon kaydedicisine baldr. SSPSR verileri nce MSB biti olmak zere ierisinde kaydrr. Data alma ilemi tamamlanana kadar SSPBUFta tutulan verileri SSPSRye yazar. lk nce SSBUFtan yollanan verinin 8 bitlik ksm alnr. Sonra BF biti (SSPSTAT<0>) kontrol edilir ve kesme bayra SSPIF (PIR<3>) kurulur. SSPBUF registerine veri yazma durumunda iletim veya data alma ilemi olmasna baklmadan WCOL (SSPCON<7>) biti kurulur. Yeni bir ilemin yaplabilmesi iin program ierisinde bu bitin temizlenmesi gereklidir. rnek 3.8, SSPBUF kaydedicisinin (SSPSR) yklenmesini gstermektedir.

54

55

ekil 3.33: SPI Modunda lemleri Gsteren Blok Diyagram RNEK 3.8 bsf devam btfss goto bcf movf movf status, rp0 sspstat, bf devam status, rp0 sspbuf, w txdata, w ;yeni veri sspbufta ;Bank1 seildi ;Veri iletimi/alm tamam m? ;tamalanmad ;Bank0 seildi

movwf rxdata movwf sspbuf 3.16.4.2 SPI G/ Yetkilendirmesi Seri port yetkilendirmesi iin ncelikle MSSP yetkilendirme biti SSPEN (SSPCON<5>) kurulmaldr. Herhangi bir resetleme veya yeni biimlendirme durumunda SSPEN temizlenmeli SSPCON kaydedicisi yeniden dzenlenmeli ve SSPEN tekrar

55

56

kurulmaldr. SDI, SDO, SCK ve SS pinlei seri port pinleridir. Bu pinlerin birer seri port eleman olarak alabilmeleri iin programdan baz TRIS kaydedicilerinin ilgili bitlerinin ayarlanmas gerekmektedir. SDI,SPI modul tarafndan otomatik olarak kontrol edilir. SDO iin TRISC<5> temizlenmelidir. Master modunda SCK iin TRISC<3> temizlenmelidir. Slave modda SCK iin TRISC<3< kurulmaldr. SS iin TRISA<5> kurulmaldr.

3.16.4.3 Tipik Balantlar ekil 3.34 iki denetleyicinin seri olarak nasl haberleeceini gstermektedir. Burada ilemcilerden birisi master modda dieri slave modda almaktadr. 1. denetleyici master modda almaktadr ve grevi 2. denetleyiciye ihtiya duyduu veriyi ve clock darbelerini gndermektir. Slave modda alan 2. lemci ise 1. denetleyiciden gnderilen veriyi clock darbeleri ile alr ve iler. Bu balantnn en nemli zellii tek clock kayna ile her iki denetleyicinin ezamanl seri veri haberlemesi yapmalardr. Bu balantda; Master veri gnderir, slave bu veriyi kopyalar ve gnderir Master veri gnderir, slave veri gnderir Master kopyalanan veriyi gnderir, slave veri gnderir.

ekil 3.34: SPI Modda Master/Slave Balants

56

57

3.16.5 MSSPde I2C Modu MSSP modlnn I2C modunda master ve slave olmak iki durumda alma vardr. MSSP modl I2C modl iin 7 bit ve 10 bit adresleme olana sunmaktadr. SCL ve SDA pinleri giri olarak kullanldnda bu pinlere hatalar nlemek iin filtre eklentisi yaplr. Bu filtre 100KHz ve 400 KHz arasnda ilem yapar. Bu pinler k olarak kullanldnda slew rate aygt frekans tarafndan otomatik olarak kontrol edilir. ekil 3.35.a ve ekil 3.35.b I2C modunun master/slave durumunda almalarnn blok diyagramn gstermektedir.

ekil 3.35.a:Slave Modu Blok diyagram

ekil 3.35.b: Master Modu Blok Diyagram

I2C modunda 2 pin veri iletimi iin kullanlr. Bunlardan SCL clock, SDA veri ucudur. I2C modu yetkilendirildiinde SDA ve SCL pinleri otomatik olarak kurulur. SSP modl fonksiyonlar SSPEN (SSPCON<5>) bitinin kurulmas ile yetkilendirilir. MSSP modl ierisinde I2C modunda ilem yapabilmek iin 6 adet kaydedici vardr. SSP Kontrol Kaydedicisi (SSPCON) SSP Kontrol Kaydedicisi2(SSPCON2)

57

58

SSP Stat Kaydedicisi (SSPSTAT) Seri Al/letim Tamponu (SSPBUF) SSP Kaydrmal Kaydedici (SSPSR) SSP Adres Kaydedicisi (SSPADD) SSPCON kaydedicisi I2C ilemlerinin kontrol edilmesi ne olanak salar.

SSPCONda bulunan 4 bit (SSPCON<3:0>) I2C modunda ayarlamalar yapar. Bu bitleri ayarlayarak u seimler yaplabilir: I2C slave modu (7 bit adres) I2C slave modu (10 bit adres) I2C master modu, clock=osc/4 Herhangi bir I2C modu seildikten sonra, SCL ve SDA pinleri TRIS bitleri yardmyla giri olarak programlanmaldr. SSPEN bitinin kurulmasyla I2C modu seilmi olur ve SCL-SDA pinleri etkin hale gelir. 3.17 USART (Adreslenebilir Evrensel Senkronize Asenkronize Alc Verici) Modl USART modl verilerin senkron veya asenkron iletimi iin kullanlan ve belli bir protokol dahilinde ilem yapan bir birimdir. Bu modl dahilinde Verinin seriden parelele dntrlmesi ve parelelden seriye dntrlmesi, Elik bitlerini eklemek ve bu bitleri kontrol etmek suretiyle hata bulmak, Balatma ve durdurma bitlerini eklemek ve bulmak, gibi ilemler yaplabilir. levsel adan, USART alc ve verici olarak iki ksma ayrlr. Her iki ynde de veri aktarmadan nce USART denetim kaydedicisine, verinin niteliini gsterecek bir denetim szc programlanmaldr. rnein; veri bitlerinin says, elik kullanlp kullanlmad, eer elik kullanlm ise, bunun tek elik mi yoksa ift elik mi olduu ve durdurma bitlerinin says gibi. Temel olarak, balatma biti istee bal olmayan tek bittir ve her zaman yalnzca bir balatma biti vardr. Bir balatma durumu iin bu bitin mantksal 0 seviyesinde olmas gerekmektedir. PIC 16F877de USART modlnn kontrol iin kaydedicileri mevcuttur. TXSTA ve RCSTA

58

59

3.17.1 TXSTA Kaydedicisi

ekil 3.36:TXSTA Kaydedicisinin Bit Yerleimi Txsta,0(TX9D): letilen verinin 9. Bitini oluturur. Bu bit bir parite biti olarak dnlebilir. Txsta,1(TRMT): Transmit shift register (TSR=letim kaydrmal kaydedicisi) durum bitidir. TRMT=1 ise TSR botur. TRMT=0 ise TSR dolu vaziyettedir. Txsta,2(BRGH):Yksek baud oran seim bitidir. BRGH=1 ise yksek hz, BRGH=0 ise yava hz seilmi olur. Txsta,4(SYNC): USART modlnde mod seim bitidir. SYNC=1 ise senkron (ezamanl) alma modu, SYNC=0 ise asenkron (ezamanl olmayan) alma modu seilir. Txsta,5(TXEN): USART modlnde iletim gerekletirmek iin yetkilendirme bitidir. TXEN=1 ise iletim yetkisi verilir. TXEN=2 ise iletim yetkizi verilmez. Txsta,6(TX9): 9 bitlik iletim yetkilendirme bitidir. TX9=1 ise 9 bitlik iletim seilir. TX9=0 ise 8 bitlik iletim durumu seilir. Txsta,7(CSRC): Clock kayna seim bitidir. USART ezamanl alma modunda iken; CSRC=1 ise master mod seilmi olur ve clock kayna dahilidir,CSRC=0 ise slave mod seilmitir ve clock kayna olarak harici kaynak kullanlr. 3.17.2 RCSTA Kaydedicisi

ekil 3.37:RCSTA Kaydedicisinin Bit Yerleimi

59

60

Rcsta,0(RX9D): Alnan verinin 9. Bitini oluturur. Bu bit bir parite biti olarak dnlebilir. Rcsta,1(OERR): Biti sresi hata bitidir. OERR=1 ise bilgi almnda belli bir sre ierisinde veri alnamamtr. OERR=0 ise herhangi bir sre am sz konusu deildir. Rcsta,2(FERR):ereve hata bitidir. FERR=1 ise ereve hatas vardr, FERR=0 ise ereve hatas yoktur. Rcsta,3(ADDEN): Adres ortaya karma durumunu etkinletirme bitidir. ADDEN=1 ise adres ortaya karma durumu etkinletirilir, ilgili kesme aktif hale getirilir ve RSR<8> biti=1 olduunda al tamponu yklenir. ADDEN=0 ise adres ortaya karma durumu etkin deildir ve 9. bit parite biti olarak kullanlabilir. Rcsta,4(CREN): Srekli al yetkilendirme bitidir. Asenkron modda CREN=1 ise srekli al etkindir, CREN=0 ise srekli veri alm kullanm ddr. Senkron modda CREN=1 ise CREN biti temizlenene kadar srekli veri alm etkin olur, CREN=0 ise srekli veri alm kullanm ddr. Rcsta,5(SREN): Tek veri alm yetkilendirme bitidir. Master senkron modda SREN=1 ise tek veri alm etkindir. Bu durumda ilem tamamlandnda bu bitin tekrar sfrlanmas gerekir. SREN=0 ise tek veri alm kullanm ddr. Rcsta,6(RX9): Veri alma durumu yetkilendirme bitidir. RX9=1 ise 9 bitlik veri alm format seilir. RX9=0 ise 8 bitlik veri alm format seilir. Rcsta,7(SPEN): Seri port yetkilendirme bitidir. SPEN=1 ise seri port aktif yaplr. Bu durumda RC7/RX/DT ve RC6/TX/CK pinleri seri port pinleri olarak tahsis edilir. SPEN=0 ise seri port kullanm ddr. 3.17.3 USART Baud Oran Jeneratr (BRG) USART modlde clockun frekansn belirleyen aygttr. USART baud jeneratr USART n Asenkronize ve Senkronize modlarn desteklemektedir. BRG 8 bitlik bir jeneratrdr. Bu cihaz 8 bitlik serbest zamanl bir clock ile kontrol edilir. Asenk modda bit BRGH (TXSTA<2>) ile kontrol edilir. Senkronize modda ise bit BRGH istenmez.

60

61

Verilen ve istenilen baud rate ve Fosc SPBRG (register) deerleri aadaki forml ile ayarlanabilir ve hesaplanabilir.(6) stenen Baud oran 9600 X = Fosc / (64 (X + 1)) = 16000000 /(64 (X + 1)) = [25.042]= 25 = 9615 Hata = (Hesaplanan Baud Oran-stenen Baud Oran ) stenen Baud Oran = (9615 - 9600) / 9600 = 0.16% 3.17.4 USART Asenkronize Durumu Asenkron iletimde genellikle 8 bitlik iletim format kullanlmaktadr. PIC 16F877de datalar denetleyici zerinde bulunan osilatrden standart baud un frekans oranna gre iletilir. USART gnderici ve alcdan alnan ve iletilen ilk bit LSBdir. USART iletici ve kaydedici fonksiyonel olarak bamsz fakat ayn data format eklinde ve baud orannda kullanlr. Baud jeneratr saat gibi alr veya x16 yada x64 lk bitlerin oran eklinde retim yapar ve BRGH biti ile kontrol edilir.. (TXSTAXZ) Bu oranlar hibir zaman donanm tarafndan desteklenmez fakat sistem ierisinde 9 bitlik veriler halinde sistemde kullanlr. Asenkronize modda iemi durdurmak iin denetleyici uyku moduna sokulur. Asenkronize mod SYNC bitinin durumuna gre seilir (TXSTA <4>) USART 3.17.5 USART Asenkronize letici USART ileticinin kalbi TSRdir. TSR ileticiye okuma/yazma ilemleri iin geregen veriler tampon tarafndan iletilir.(TXREG) TXREG kaydedicisi TSR ileticiye veri ile beraber yklenir. letilecek olan veriler TSRnin yklenmesinden sonra TXREG kaydnn tamamlanmas ile balar. TXREGde ise veri iletimi TXIF (PIR<4>) bitinin msadesi ile olur. Yani bilgi transferi iin daha nceki iletim ileminin tamamlanm ve tamponun boalm olmas gerekmektedir. Yeni veri iletimine balanmadan evvel TXIFin mutlaka

Hesaplanan Baud oran=16000000 / (64 (25 + 1))

61

62

temizlenmesi gerekmektedir. Bu bitin temizlenmesi ile birlikte yeni veriler TXREG yklenir ve balatma biti ile beraber veriler iletilmi olur.

ekil 3.38: USART letim Blok Diyagram Asenkronize ileticinin kmelenmesi aada adm adm aklanmtr. 1. SPBRG kaydedicisi baud ratein durumuna gre harekete geer. 2. Kullanlabilir asenkronize seri balantlarnn temizlenebilmesi iin SYNC bitinin temizlenmesi ve SPEN bitinin yetkilendirilmesi gerekir. 3. letim iin hazr vaziyete gelinmi ise TXIE bitinin yetkilendirilmesi gerekir. 4. Eer 9 bitlik evirici kullanlyorsa, kmede TX9 biti seilmelidir. 5. Bu eviricinin kullanlabilmesi iin TXEN bitinin yetkilenmesi ve de TXIF bitinin kmede yer almas gerekmektedir. 6. Eer 9 bitlik eviri seilmi ise TXD bitine 9 bitlik veri yklenmelidir. 7. TXREG kaydedicisine bilgi yklenir ve iletim balar. 3.18 ADC (Analog Dijital Konvertr) Modl PIC 16 F877de 8 kanall 10 bite kadar evirme ilemi yapabilen bir analog-dijital evirici (ADC) modl bulunmaktadr. PIC 16F877 zerindeki ADC modln almas u ekildedir. Analog giri rnekle ve tut kondansatrn arj eder. rnekle ve tut kondansatrnn k dntrcnn giriine uygulanr. Dntrc, ardk yaklatrma yoluyla bu analog dzeyin saysal sonucunu retir. Bu A/D dnmde, analog giri sinyali 10 bitlik say karlatrma ile sonulanr. ADC esiz bir zellie sahiptir. lem yapmazken uyuma moduna geer.

62

63

Uyuma modunda ADCnin saatinde bir i RC osilatr retilmelidir. ADC Modl drt (4) kaydediciye sahiptir. Bunlar; 1- A/D Yksek sonu kaydedicisi (ADRESH) 2- A/D Dk sonu kaydedicisi (ADRESL) 3- A/D Kontrol kaydedici 0 (ADCON0) 4- A/D Kontrol kaydedici 1 (ADCON1) A/D eviricinin kontroln ADCON0 ve ADCON1 kaydedicileri salamaktadr. 3.18.1 ADCON0 Kaydedicisi

ekil 3.39:ADCON0 Kaydedicisinin Bit Yerleimi Adcon,0(ADON):A/D eviriciyi yetkilendirme bitidir. ADON=1 ise A/D evirici aktr ve ilem yaplabilir. durumdadr. ADON=0 ise A/D evirici kapaldr. Adcon,2(GO/DONE): Eer ADCON biti de 1 ise A/D evirici stat biti grevini stlenir. GO/DONE=1 ise A/D evirici ilem yapyor demektir. GO/DONE=0 ise A/D evirici zerinde herhangi bir ilem yaplmyordur. Adcon,3:5(CHS0:CHS2):A/D evirici iin kanal seim bitlerini oluturur. Bu bitlere verilecek deerlerle A/D evirme iin hangi kanaln seilecei belirlenir. Daha nceden de belirtildii gibi PIC 16F877de A/D evirici iin 8 kanal mevcuttur. 000 = kanal 0, (RA0/AN0) 001 = kanal 1, (RA1/AN1) 010 = kanal 2, (RA2/AN2) 011 = kanal 3, (RA3/AN3) 100 = kanal 4, (RA5/AN4) 101 = kanal 5, (RE0/AN5) 110 = kanal 6, (RE1/AN6) 111 = kanal 7, (RE2/AN7)

63

64

Adcon,6:7(ADCS0:ADCS1): A/D evirici iin clock frekans seim bitleridir. Bu bitlere verilecek deerler ile A/D evirme ilemi esnasnda kullanlacak frekans deeri bize sunulan deerler ierisinden seilir. 00 = FOSC/2 01 = FOSC/8 10 = FOSC/32 11 = FRC (Harici bir RC osilasyon kaynandan gelen clock darbeleri kullanlr.) 3.18.2 ADCON1 Kaydedicisi

ekil 3.40:ADCON1 Yazmacnn Bit Yerleimi Adcon1,0:3(PCFG0:PCFG3): A/D evirici portunun biimini dzenlemeyi salayan bitlerdir. Yani A/D evirme ileminde kullanlacak pinlerin nasl davranacan belirlememize olanak salarlar. Tablo 3.6: PCFG3:PCFG0 Bitlerinin Ald Deere Gre Yapt lemler
PCFG3: PCFG0 0000 0001 0010 0111 0100 0101 011x 1000 1001 1010 1011 1100 1101 1110 1111 AN7 RE2 A A D D D D D A D D D D D D D AN6 RE1 A A D D D D D A D D D D D D D AN5 RE0 A A D D D D D A A A A D D D D AN4 RA5 A A A A D D D A A A A A D D D AN3 RA3 A VREF+ A VREF+ A VREF+ D VREF+ A VREF+ VREF+ VREF+ VREF+ D VREF+ AN2 RA2 A A A A D D D VREFA A VREFVREFVREFD VREFAN1 RA1 A A A A A A D A A A A A A D D AN0 RA0 A A A A A A D A A A A A A A A VREF+ VREF- KANAL/ REF VDD VSS 8/0 RA3 VSS 7/1 VDD VSS 5/0 RA3 VSS 4/1 VDD VSS 3/0 RA3 VSS 2/1 VDD VSS 0/0 RA3 RA2 6/2 VDD VSS 6/0 RA3 VSS 5/1 RA3 RA2 4/2 RA3 RA2 3/2 RA3 RA2 2/2 VDD VSS 1/0 RA3 RA2 1/2

Bu tabloda A=Analog giri D=Dijital giri/k anlamna gelir. Adcon1,7(ADFM): A/D evirme ilemi esnasnda meydana gelen verinin biimini belirlemeye yarayan bittir. ADFM=1 ise ADRESH kaydedicisinin MSB ksmndaki alt

64

65

biti 0 kabul edilir ve A/D evirme sonucunda elde edilen veri ADRESHn 2 bitlik LSB ksmna ve ADRESLye yazlr. ADFM=0 ise ADRESLnin Lsb ksmndaki 6 biti 0 kabul edilir ve A/D evirme sonucu elde edilen veri ADRESLnin son iki bitine ve ADRESHa yazlr. ADRESH: ADRESL kaydedicileri A/D dnmn 10 bit sonucunu kapsar. A/D dnm bittii zaman, sonu A/D sonu kaydedicisinin iine yklenir. A/D modl ekil 3.41de grlmektedir.

ekil 3.41: A/D Blok Diyagram A/D Modl biimlendirildikten sonra, dntrme ilemi balamadan nce kanal seilmi olmaldr. Analog giri kanallarnda ilgili TRIS bitleri giri iin seilmi olmaldr.

65

66

Aadaki admlar, A/D dnm yapmak iin takip edilmelidir. 1- A/D Modl Konfigrasyonu Analog pinler, referans voltajlar ve digital I/O konfigrasyonu (ADCON1) A/D giri kanal seimi (ADCON0) A/D dnm saat sekimi (ADCON0) A/D Modln ama

2- A/D Kesme Konfigrasyonu ADIF bitinin temizlenmesi ADIE bitinin ayarlanmas GIE bitinin ayarlanmas

3- Gerekli zaman bekleme ilemi 4- Dnmn balamas GO/DONE bitinin ayarlanmas (ADCON0)

5- A/D dnmnn beklenmesi 6- A/D dnm sonucunu okuma ve kaydetme 7- Dier dnm iin 1. ve 2. kez admlar tekrarlama 3.18.3 A/D Girdileri in Gereksinimler Belirlenmi doruluu karlatrmak iin A/D eviricinin CHOLD kondansatr giri gerilimine arj edilmelidir. CHOLD kondansatr kaynak empedans (RS) ve anahtar i direnci (RSS) zerinden arj olur. Anahtar i direnci, kaynak voltajnn deerine gre deiir. Analog kaynaklar iin tavsiye edilen maksimum empedans 10 K dur. Dnm yaplmaya balamadan nce analog giri kanal seilmi olmaldr.(6) Minimum giri zaman hesab; TCAQ=TAMP+TC+TCOFF TACQ=Minimum girdi zaman TAMP=Ykselte yerleme zaman TC= CHOLD arj zaman

66

67

TCOFF= Scaklk katsays rnek 3.9: TACQ = TAMP + TC + TCOFF TACQ = 2 s + Tc + [(Temp 25 oC)(0.05 s/ oC)] TC = -CHOLD (RIC + RSS + RS) ln(1/2047) -120 pF (1 k+ 7 k+ 10 k) ln(0.0004885) -120 pF (18 k) ln(0.0004885) -2.16 s (-7.6241) 16.47 s TACQ = 2 s + 16.47 s + [(50 oC 25 oC)(0.05 s/ oC)] 18.447 s + 1.25 s 19.72 s 3.18.4 A/D Dnm Saatinin Seimi TAD bit bana A/D dnm zaman olarak tanmlanr. 10 bit A/D dnm iin maksimum 12 TAD gerekir. TAD seimi iin mmkn olan 4 seenek vardr. 2TOSC 8TOSC 32TOSC Dahili RC Osilatr A/D Dnmn doru olarak yaplmas iin , TAD minimum 1,6 S seilmi olmaldr. 3.18.5 Analog Port Pinlerini Yaplandrma ADCON1 ve TRIS kaydedicileri kontrol ve iletim port pinleridir. Analog girilerin TRU bitlerinin karlkl olarak ayarlanmas gerekir. TRIS biti temizlenmi ise dijital k seviyesine ( VOH veya VOL ) dntrme yaplm demektir.

67

68

3.18.6 A/D Dnm rnek 3.10de bir A/D dnmnn nasl yapld gsterilmektedir. Analog pinler, analog girdiler olarak yaplandrlr. Analog referans gerilimleri VDD ve VSS dir. A/D kesmesi seildi ve A/D dnm saat frekans (FRS) ile sola yanak olarak sonulandrld. Dntrme RA/0/AN0 pinleri ile gerekleti.(6) rnek 3.10: A/D Dnm bsf status, rp0 bcf status, rp1 clrf adcon1 bsf pie1, ade bcf status, rp0 movlw 11000001 movwf adcon0 bcf pir1, adif bsf intcon, peie bsf intcon, gie bsf adcon0, go ; Bank 1 ; ; A/D girileri kuruldu ; A/D komutlar etkin ; Bank 0 ; RC saat, A/D ak, kanal 0 seildi. ; ; A/D komut bayrak bitleri temizlendi ; evresel komutlar etkin ; tm komutlar etkin ; A/D dnm bala

3.18.7 A/D Dnm Srasnda Uyuma A/D Modl iletim srasnda uyuma modunda olacaktr. Bunun iin A/D saat kayna ayarlanmaldr. (ADCS1:ADCS0=11). RC saat kayna seildii zaman dntrme balamadan nce A/D modl bir saat evrimi sresi kadar bekler. Bu uyku talimatna izin verir. Dnmdeki tm saysal anahtarlama grlts elemine edilmi olur. Dntrme ilemi bittii zaman GO/DONE biti temizlenir ve sonu adres kaydedicisi iine yklenir. A/D kesmesi etkinletirilirse aygt uykudan uyanr. A/D kesmesi pasifletirilirse A/D modl kapal duruma dnse de bir sre ak kalacaktr.(6) 3.18.8 A/D Doruluk/Hata Aygt frekans RC saatin alak kullanm olduu sistemlerde tercih edilir. Yksek frekans azaltlrken, TAD aygt osilatr tretilmelidir. A/D Dntrc iin belirtilen salt doruluk, miktar lme hatas, integral hata, trevsel hata, tam skala hata, sapma

68

69

hatalarnn katklar toplamn ierir. Herhangi bir kod iin ideal geie kar, gncel geiten maksimum sapma olarak tanmlanr. Verilen bir analog giri aral iin saysal k kodu ayn olur. Bu saysal kod analog giriten llen miktar kadardr. Analogtan dijitale lme ileminde hata tipik olarak LSB kadardr. 3.18.9 Transfer Fonksiyonu A/D Dntrcnn transfer fonksiyonu aada gsterildii gibidir. Analog giri voltaj/1024 ile bulunur.

ekil 3.42:A/D Transfer Fonksiyonu 3.19 G Sarfiyat Bilgileri Tablo 3.7: EEPROM verisi ile uyumlatrlan Kaytlar/Bitler

69

70

Not: EADRR <7:6> biti temizlenmelidir. Bu bitlerden herhangi birisi kurulduunda micronun maximum IDD si her iki bitin de temizlenmi olmas halindekinden daha yksektir. Spesifikasyon 400mA dir. Silinen EADRR<7:6> ile maximum 150mA civarndadr. aretler: x =bilinmeyen, u = deimeyen, ----= 0 olarak tamamlanmam okuma Q = artlara baml deer. Blgelendirilen hcreler EEPROM tarafndan kullanlmamaktadr. 3.20 CPU nun Spesifik zellikleri Mikrodenetleyiciyi dier ilemcilerden ayran ey , gerek zaman uygulamalarnn gereksinmeleri ile ilgili zel devreleridir. PIC16F877 te sistem gvenliini maksimize eden, d elemanlar ayrarak maliyeti minimize eden , g tasarrufu, alma modu ve kod koruma gibi zellikleri tamaktadr. Bu zellikler; OSC seimi Reset G kayna reseti (POR) Yksek g timer (PWRT) Osilatr balang Timer (OST)

Kesmeler Watchdog Timer Sleep Kod koruma ID yerleimleri Devre ii seri programlama PIC16F877 te yalnzca konfigrasyon bitleri tarafndan kapatlabilen Watchdog

Timer mevcuttur. Gvenlii arttrmak iin bu kendi RC osilatrn de altrmaktadr. Yksek gte gereken esas gecikmeleri salayan 2 Timer mevcuttur. Bunlardan birisi Osilatr Balang Timer dr. Bu timer , kristal osilatr durgunlancaya kadar ipi resette tutar. Dier timer ise yalnzca nominal yksek gte 72 ms sabit gecikme reten Yksek G Timer dr. Bu g kayna stabilize olurken aygt resette tutar. Bu iki ip zeri Timer ile , uygulamalarn ou hibir reset devrelerini gerektirmemektedir. SLEEP modu ok dk enerjili alak g modunu sunmaktadr. Kullanc SLEEP ten kmak iin d

70

71

reset, Watchdog Timer zaman aral veya kesmeleri kullanabilir. Baz osilatr seenekleri, ksmlar uygulamaya yerletirmek iin elde edilmektedir. RC osilatr seenei sistem maliyetini, LP kristal seenei ise g sarfiyatn drmektedir. eitli seenekleri semek iin konfigrasyon bitler seti kullanlmaktadr. (1) 3.20.1 Biimlendirme (Konfigrasyon) Bitleri Biimlendirme bitleri eitli aygt ilevlerini semek iin programlanabilir( 0 olarak okur) yada programlamadan braklabilir. ( 1 olarak okur) Bu bitler 2007h program bellek yerleiminde saklanr. 2007h adresi kullanc program bellek biriminin tesindedir ve zel test/biim bellek birimine (2000h- 3FFFh) aittir. Bu birime yalnzca programlama srecinde eriilebilirdir.

ekil 3.43:Biimlendirme bitlerinin bellekteki bit dizilimi Bit 0,1 (FOSC0,FOSC1): Osilatr seme bitleridir. Yaplacak uygulamada hangi tr osilatr kullanlacan tayin eder. (RC,XT,HS,LP) FOSC0 ve FOSC1 bitlerinin ald durumlara gre kullanlacak osilatr trleri tablo 3.8de verilmitir. Tablo 3.8:Osilatr seim tablosu

Bit 2 (WDTE): Watchdog timerin kontrol edildii bittir. Bu bitin 1 olmas WDT devreye sokarken, 0 olmas ile WDT devreden karlr. Bit 3():Power up timer kontrol bitidir. Bu bitin 1 olmas ile PWRT devreden karlr, 0 olmas ile ise PWRT devreye sokulur. Bit 6 (BODEN): Brown out reset zelliine ait yetkilendirme bitidir. BODEN=1 ise BOR kullanm d, BODEN=0 ise BOR etkindir.

71

72

Bit 7 (LVP): Dk gerilim programlamas iin yetkilendirme bitidir. LVP=1 ise RB3/PGM pinin PGM zellii devreye girer. LVP=0 olduunda ise RB3 zellii kullanlabilir. Bit 8(CPD): Bellek EEPROM verisi kod korumas iin yetkilendirme bitidir. CPD=1 ise kod korumas devre ddr. CPD=0 ise kod koruma etkindir ve EEPROM ierisine kaytl veriye bir teebbste bulunulamaz. Bit 9(WRT):Flash program belleine yazma yetkilendirme bitidir. WRT=1 ise korumasz program belleine EECON kontrolnde veri yazlabilir. WRT=0 ise korumasz program belleine EECON kontrolnde veri yazlamaz. Bit 11(DEBUG): Devre zeri seri programlama yetkilendirme bitidir. DEBUG=1 ise RB6,RB7 normal G/ ilemlerinde kullanlr. DEBUG=0 ise RB6, RB7 aygt ierisine program yerletirme ileminde kullanlr. Bit 12:13 (CP0:CP1): Yaplan uygulamann kopyalamaya veya herhangi bir teebbse kar kod koruma zelliinin konmas ilemini kontrol eden bitlerdir. Bu bitlerin ald farkl deerler ile farkl kod koruma seenekleri sz konusu olmaktadr. 11 = Kod koruma kapal 10 = 1F00h tan 1FFFha kadar kod korumas 01 = 1000h tan 1FFFha kadar kod korumas 00 = 0000h tan 1FFFha kadar kod korumas 3.20.2 Osilatr Tipleri PIC16F877 mikrodenetleyicilerinde 4 eit osilatr tipi bulunmaktadr. Kullanc bu 4 moddan birini seerek iki biimlendirme bitini (FOSC1 ve FOSC2) programlayabilir. LP Kristal veya seramik rezonatr-asgari akm - 40Khz XT Kristal veya seramik rezonatr- genel amal - 4Mhz HS Kristal veya seramik rezonatr- yksek hz - 20 Mhz RC Diren/ Kapasitr zaman sabitli - dk maliyet - 4Mhz

72

73

3.20.2.1 Kristal Osilatr / Seramik Rezonatr XT, LP ve HS modlar, kristal veya seramik rezonatrlerin, OSC1/CLKIN ve SC2/CLKOUT pinlerine balanmalaryla kurulur.PIC16F84 te osilatr dizayn paralel kesim kristali kullanmay gerektirir. Kesim kristallerinin seri balanmas ile, kristallerin zerindeki frekans deerlerinden farkl bir frekans deeri oluabilir. XT, LP ve HS modlarnda OSC1/CLK1 dardan srlebilir

ekil 3.44: PIC 16F877de Kristal Osilatr Kullanm 3.20.2.2 Harici Kristal Osilatr Devresi Ambalaj ncesi osilatr TTL girili basit osilatr devresi kurulabilir. Ambalaj ncesi osilatr geni ilem alan ve denge sunmaktadr. yi tasarlanm kristal osilatr TTL girileri ile iyi performans salayacaktr. ki tip kristal osilatr devresi mevcuttur. Birisi seri rezonansl ve dieri de paralel rezonansl osilatrdr.

ekil 3.45: Paralel Rezonansl Osilatr Devresi ekil 3.45 Paralel resonansl osilatr devresini gstermektedir. Devre, kristalin temel frekansn kullanmak iin tasarlanmtr. 74AS04 Inverter, paralel osilatrn gerektirdii 180 dereceli faz kaymasn yrtmektedir. 4.7 K direnci kararllk iin negatif geri besleme salamaktadr. 10 K potasiyometre 74AS04 lineer blgede altrr. Bu devre osilatr tasarm iin de kullanlabilir.

73

74

ekil 3.46 ise seri rezonansl osilatr devresini gstermektedir. Bu devre kristalin esas frekansn kullanmak iin tasarlanmtr. Inverter 180o faz kaymasn yrtmektedir. 330 K lk diren, Inverterlere kendi lineer blgesinde etkilenmesi iin negatif geri beslemeyi salamaktadr.

ekil 3.46: Seri Rezonansl Osilatr Devresi 3.20.2.3 RC Osilatr Zamanlamaya duyarsz uygulamalar iin RC osilatr fazla maliyeti azaltmaktadr. RC osilatr frekans, voltaj ihtiyacna, diren (Rext) deerine, kondansatr (Cext) deerine, alma s derecesinin deerine baldr. Bunun tesinde ambalaj tipindeki ekil kapasitansndaki farkllklar da, zellikle dk Cext deerlerinde, osilatrn frekansn etkileyebilmektedir. Kullanc d R ve C elemanlarnn tolerans nedeniyle meydana gelen deiiklikleri de dikkate almaktadr. ekil 3.47 de RC kombinasyonunun PIC16F877'ye nasl baland grlmektedir.

ekil 3.47:RC Osilatr Balants Rext < 2.2K iin, osilatr ilemi kararsz hale gelebilir hatta tamamyla durabilir. ok yksek Rext deerleri iin (yani 1 M gibi) osilatr, grltye, rutubete ve szmalara kar duyarl hale gelir. Bunun iin Rext deeri 3 ile 100 arasnda tutulmaldr. Osilatrn hibir d kondansatr olmakszn almasna ramen (Cext=0pf) , grlt ve kararszlk nedenleri ile 20pf'n zerindeki deerlerin kullanlmas yerinde olur. ok dk kapasitans veya hi kapasitans olmadan, osilatr frekans , devredeki kaak

74

75

kapasitans

gibi

kapasitanslardaki

deimeler

nedeniyle

nemli

lde

deiebilmektedir. Frekastaki deime ;yksek R deerleri (nk gerilim sznt deimeleri R den daha byk deerde RC frekansn etkileyecektir.) ve dk C deerlerinin etkisi ile artar. (nk giri kondansatr deimeleri RC frekansnda daha byk etkiye sahiptir ). OSC2/CLKOUT pininde 4 ile blnen silatr frekans mevcuttur ve bu frekans, srcleri test etmek iin yada dier lojik niteleri test etmek iin kullanlabilir.

75

76

4-PIC ASSEMBLY VE PIC 16F877 PROGRAMLAMA TEMELLER 4.1.Assembler ve PIC Assembly 4.1.1 Assembler Bir text editrnde assembly kurallarna gre yazlm olan komutlar PICin anlayabilecei hexadecimal kodlara eviren (derleyen) bir programdr. Microchip firmasnn hazrlad MPASM bu ii yapan assembler programdr. Assemblere ou zaman compiler (derleyici) de denir. 4.1.2 PIC Assembler Assembly dili, bir PICe yaptrlmas istenen ilerin belli kurallara gre yazlm komutlar dizisidir. Assembly dili komutlar ngilizce dilindeki baz ksaltmalardan meydana gelir. Bu ksaltmalar genellikle bir komutun altrlmasn ifade eden cmlenin ba harflerinden oluur. Bylece elde edilen komut, bellekte tutulmas kolay (mnemonic) bir hale getirilmitir. rnein:BTFSC (Bit Test Skip if Clear): lgili biti test et, eer sfrsa bir sonraki komutu atla, anlamnda kullanlan ngilizce cmlenin ksaltmasdr. 4.2 PIC Assembly Dili Yazm Kurallar PIC assembly programlarnn bilgisayar ortamnda yazlabilmesi iin notepad, edit gibi yazm araclarna ihtiya vardr. Microchip firmasnn PIC uygulamalar iin zel olarak hazrlam oduu MPLAB programn kullanmamz halinde bu gibi yazm araclarna ihtiya duyulmaz. nk MPLAB ierisinde assemply PIC assembly dilinde program yazmak iin text tabanl bir yazm editr ve ayrca MPASM mevcuttur. MPASM assembler programnn yazlan komutlar dorun olarak alglayp, PICin anlayabilecei hexadecimal kodlara dntrebilesi iin u bilgilerin program ierisinde zel formatta yazlmas gerekir. Komutlarn hangi PICe ait olduu (PIC 16F877,PIC 16F84, PIC 16C71...vb) Programn bellekteki hangi adresten balayaca. Komutlarn ve etiketlerin neler olduu

76

77

Programn biti yeri

rnek 4.1 PIC 16F877de PORTCnin 4 bit LSB bitlerini giri olarak, 4 bit MSB bitlerini k olarak tantan ve PORTCnin 2. Bitinin 1 olmas durumunda PORTC nin 6. Bitini 1 yapan programn yazm: ;-------------rnek Program 1----------list p=16f877 ;kullanlacak PIC in seimi ;--------------------------------------------;Adres tanmlama blou status equ portc equ trisc equ org h03 h07 87 h00 ;program 00 adresinden balat

;--------------------------------------------;--------------------------------------------;PORTC nin G/ tanmlamasnn yaplmas clrf bsf portc status,5 ;bank1 seildi

movlw h0F movwf trisc bcf status,5 ;bank0 seildi ;--------------------------------------------;Program blou basla bcf btfss goto bsf devam btfsc goto goto end portc,6 portc,2 basla portc,2 portc,2 devam basla ;sonlandrma

77

78

4.2.1 Program Yazmnda Noktal Virgl (;) Kullanm Ba tarafnda (;) bulunan satrlar, assembler tarafndan hexadecimal kodlara dntrlmez. Bu satrlar programn gelitirilmesi esnasnda hatrlatc aklamalarn yazlmasnda kullanlr. Ayrca program blmlerni birbirinden ayrmak iin (------- veya =======) izgileri kullanmak, program grsel olarak daha okunur halegetirdii gibi bu izgiler arasna uyarlar ve aklamalar da yazlabilir. Bu sayede programda bir hata veya sorun meydana geldiinde takip ilemi daha rahat yaplr. 4.2.2 Bir Program Satrnn Ksmlar list p=16F877 Balk Blou

Assembler Bildirileri status Etiket devam equ Atama komutu btfsc goto h03 Hex adres portc,2 devam Program Blou Atama blou

Etiket 4.2.2.1 Etiket

Komut

PIC belleindeki bir adresin atand, hatrlamay kolaylatran ksaltmalardan meydana gelen sembolik iaretlere etiket denir. rnein portc etiketi, PIC 16F877nin kaydedici dosyas belleindeki C portunun bulunduu adresi temsil eden etikettir. Etiketler program ierisinde 1. kolana yazlr. Portc equ h07 yazldktan sonra C portunun hangi adreste olduunu aklda tutmaya gerek yoktur. Programn herhangi bir yerinde portc etiketi kullanldnda,C portunun adresi olan h07 yazlm gibi ilem grlr.

78

79

Birinci kolona yazlan ve adres atanmayan etiketler de kullanlabilir. rnein basla ve devam bu tip etiketlerdendir. Bu etiketler program akn istenilen yere dallandrmak iin kullanlrlar. Bu tip etiketlerin adresi zel kaydedici adresi gibi fiziksel bir adres deildir. Bu ekilde tanmlanan bir etikete assembler otomatik olarak adres verir. Bu adresi programcnn bilmesi gerekmez. Etiket tanmlarken uyulmas gereken kurallar unlardr. Etiketler birinci kolona yazlmaldr. Etiketler bir harfle veya alt izgi ( _ ) ile balamaldr. Etiketler ierisinde Trke karakterler kullanlamaz. Etiketler bir asembly komutundan oluamaz. Etiketlerin ierisinde alt izgi, rakam, soru iareti bulunabilir. Etiketler en fazla 31 karakter uzunluunda olabilir. Etiketlerde byk/kk harf duyarll vardr. (Devam diye tanmlanm bir etiketi

program ierisinde devam yazarak kullanmak mmkn deildir.) 4.2.2.2 Atama Deyimi (EQU) EQU deyimi PIC 16F877nin belleindeki bir hexadecimal adresi belirlenen bir etikete atamak iin kullanlr. Aada bu atama deyimine birka rnek gsterilmitir. portb equ say1 equ portc equ 4.2.2.3 Sabitler PIC assembly dilinde hexadecimal,binary ve decimal saylar birer sabittir. Sabitler movlw, sumlw, andlw gibi baz komutlarn ierisinde ve atama ilemlerinde kullanlrlar. Sabitler program ierisinde kullanlrken hexadecimal olduuna dair h veya 0x.., binary olduuna dair b, decimal olduuna dair d karakterleri ile birlikte kullanlmaldrlar. movlw sublw sublw b01000111 ;binary sabit d126 h0F ;decimal sabit ;hexadecimal sabit h06 h10 h07

79

80

movlw 4.2.2.4 ORG Deyimi

0x0F

;hexadecimal sabit

ORG ngilizcedeki origin kelimesinden gelmektedir. ORG deyimi program ierisinde iki ama iin kullanlr. Program komutlarnn hangi adresten itibaren baladn gsterir. org h00

PIC 16F877nin interrupt (kesme) alt programlarnn balang adresini belirlemede org h04

kullanlr.

4.2.3 PIC Assembly Komutlarnn Yazl PIC 16f877nin toplam 35 tane komutu vardr. Bu komutlarn yazl biimini drt grupta toplayabiliriz. Byte ynlendirmeli komutlar Bit ynlendirmeli komutlar Sabit ileyen komutlar Kontrol komutlar Komutlarn yazl biimlerini aklarken baz tanmlama harfleri kullanacaz. ncelikle bu harflerin anlamlarn vermekte fayda vardr. f=File register (Kaydedici) d=destination (gnderilen yer) d=0w kaydedicisi (akmlatr) d=1f kaydedicisi k=sabit veya adres etiketi b=bit tanmlayc b=binary saylar belirleyen harf d=decimal saylar belirten harf h=hexadecimal saylar belirten harf

80

81

4.2.3.1 Byte Ynlendirmeli Komutlar f,df: Hexadecimal adres veya kaydedici ad Komut d:Komutun altrlmasndan sonra verinin yazlaca yer. d=0w kaydedicisi d=1f kaydedicisi rnek movf h03,0 ;h03 adresindeki kaydedicinin ieriini w kaydedicisi ierisine kopyalar movf status,0 movf status,1 ;STATUS kaydedicisinin ieriini w kaydedicisine kopyalar. ;STATUS kaydedicisinin ieriini yine STATUS kaydedicisine kopyalar.

Not:Bit ynlendirmeli komutlarda destination (gnderilecek yer) belirleyen dnin yazld yere 0 veya 1 yazmak hatrlatc olmayabilir. MPASM bunu dikkate alarak 0 yerine w, 1 yerine f yazmaya izin verir. MPASMnin MS-DOS versiyonunda ise w ve f harflerinin otomatik olarak kullanlmasna izin verilmez. Bu durumda her programn tanmlama blmne aadaki eitlikler yazlmaldr. w f equ equ 0 1

Bu eitliklerden sonra komutlarda destination belirlemek iin w ve f harfleri kullanlabilir. rnein: decfsz movf say1,f say2,w

4.2.3.2 Bit Ynlendirmeli Komutlar f,bf: Hexadecimal adres veya kaydedici ad Komut b:0-7 arasnda hexadecimal say veya etiket (EQU komutu ile adresi tanmlanm olmaldr) rnek bcf bsf h03,5 porta,2 ;h03 adresindeki verinin 5. Bitini sfrla ;PORTAnn 2. bitini birle

81

82

4.2.3.3 Sabit leyen Komutlar kk: sabit (b00110011, h0F, d255 gibi) Komut rnek movlw addlw h2f d221 ;w kaydedicisine 2F hexadecimal saysn ykler ;w kaydedicisindeki sayya 221 decimal saysn ekler.

4.2.3.4 Kontrol Komutlar kk: Adres etiketi Komut rnek goto call dongu timer ;program dongu ile belirtilen yere dallandr. ,program ak timer etiketi ile belirtilen alt programa dallanr

4.2.4 Program Blmleri Bu ksmda programn metin belgesi olarak nasl yazld konusuna deinilecektir. Yazlan program temel olarak 5 ksmda toplayabiliriz. PIC serisinin tantlmas ve kaynak dosyann belirtilmesi Kaydedici tanmlamalarnn yaplmas Bit tanmlamalarnn yaplmas Giri ve k pinlerinin belirlenmesi Picin yapaca ilemlerin yazlmas (Brogram blou)

4.2.4.1 Pic Serisinin Tantlmas Ve Kaynak Dosyann Belirtilmesi Piyasada deiik isimlerle deiik ilemleri gerekletiren PICler satlmaktadr. Her bir PICin deiik yap ve tanmlamalar vardr. Bu tanmlamalarn kaytlar ise PICin zellikleri gz nnde tutularak yazlm kaynak dosyalarda tutulur. Ancak her bir seriye ait zellikleri tek tek bilme imkanmz ok azdr. Bu nedenle PIC reten firmalar retilen

82

83

elemana ait zellik ve kaynak dosyalar hazr halde bize sunmaktadr. Bizler bu kaynak dosyalardan kullanacamz PICe ait olann alabilir ve kendimize gre deiiklikler yaparak kullanabiliriz. Ancak yaplacak deiiklikler standart zellikleri etkilememelidir. Bir kaynak dosyada temel olarak standart register tanmlamalar (W, F, STATUS, EEDATA, EEADR,PORTA,PORTB.gibi), standart bit tanmlamalar (WREN ZERO, CARRY.gibi) ve var ise kendimize ait macrolar bulunmaktadr. Her program metninin ba tarafnda yer almas gereken seri tantm ve kaynak dosya belirtme ilemi aadaki ekillerde gerekletirilebilir. list p=16f877 #include <16f877.nc> Yukardaki tanmlamann ilk satrnda kullanlacak picin serisi belirtilmitir.2. satrda ise program metninin bulunduu klasr ierisinde aranmas istenen kaynak dosya (INCLUDE dosyas) belirtilmitir. 4.2.4.2 Kaydedici Tanmlamalarnn Yaplmas: Yukarda bize sunulan kaynak dosyalarn ierisinde standart kaydedicilerin tanmlandndan sz etmitik. Ancak ou almada tanmlanan bu kaydediciler yetersiz kalmaktadr ve yeni RAM blgeinden kaydediciler tanmlanmas gerekmektedir. Bu durumda kullanlmak istenen kaydedici bellek blgesinin adresi ile eletirilip bir isim verilerek program ierisinde belirtilebilir ve ilerleyen ilemlerde rahatlkla kullanlabilir. Ancak bu ilem gerekletirilirken kaynak dosya ierisinde tanmlanan standart adresleri bilmek ve tanmlayacamz kaydedicilerin adresleini bu adreslerin dnda sememiz gerekmektedir. PIC 16F877 kaynak dosyas ierisinde yer alan standart kaydediciler aadaki gibidir. indf tmr0 pcl status fsr porta equ equ equ equ equ equ h'0000' h'0001' h'0002' h'0003' h'0004' h'0005'

83

84

portb portc portd porte pclath intcon pir1 pir2 tmr1l tmr1h t1con tmr2 t2con sspbuf sspcon ccpr1l ccpr1h ccp1con rcsta txreg rcreg ccpr2l ccpr2h ccp2con adresh adcon0 option_reg trisa trisb trisc trisd trise pie1

equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ

h'0006' h'0007' h'0008' h'0009' h'000a' h'000b' h'000c' h'000d' h'000e' h'000f' h'0010' h'0011' h'0012' h'0013' h'0014' h'0015' h'0016' h'0017' h'0018' h'0019' h'001a' h'001b' h'001c' h'001d' h'001e' h'001f' h'0081' h'0085' h'0086' h'0087' h'0088' h'0089' h'008c'

84

85

pie2 pcon sspcon2 pr2 sspadd sspstat txsta spbrg adresl adcon1 eedata eeadr eedath eeadrh eecon1 eecon2

equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ

h'008d' h'008e' h'0091' h'0092' h'0093' h'0094' h'0098' h'0099' h'009e' h'009f' h'010c' h'010d' h'010e' h'010f' h'018c' h'018d'

Tanmlanabilecek kiisel kaydedicilere ise u rnekleri verebiliriz. say1 say2 reg reg1 equ equ equ equ h10 h11 h20 h 1a

4.2.4.3 Bit Tanmlamalarnn Yaplmas Program ierisinde programdaki ilemleri daha rahat anlamak ve yazm esnasnda hatay azaltmak iin k pinlerine ve entegre ierisinde kontrol salayacak bitlere kolay anlalabilecek isimler verilebilir. simlendirilecek bu bitlerin ise programda belirlenmesi gerekir. Yani verilecek ismin hangi kaydedicinin hangi bitine ait olduu programa yazlmaldr. Bu ksmda yine kaynak dosyada kullanlan baz standart bitler karmza kar. Bitleri isimlendirir iken bu standart bitleri gz nnde bulundurmak gerekir. Standart olarak tanmlanan bitlerin bazlar aada sunulmutur.

85

86

;----- status bitleri -------------------------------------------------------#define #define #define #define #define #define #define c irp rp1 rp0 not_to not_pd z dc status,0 status,7 status,6 status,5 status,4 status,3 status,2 status,1

;----- intcon bitleri -------------------------------------------------------#define #define #define #define #define #define #define #define gie peie t0ie inte rbie t0if intf rbif intcon,7 intcon,6 intcon,5 intcon,4 intcon,3 intcon,2 intcon,1 intcon,0

;----- adcon0 bitleri -------------------------------------------------------#define #define #define #define #define #define #define #define #define #define adcs1 adcs0 chs2 chs1 chs0 go not_done go_done chs3 adon adcon0,7 adcon0,6 adcon0,5 adcon0,4 adcon0,3 adcon0,2 adcon0,2 adcon0,2 adcon0,1 adcon0,0

86

87

Bu standart bit tanmlamalar yannda standart kaydedicilerin bazlarnn ve kiisel kaydedicilerin bitlerine zel isimler verme olanamz da vardr. Buna birka rnek aada sunulmtur. #define #define #define #define tus clock kontrol en porta,2 portb,1 say1,7 reg1,0

4.2.4.4 Giri ve k Tanmlamalar PIC 16F877 giri ve kn yapld pinler PORTA, PORTB, PORTC, PORTD, PORTE pinleridir. Bu portlara ait tm pinleri hem giri hem de k olarak kullanabiliriz. Ancak program ierisinde pinlerin hangisini giri iin hangisini k iin kullandmz belirtmek gerekir. k iin tanmlanan bir pine gerilim girii yapmak bu pinin bozulmasna neden olabilir. Bu yzden ilemlerde kullanlmayan pinleri programda giri olarak tanmlamak faydal olmaktadr. Bir program ierisinde yaplabilecek giri ve k tanmlamalar aada rnekler halinde sunulmutur. bank1 movlw b00011100 movwf trisa movlw b01100110 movwf bank0 4.2.4.5 PICin Yapaca lemlerin Yazlmas PICin yapaca ilemleri yazmak demek komutlar bir algoritma veya ak emasna gre programda yerlerine yazmak demektir. (Bu ksmda yaplacak ilemler sonraki ksmda rnek ve uygulamalar ile genie anlatlacaktr.) 4.3 PIC 16F877 Komut Takm PIC 16F877nin programlanmasnda kullanlan 35 komutluk komut takm tablo 4.1 de verilmitir. trisb

87

88

Tablo 4.1: PIC 16F877 Komut Takm Komut ADDWF f,d ANDWF f,d CLRF f CLRW COMF f,d DECF f,d DECFSZ f,d INCF f,d INCFSZ f,d IORWF f,d MOVF f,d MOVWF f NOP RLF f,d RRF f,d SUBWF f,d SWAPF f,d XORWF f,d BCF f,b BSF f,b BTFSC f,b BTFSS f,b ADDLW k ANDLW k CALL k CLRWDT GOTO k IORLW k MOVLW k RETFIE RETLW k RETURN SLEEP SUBLW k XORLW k Sresi(T) 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1 1 1 1(2) 1(2) 1 1 2 1 2 1 1 2 2 2 1 1 1 Etkilenen Bit C,DC,Z Z Z Z Z Z Z Z Z

C C C,DC,Z Z

C,DC,Z Z TO,PD Z

TO,PD C,DC,Z Z

88

89

4.4 Komut Aklamalar ADDWF kaydeder. lem: (w)+(f) d rnek:addwf porta,f PORTA:00010101 PORTA:01001000 f,d:Akmlatrdeki herhangi bir veri ile f kaydedicisindeki veriyi

mantksal olarak toplar ve sonucu dnin deeri f ise kaydediciye w ise akmlatre

lemden nce:W=00110011 lemden sonra:W=00110011 ANDWF

f,d:Akmlatrdeki veri ile f kaydedicisindeki veriyi ve (AND)

ilemine sokar ve sonucu dnin deeri f ise kaydediciye w ise akmlatre kaydeder. lem: (w).AND.(f) d rnek:andwf portb,w PORTB=00000011 PORTB=00000011

lemden nce: W=00110011 lemden sonra: W=00000011 CLRF

f:f kaydedicisinin ieriini siler (sfrlar).

lem: f=0 rnek: clrf portb

lemden nce: PORTB=00000011 lemden sonra: PORTB=00000000 CLRW:Akmlatrdeki verileri siler. lem: W=0 rnek: clrw lemden nce: W=11110001 lemden sonra: W=00000000 COMF lem: f =d f,d:f kaydedicisinde yer alan verinin tmleyenini (complementini) alr ve

dnin ald deere gre sonu akmlatre veya f kaydedilir.

89

90

rnek: comf

portb,w PORTB=00101010 PORTB=00101010

lemden nce: W=01010101 lemden sonra: W=11010101 DECF

f,d: f kaydedicisindeki veriden 1 azaltr ve dnin ald deere gre

sonucu akmlatre veya f kaydedicisine kaydeder. lem: f-1=d rnek: decf pcl,w W=11010101 W=10001110 lemden nce: PCL=10001111 lemden sonra: PCL=10001111 DECFSZ

f,d: f ile belirtilen kaydedicideki deeri 1 azaltr ve sonucu d deerinin

ald deere gre f veya akmlatre kaydeder. Daha sonra sayc deerinin 0 olup olmadna baklr. Eer deer 0 ise bir alttaki satr atlanr. Eer 0 deil ise bir alttaki satr okunur. rnek: devam decfsz say1,f goto end Yukardaki program parasnda say1in deeri 1 azaltlr. Eer say1in deeri 0 olmu ise program sonlanr. Eer 0 deilse program devam etiketinin olduu satra gelir. INCF f,d=f kaydedicisindeki veriye 1 ekler ve dnin ald deere gre sonucu devam

akmlatre veya f kaydeder. lem: f+1=d rnek: incf pcl,f W=10001110 W=10001110

lemden nce:pcl=01110000 lemden sonra:pcl=01110001 INCFSZ

f,d: f ile belirtilen kaydedicideki deeri 1 arttrr ve sonucu d deerinin

ald deere gre f veya akmlatre kaydeder. Daha sonra sayc deerinin 0 olup olmadna baklr. Eer deer 0 ise bir alttaki satr atlanr. Eer 0 deil ise bir alttaki satr okunur.

90

91

rnek: devam

incfsz say1,f goto end devam

Yukardaki program parasnda say1in deeri 1 arttrlr. Eer say1in deeri 0 olmu ise program sonlanr. Eer 0 deilse program devam etiketinin olduu satra gelir. IORWF kaydeder. lem: (w).OR.(f) d rnek: iorwf porta,w PORTA=01010101 PORTA=01010101 f,d: Akmlatrdeki bilgi ile f kaydedicisindeki veriyi veya (OR)

ilemine sokar ve dnin ald deere gre sonucu akmlatre veya f kaydedicisine

lemden nce: W=10001110 lemden sonra: W=11011111 MOVF

f,d: f kaydedicisinde yer alan veriyi akmlatre tar. Burada d deeri

her nekadar f deerini de alabiliyor gibi gzkse de d=w olmaldr. lem: (f) (w) rnek: movf porta,w PORTA=01010101 PORTA=01010101

lemden nce: W=00000000 lemden sonra: W=01010101

MOVWF: Akmlatrde bulunan veriyi f kaydedicisine tar. lem: (w) (f) rnek: movwf portb PORTB=00000111 PORTB=01010101

lemden nce:W=01010101 lemden sonra: W=01010101

NOP: Bu komutun bulunduu satra gelindiinde hibir ilem yaplmaz.1slik bir beklemeden sonra program kald yerden devam eder. Bu komut genellikle zaman gecikmesi istenen yerlerde bir dng ile birlikte kullanlr

91

92

RLF

f,d: f kaydedicisindeki veriyi sola kaydrma ilemini yapar. arpma

ilemini yapan dnglerde olduka ok kullanlmaktadrlar. Aslnda bir dijital veriyi 1 kere sola kaydrmak demek sayy 2 ile arpmak demektir. Sayy n defa sola kaydrmak demek ise sayy 2n ile arpmak demektir. Kaydrma ileminden sonra kaydedicinin deeri dnin deerine gre kaydediciye ya da akmlatre atlr. rnek: rlf status,f

lemden nce: STATUS=01110010 lemden sonra: STATUS=11100100 RRF f,d: f kaydedicisindeki veriyi saa kaydrma ilemini yapar. Blme ilemini

yapan dnglerde olduka ok kullanlmaktadrlar. Aslnda bir dijital bilgiyi 1 kere saa kaydrmak demek sayy 2ye blmek demektir. Sayy n defa saa kaydrmak demek ise sayy 2ne blmek demektir. . Kaydrma ileminden sonra kaydedicinin deeri dnin deerine gre kaydediciye ya da akmlatre atlr. rnek: rrf portb,f

lemden nce: PORTB=01010101 lemden sonra: PORTB=00101010 SUBWF f,d: f kaydedicisinde bulunan veriden akmlatrde bulunan veriyi

mantksal karma ilemine tabi tutar. Sonucu d deerine gre f kaydedicisine veya akmlatre kaydeder. lem: (f) (w) d rnek: subwf W = 00000010 W = 00000010 rnek: : subwf W = 00000010 reg1,f C=? C = 1;sonu pozitif reg1,f C=? Z=? Z=? Z=0

lemden nce:REG1 = 00000011 lemden sonra:REG1 = 00000001

lemden nce:REG1 = 00000010 lemden sonra:REG1 = 00000000

92

93

W = 00000010 rnek: : subwf W = 00000010 W = 00000010 SWAPF

C = 1; sonu 0 reg1,f C=? C = 0; sonu negatif

Z=1

lemden sonra:REG1 = 00000001 Z=? Z= 0 lemden sonra:REG1 = 11111111

f,d:f kaydedicisinde bulunan veride 4er bitlik bloklar halinde yer

deitirme yapar. Yani f kaydedicisinin ilk 4 biti dk son 4 biti yksek bitler olarak isimlendirilirse; bu komut ile yksek bit ile dk bitler yer deitirir. Elde edilen sonu ise d deerine bal olarak f kaydedicisine ya da akmlatre kaydedilir. rnek: swapf say1,w W=11010111 W=00110101

lemden nce:SAY1=01010011 lemden sonra:SAY1=01010011 XORWF

f,d: Akmlatrdeki veri ile f kaydedicisindeki veriyi zel veya

(EXCLUSVE-OR) ilemine sokar ve dnin ald deere gre sonucu akmlatre veya f kaydedicisine kaydeder. lem: (w).EXOR.(f) d rnek: xorwf status,f STATUS=11100100 STATUS=01011011

lemden nce: W=10111111 lemden sonra: W=10111111 BCF 0b7 rnek: bcf porta,0

f,b:f kaydedicisinin b. bitini temizler (sfrlar)

lem: f,b=0

lemden nce: PORTA=01110101 lemden sonra:PORTB=01110100 BSF f,b: f kaydedicisinin b. bitini 1 yapan komuttur.

lem: f, b=1

93

94

0b7 rnek: bsf portc,4

lemden nce: PORTC=0110000 lemden sonra:PORTC=0111000 BTFSC atlanr. lem: f,b=0 rnek:addlw btfsc bcf andwf PORTA=01001000 lemden sonra:W=00000000 PORTA=01001000 Yukardaki program parasnda ncelikle akmlatre 11111110 sabit says eklendi. Bu aamada akmlatre 00000001 says yerleti ve CARRY bitine 1 says yerleti. Bu durumda ilem BCF STATUS,3 satrndan devam etti. Eer ki toplama PORTA,W satrndan devam edecek idi. sonucu CARRY biti 0 olsa idi ilem ANDWF BTFSS atlanr. lem: f,b=1 rnek:btfss bsf alttaki satr atla buton1 porta,2 BUTON1=0 BUTON1=0 PORTA=01001000 PORTA=01001010 CARRY=0 STATUS=01110000 alttaki satr atla b11111110 carry status,3 porta,w CARRY=0 STATUS=01110100 f,b:f kaydedicisinin b. bitine gre ilem gerekletiren komuttur. stenen

bitin sonucu 1 ise bir alt satrdan ilemlere devam edilir. Eer sonu 0 ise bir alttaki satr

lemden nce:W=00000011

f,b:f kaydedicisinin b. bitine gre ilem gerekletiren komuttur. stenen

bitin sonucu 0 ise bir alt satrdan ilemlere devam edilir. Eer sonu 1 ise bir alttaki satr

addlw 00001111 lemden nce:W=00000000 lemden sonra:W=00000000

94

95

Yukardaki program parasnda BUTON1 biti ilem kolaylatrmak iin daha nceden tanmlanm olmas gereken bir bilgidir. Eer ki BUTON1 1 ise PORTA nn 2. Biti 1 yaplacaktr, 0 ise nce akmlatre 0nce 00001111 sabiti yklenecek daha sonra PORTAnn 2. Biti 1 yaplacaktr. (Yukarda yaptmz ilemler BUTON1in 1 konumu iindir.) ADDLW kaydeden komuttur. lem:(w)+k w rnek: addlw b00110110 lemden nce: W=00111101 lemden sonra: W=01110011 Eer ki toplama ilemi sonucunda bir tama olumu ise bu CARRY bitine kaydedilir. ANDLW komuttur. lem: (w).AND.k (w) rnek:andlw b00111011 0k 255 k: Herhangi bir sabit ile akmlatrdekiveriyiand (ve) ilemine sokan 0k 255 k:Herhangi bir sabit ile akmlatrdeki veriyi toplayp akmlatre

lemden nce: W=01110011 lemden sonra:W=00110011 CALL k: k ile belirtilen etiketli satra gider ve return komutunu grene kadar k satrnn bir altndaki

ilemleri gerekletirir. Return komutunu grd anda ise call ismi olabilecek bir kelime de yazabiliriz.

satra dn yaplr. k yerine herhangi bir bilgiyi ieren say yazabileceimiz gibi etiket

CLRWDT:Watchdog Timern sfrland komuttur. Watchdog Timer genellikle frekans blme ilemlerinde kullanlr ve her yeni blme ileminin banda sfrlama yaplmas gerekmektedir.

95

96

GOTO yoktur.

k:CALL n yapt ileme benzer bir ilem yapar. Yani k ile belirtilen

satra gider ve ilemlere devam eder. Ancak return ve retlw gibi sonlandrma komutlar

rnek: bala

btfsc portb,3 goto topla goto bitir

topla bitir

addlw end

b00001111 W=00000001 W=00010000

lemden nce:PORTB=00000111 lemden sonra: PORTB=00000111 IORLW

k: Akmlatrdeki veri ile k sabit saysn veya (OR) ilemine sokar ve

sonucu akmlatre kaydeder. lem: (w).OR.(k) w rnek: iorlw b11001010

lemden nce: W=10100000 lemden sonra: W=11101010 MOVLW k: k ile belirtilen bir sabit sayy akmlatre atar.

lem: k w rnek: movlw b10011010

lemden sonra:W=10011010 RETFIE: arlan bir kesmeden kmay salar. lem: TOS PC rnek: retfie Kesmeden ktktan sonra PC = TOS GIE = 1 RETLW k:Bu komut returna benzer bir ilem yapar. Yani call ile arlan 1 GIE

ilemin sonunda akmlatre k gibi bir sabiti ykler ve program calln bulunduu satrn bir alt satrna dallanr.

96

97

RETURN:Bu komut call ile arlan ilemin sonlandrlmasnda kullanlr ve program bu satr okuduunda ilem calln bulunduu satrn bir alt satrna dallanr.Bu ilem yaplr iken akmlatrdeki bilgide hibir deiiklik olmaz. SLEEP: Pic in uyku modunda ekilen akm 1Aden daha da azdr. Herhangi bir ilem yaplmad istendik durumlarda salanabilir. SUBLW kaydeder. lem: (w)-(k) w rnek: sublw b00000101 k:k gibi bir sabiti akmlatrdeki veriden karr, sonucu akmlatre pic bu modda altrlarak az akm ekilmesi

lemden nce: W=10100101 lemden sonra: W=10100000 XORLW k:Akmlatrdeki veri ile k sabit saysn zel veya (EX-OR)ilemine

sokar ve sonucu akmlatre kaydeder. lem: (w).EXOR.(k) w rnek:xorlw b00011010

lemden nce:W=10111111 lemden sonra:W=10100101 4.5 Program Gelitirme Yazlm gelitirmede izlenebilecek yol vardr: ICE (in circuit emulator ) kullanmak, programc ve EPROM temelli bir miktar PIC kullanmak veya simlatr . ICE kullansanz bile baarl bir rn gelitirme iin baz EPROM srml PIClere ihtiyacnz olacaktr. PICin en az 5 EPROM srmyle balayn. Sonradan bir PICin silinmesinin 10 20 dakika aldn greceksiniz. Not: Aygtlar bydke , silinme sreleri de artar.

97

98

ekil 4.1:PIC Gelitirme Ak Diyagram Bundan sonraki ksmlarda PIC 16F877nin zelliklerini kullanmaya ynelik program paralarnn zerinde durulacaktr. Bu program paracklar kullanlarak daha byk ve daha kapsaml ilemleri gerekletiren programlarn yazlmas mmkndr.

98

99

5. PIC 16F877 PROGRAM UYGULAMASI Bu blmde, en ok kullanlan sistemlerden biri olan analog bir verinin PIC 16F877 ile dijitale dntrlp, LED displayde nasl grntlendiini inceleyeceiz. 5.1 Programn Yazlm ;Analog verinin Dijitale evrilmesi list p=16f877 #include <p16f877.inc> __config_cp_off&_pwrte_on&_boden_on&_xt_osc&_lvp_off&_cpd_off&_debug_off zero carry azalt0 azalt1 azalt2 azalt3 ram equ equ equ equ equ equ equ =z =c h32 h33 h34 h35 h36
;programn ilerleyen satrlarnda

kullanlacak geici

deikenler ve deikenlerin yerletirilecei hafza alanlar tanmlar soldwit ortadigit sadigit saat sys_wsay sys_ssay sys_psay org0 clrf clrf clrf azalt0 azalt1 azalt2 equ equ equ equ equ equ equ h37 h38 h39 h40 h41 h42 h43

99

100

clrf clrf

azalt3 ram ;geici hafzada tanmlanan, program ierisinde kullanlacak tm deikenlerin ieriinin program balangcnda silinmesi

clrf clrf clrf clrf bcf bcf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf bsf bcf movlw movwf movlw movwf movlw movwf movlw

soldigit ortadigit sadigit saat status,rp0 status,rp1 h20 intcon h00 porta h00 portb h00 portc h00 portd h00 porte h81 adcon0 status,rp0 status,rp1 h87 option_reg h0e adcon1 h01 trisa h00 ;porta nn 0 biti giri dierleri k yaplyor ;prescaler 1:128 olarak seiliyor ;bank1 seiliyor ;portede 7-4-0 bitleri giri dier bitleri k yapld ;portd k olarak ayarland ;portc k olarak ayarland ;portb k olarak ayarland ;porta k olarak ayarland ;rp0 da 0 yaplarak bank 0 seiliyor

100

101

movwf movlw movwf movlw movwf movlw movwf bcf bcf main yenile btfss goto bcf bsf wait btfss goto movf movwf movlw subwf btfsc goto goto kucuk10 incf movwf movlw subwf btfsc goto btfss

trisb h00 trisc h00 trisd h00 trise status,rp0 status,rp1

;portb nin tm pinleri k yapld ; portc nin tm pinleri k yapld ;portd nin tm pinleri k yapld ; portb nin tm pinleri k yapld ;bank1 seiliyor

intcon,t0if yenile intcon,t0if adcon,go pir1,adif wait adresh,w sagdigit h0a sagdigit,w status,0 kucuk10 atlason soldigit,f sagdigit h0a sagdigit,w status,0 kucuk10 soldigit,4 ;A/D ilemi aktif hale getirildi ;tama kontrol yaplr

101

102

goto clrf atlason movlw movwf kesme movwf call segment movwf bsf call bcf movwf call movwf bsf call bcf decfsz goto clrf clrf goto segment addwf retlw retlw retlw retlw retlw retlw

atlason soldigit h0a saat sagdigit,w ;segment altrutinine dallanlyor ve karakter oluumu iin balang yaplyor portd portb,0 time portb,0 soldijit,w segment portd portb,1 time portb,1 saat,f kesme soldigit sagdigit yenile pcl,f h04 ;0 h7d ;1 h23 ;2 h31 ;3 h51 ;4 h91 ;5 ;bu alt rutin sayesinde digit kaydedicilerindeki verilerin displerdeki karlklar belirlenir

102

103

retlw retlw retlw retlw time movlw movwf dongu1 movlw movwf dongu2 movlw movwf dongu3 decfsz goto decfsz goto decfsz goto return end

hc1 ;6 h3d ;7 h00 ;8 h19 ;9 .5 azalt1 .10 azalt2 .30 azalt3 azalt3,f dongu3 azalt2,f dongu2 azalt1,f dongu1 ;30 sabit deeri akmlatre atld ;10 sabit deeri akmlatre atld ;5 sabit deeri akmlatre atld

Bu programda temel olarak dardan alglanan analog bir veri; PIC 16F877nin ADC modlnn aktif edilmesi ile dijital olarak aygt ierisine alnr. Bu dijital verinin saysal olarak deeri iki haneli displayde grntlenebilecek ekilde sa digit ve sol digit olarak iki paraya ayrlr. Daha sonra her digite ait veriler insan gznn alglayamayaca bir hzla displaylere yollanr. Bylelikle d ortamdaki analog verinin saysal deeri displaylerle gzlenmi olur.

103

104

5.2 Uygulama Devresine Ait ema

Analog Giri 10 K

CC *2

7805

PIC 16F877

220x2

1K

BC 1K 238

BC 238

ekil 5.1: Uygulama Devresine Ait ema

104

105

SONU VE DEERLENDRME Yaplan bu alma ile geni bir kullanm alanna sahip mikrodenetleyicilerin bir yesi olan PIC aygtlar ve PIC 16F877 geni olarak ele alnmtr. Yazlan bu tez ve bunun gibileri sayesinde PIC mikrodenetleyicileri hakknda Trkiyede az bulunan Trke kaynaklar artmaktadr. PIC16F84 ve PIC 16F877 gibi aygtlar kolay seri programlanma zelliklerine sahiptir. Bu zellikleri sayesinde PIC 16F84 ve PIC 16F877 dijital uygulamalarda ska tercih edilmektedirler. Bu aygtlarn kolay temin edilmesi ise dier bir avantajdr. PIC aygtlarn programlamak iin birka alternatif vardr. Bunlardan ilki microchip veya dier firmalarn rettii geni bir ktphaneye sahip olan programlayclar, ikincisi ise internetten kolayca ulaabileceimiz ancak kullanm alan biraz daha dar olan programlayclardr. PIC 16F877de I2C, SPI, ADC, PWM, CPM gibi veri iletim protokollerinin yeralmas; ayn anda birok ilemin gerekletirilmesi ve bir tasarm ierisindeki elektronik eleman saysnn azalmas asndan nemlidir.

105

106

KAYNAKLAR

1. Daldal , NHAT Gazi niversitesi Teknik Eitim Fakltesi Lisans Tezi 2. http://www.antrak.org.tr/gazete 3. http://www.rentron.com 4. Gmkaya, HALUK 1999, Mikroilemciler ve 8051 Ailesi 5. http://www.pjwdesign.demon.co.uk 6. MICROCHIP 2000 Technical Library CD-ROM 7. MICROCHIP 1998 Technical Hand Book

106

107

ZGEM 29.05.1979 tarihinde Ankarada dodu. lk ve orta renimini Ankarann Mamak ve Altnda ilelerinde tamamlad. Lise renimini ise Yldrm Beyazt Anadolu Meslek Lisesi Telekomnikasyon Blmnde tamamlad. 1997 ylnda Gazi niversitesi Elektronik retmenlii Programna girmeye hak kazand. Halen Gazi niversitesi Elektronik retemenlii Programnda renimine devam etmektedir. Eitimi esnasnda bilgisayar network, telefon sistemleri, asansr sistemleri gibi alanlarda faaliyet gsteren firmalarda almtr. u anda FULLTECH Elektronik ve Bilgisayar Tasarm Hizmetleri adyla hizmet veren firmay arkadalar ile birlikte iletmektedir.

107

You might also like