PIC 16F877A TABANLI NEM KONTROLLÜ TOPRAK SULAMA SİSTEMİ

Embed Size (px)

Citation preview

T.C. KAHRAMANMARA ST MAM NVERSTES MHENDSLK-MMARLIK FAKLTES ELEKTRK-ELEKTRONK MHENDSL

PIC 16F877A TABANLI NEM KONTROLL TOPRAK SULAMA SSTEM

STATK VAR KOMPANZASYONU 07EM1035 Asl ZM 08EM1005 Gamze ZBEK

09EM1053 Gker DEBAOLU

LSANS TEZ DANIMAN

Yrd. Do. Dr. Metin SALHMUHSN

KAHRAMANMARA HAZRAN 2011

NDEKLERSAYFA NO TEEKKR..................................................................................................3 NSZ..........................................................................................................4 1.GR..........................................................................................................5 2. MALZEME LSTES..5 3.GENEL BLGLER....................................................................................6 3.1 SSTEM ALGORTMASI6 3.2 PIC 16F877A....................................................................7 3.2.1 MMAR....................................................................7 3.2.2 CPU ZEL FONKSYONLARI ............................11 3.2.3 ZAMANLAMA VE KOMUT PERYODU ...........13 3.2.4 BELLEK YNETM..............................................13 3.2.5 VER BELLE YNETM..................................14 3.2.6 KAYDEDCLERN LEVLER...........................15 4. PROJEMZDEK DEVRENN EMASI...............................................20 5. BASKI DEVRE EMASI.......................................................................21 6. PROGRAMIN C DLNDE YAZIMI....................................................21 7. SONU...................................................................................................23 KAYNAKLAR..24 ZGEM..24

2

TEEKKRncelikle, bu tez almasnda gnmz artlarnda nem tayan bu deerli konuyu sememizde, aklc ynlendirmeleri ve deerli bilgilerinden faydalandmz Sayn Yrd.Do.Dr Metin SALHMUHSN hocamza, ayrca programlama aamasnda bizden bilgilerini esirgemeyen Sayn M. Yaln KARAGEDK hocamza, disiplinli alma ortam oluturan grup arkadalarmza ve bizleri yetitiren, manevi desteklerini hibir zaman esirgemeyen ailelerimize teekkr bir bor biliriz.

3

NSZ

Teknoloji anda olduumuz 21. yzylda, gelien sanayinin ihtiyalarn karlayan en nemli bileen olan Otomasyon sistemi; naat, Enerji, Elektrik, Elektronik, Geri Dnm, Tekstil, Kimya ve Tarm sektrleri gibi birok alanda kullanlmaktadr. Bu sistemler hayatmz kolaylatran sistemlerdir. lkemiz ekonomisinde rekabet arttka, kalite ve srdrlebilirlik nem kazandka endstriyel otomasyon da arln ve hacmini arttrmaktadr. Otomasyon yerleip ilerledike endstriyel retim onunla doru orantl olarak gelimeye devam edecektir. Tm sektrlerin rekabet edilebilirliliini, verimliliini arttran ve kaliteyi ykselten endstriyel otomasyon, her ynden tm sektrlere hizmet etmektedir. Bunlardan en nemlilerinden biri TARIM sektrdr. lkemizde grlen kuraklk nedeniyle yer alt ve yerst sularnda grlen zayflama nedeniyle son zamanlarda su tasarrufu salamak iin ENDSTRYEL OTOMASYON yntemleri uygulanmaktadr. Bu sistemin amac; rnn ihtiyacna gre optimum sulama yapmaktr. Bu ekilde hem rnn verimi artacaktr hem de su tasarrufu salanp lke ekonomisine katk salanacaktr. ASLI ZM GAMZE ZBEK GKER DEBAOLU

4

1.GR

Kontroll ortam almalarnda ve deneysel almalarda nemin llmesi ve kontrol son derece nem tar. Biz bu projemizde; topran nemini lmek iin metal iletken kullandk. Topraktaki bu bilginin alnmas ve ilem grmesi iin pic ailesinden de 16F877Ay kullanarak bu bilgilerin LCD zerinde okunmasn saladk. Projemizdeki ama topraktan ilk olarak nemi lmek ve rnn ihtiyacna gre bir maksimum deer belirleyip sulama yapmaktr. Toprak nemi ile referans nem bir mikro denetleyici vastasyla devaml karlatrlr. Toprak nemi eik deere ulat anda sulama kesilir. Tasarlanm olan devrede; nemi lmek iin metal bir iletken kullanmamz gerekmektedir ve lm deerlerini okuyabilmemiz iin ise lcd ekrannda gsterilmesi gerekmektedir. llen byklk analog, lcd de gsterilen deerin digital olduunu hatrladmzda dntrme ilemini gerekletirmek zere bir ADC nitesine ihtiyacmz olacaktr. te btn bunlar kontrol eden sistem pc ailesinden 16F877A isimli mikro denetleyicimizdir.

2.MALZEME LSTESMalzeme Mikrodenetleyici Nem lm iin metal iletken Lcd Kristal Osilatr Potansiyometre Kapasitr Direnler Transistr Diyot Voltaj reglatr Cinsi 16f877A 2 adet ivi LM016L 4 Mhz 3 tane 5 k 2 tane 22 pf, 1 tane 100uf 6 tane 10k,6 tane 100, 2 tane 220 2 tane BC141 transistr 1 tane 1N4001 1 adet 7805 entegresi5

3. GENEL BLGLER3.1 SSTEM ALGORTMASIBu projedeki ama topran nemini lmek, bulunan deerler ile toprakta yetitirilmekte olan bitkinin ihtiyacna gre bir sulama aral belirlemek, bitki ya da toprak suya doyduu anda (yani toprak nemi istenilen dzeye geldii anda) kurmu olduumuz devre ile deerleri alglayp sulama ilemine son vermektir. Devreyi kurarken ilk olarak bir saks ve sulama yapmak iin lm yapmak zere kullanlmas gereken sensor; bir biri ile aralarnda yaklak 1 cm mesafe bulunan iki tane paslanmaz elikten ivi yada prob olmaldr. Bu problar bir ahap yada plastik zerine monte edilerek saksya yada topraa daldrlmaldr. Bu iin mekanik safhas. kinci safhada elektronik ilemleri yapmamz gerekiyor. Bu ekilde hazrlanm bir prob ile topran elektriksel geirgenliini lerek karar verilmesi ve karara gre de iei sulanmas ya da sulanmamas ileminin gerekletirilmesi gerekiyor. Topran elektriksel geirgenlii bize mili volt seviyesinde kk bir lm deeri verecektir. O nedenle bir transistor kullanarak lm sonucu aldmz o kk deeri anlalabilir (0-5V) bir seviyeye ykseltmemiz gerekecektir. Sonra bu deeri bir pic ilemcinin(16f877A) ADC giriine girerek lm dijital deere dntrecek ve aldmz bu deere gre karar verdirip sulama motoruna sinyal verip suyu geirmesini salayacak ve topran nemi uygun seviyeye gelince de su kesilecektir (akvaryum motoru zerinden). Bu motor su haznesinden suyu alp bir hortum yardm ile saksda sulama yapacaktr. Bu arada topran nemi sensr gibi davranan iki adet ivi sayesinde devaml llp ihtiyaca gre sulama yaplacak ya da sulama kesilecektir. imdi yle bir bakarsak bilmemiz gerekenler; Transistrler ile voltaj katlama ya da kazanc elde etme Pic ilemciler ile ADC okuma

htiyaca gre sulama ileminin gereklemesi ve bitirilmesi

Pic ilemcilerin programlanmas

6

3.2 PIC 16F877A3.2.1 MMAR PIC 16F87X ve 16F8X serisi ncelikle, PIC 16CXX ailesinin zelliklerini tar. PIC 16CXXde Harvard mimarisi kullanlmtr. Von Neuman mimarisinde, veri ve program belleine ayn yoldan eriilebilirken, bu mimaride program bellei ve veri belleine eriim farkl boylarda yaplr. Veri yolu (databus) 8 bit geniliindedir. Ayn anda, veri belleine 8 bit geniliindeki bu yolla eriilirken, program belleine program yolu ya da adres yolu (program bus / adress bus) denilen 14 bit geniliindeki dier bir yolla eriilir. Bunun iin PIC 16F87X ve PIC 16F84de komut kodlar (opcode), 14 bittir. 14 bitlik program belleinin her bir adresi, bir komut koduna (Instruction Code / Instruction Word) karlk gelir. Dolaysyla her komuta bir evrim sresinde (cycle) eriilir ve komut kaydedicisine yklenir. Komut kaydedicisi, CPU tarafndan kullanlan bir kaydedicidir ve dallanma komutlar dndaki btn komutlar, ayn evrim sresinde altrlrlar. Bu srada program sayac, PC (Program Counter) bir artar. Dallanma ya da sapma komutlar ise, iki ardk periyotta altrlr ve program sayac PC, iki arttrlr.

Merkezi ilem biriminin (CPU) en nemli alt birimlerinden biri, ALU (Aritmetik Logic Unit) olarak adlandrlan aritmetik mantk birimidir. ALUnun grevi, kendisine yollanan veriler zerinde, aritmetik ya da mantksal ilemler yapmaktr. ALUnun biri W (Working Register) ismi verilen kaydediciden olmak zere, iki ana girii vardr. ALU kendisine gelen iki veriyi (ileler), toplayp karlabilir. eitli mantk ilemleri yapabilir (and,or, xor gibi).

7

Mikroilemcilerde en ok kullanlan kaydedici, working registerdr. Bu ksaca W olarak adlandrlr. W, aritmetik ve mantk ilemlerinde, iki ilevi bir arada yrtr. lemden nce, ilenenlerden birini barndrr. lemden sonra ise ilem sonucunu saklar, PIC 16F8X ve 16F87X serisi mikrodenetleyicilerde, komutun sonuna konan 1 veya 0 saysyla (d), sonucun Wde ya da baka bir kaydedicisinde tutulaca mikroilemciye bildirilir. PIC 16F877 ve 16F876, 8 Kword byklnde bellee sahiptir. Program bellei yongann ierisindedir. PIC 16F84n bellei ise 1Kword byklndedir. PIC 16F84 ve 16F87X serisi mikrodenetleyiciler, kendi kaydedicilerini ve veri belleini, dorudan, dolayl ve greceli olarak adresleyebilirler. PIC16F87X Mikro denetleyici ailesi aadaki temel zellikleri tar. CPU azaltlm komut seti RISC temeline dayanr. renilecek 35 komut vardr ve her biri 14 bit uzunluktadr. Dallanma komutlar iki evrim (cycle) srede, dierleri ise bir evrimlik srede uygulanr. lem hz 16F877de DC20MHzdir. (16F877de bir komut DC200ns hznda alr.) Veri yolu (databus) 8 bittir. 32 adet SFR (Special Function Register) olarak adlandrlan zel ilem kaydedicisi vardr ve bunlar statik RAM zerindedir. . 8 Kworde kadar artan flash bellei 1 milyon kez programlanabilir. 368 Bytea kadar artan veri bellei (RAM), 256 Bytea kadar artan EEPROM veri bellei vardr. Pin klar PIC 16C73B/74B/76 ve 77 ile uyumludur. 14 kaynaktan kesme yapabilir. Yn derinlii 8dir. Dorudan, dolayl ve greceli adresleme yapabilir. Poweron Reset (Enerji verildiinde sistemi resetleme zellii) Powerup Timer (Powerup zamanlayc) Osilatr Startup Timer (Osilatr balatma zamanlaycs) Watchdog Timer (zel tip zamanlayc), devre ii RC osilatr Programla kod gvenliinin salanabilmesi zellii Devre ii Debugger (Hata ayklamakta kullanlabilecek modl) Dk gerilimli programlama Flash ROM program bellei (EEPROM zellikli program bellei) Enerji tasarrufu salayan, uyku Sleep Modu Seimli osilatr zellikleri Dk gle, yksek hzla eriilebilen, CMOSFlash EEPROM teknoloji Tmyle statik tasarm 2 pinle programlanabilme zellii yalnz 5V girile, devre ii seri programlanabilme zellii lemcinin program belleine, okuma/yazma zellii ile eriimi 2.0 V 5.0 V arasnda deien geni iletim aral 25 mAlik kaynak akm Devre ii, iki pin ile hata ayklama zellii Geni scaklk aralnda alabilme zellii 8

Dk gle alabilme zellii evresel zellikleri ise yle sralanabilir: TMR0: 8 bitlik zamanlayc, 8 bit nblcl TMR1: nblcl, 16 bit zamanlayc, uyuma modundayken d kristal zamanlaycdan kontrol arttrlabilir. TMR2: 8 bitlik zamanlayc, hem nblc hem de sonblc sabiti ki Capture / Compare / PWM modl 10 bit ok kanall A/D evirici senkron seri port (SSP), SPI (Master mod) ve I 2 C (Master Slave) ile birlikte Paralel Slave Port, 8 bit genilikte ve d RD, WR, CS kontrolleri USART/SCI, 9 bit adres yakalamal BOR Reset (Brown Out Reset) zellii PIC 16F84 ile PIC 16F87X mikrodenetleyici ailesinden farklar aadaki tabloda grlmektedir.

9

10

I: Input (Giri) O: Output (k) I/O: Input/Output (Giri/k) TTL: TTL Giri : Kullanlmyor ST: Schimitt Trigger giri olarak alr. 1. Bu buffer, d kesme olarak dzenlendiinde Schimitt Trigger giri olarak alr. 2. Bu buffer, seri programlama modunda Schimitt Trigger giri olarak alr. 3. Bu buffer, RC osilatr modunda ve CMOS devrelerinde Schimitt Trigger giri olarak alr. 3.2.2 CPU ZEL FONKSYONLARI (Konfigrasyon Bitleri) Konfigrasyon tanmnda, her yongann kendi konfigrasyon szc (14 bitliktir) iindeki bitlerin (013. bitler) nasl kullanlaca, program iinden seilebilir. Konfigrasyon bitlerinde hibir deiiklik yapmadnz takdirde, retici tarafndan belirlenmi, n koullara baml kalnr. PIC 16F877nin konfigrasyon bitleri, ilevleriyle aada saylmtr. Poweron reset (POR) Powerup timer (PWRTE) Osilatr startup timer BOR (Brown Out Reset) Yonga iindeki bir RC osilatr devresi ile belirli bir frekansta almas denetlenen WDT (Watch Dog Timer) birimi Kesmeler Kod koruma gvenlii Id yerleimleri G harcamasnn azaltlmas istendii durumlar iin uyku (sleep) modu stee bal osilatr seenekleri: RC / XT / HS / LS Devre ii seri programlama (iki pin ile seri olarak programlanabilme) Devre ii dk gerilimle programlama Devre ii hata arayc (Debugger) Aada PIC 16f877 VE PIC 16f84n, program belleinde 2007h adresindeki konfigrasyon szckleri, bit alm ve deerleri aklanmaktadr.

Bit 134: CP: Kod koruma biti 1= Kod korumas yok 0= Tm program bellei zerinde kod korumas var Bit 3: PWRTE: Powerup zamanlayc biti 1= Powerup zamanlayc aktif 0= Powerup zamanlayc pasif Bit 2: WDTE: Beki kpei zamanlaycs (Watch dog timer) bit 1= Beki kpei zamanlaycs aktif 11

0= Beki kpei zamanlaycs pasif Bit 10: FOSC0FOSC1: Osilatr seme biti 11= RC osilatr seildi 10= HS osilatr seildi 01= XT osilatr seildi 00= LP osilatr seildi PIC 16F87X ailesinin konfigrasyon szcnn alm:

Bit 1312 ve 54: CP1, CP0: Flash program bellei kod koruma biti 11= Kod korumas yok 10= 1F00h 1FFFh aras kod korumal blge 01= 1D00h 1FFFh aras kod korumal blge 00= 0000h 1FFFh aras kod korumal blge Bit 11: DEBUG: Devre ii hata arama modu 1= Devre ii hata arama pasif 0= Devre ii hata arama aktif Bit 10: Alan uygulanmad, 1 olarak okunur. Bit 9: WRT: Flash program belleine yazma biti 1= Kod korumasz program belleine EECON denetimi ile yazlabilir. 0= Kod korumasz program belleine EECON denetimi ile yazlamaz. Bit 8: CPD: Veri EE bellei koruma biti 1= Kod korumas yok 0= Kod korumal Bit 7: LVP: Dk gerilim devre ii seri programlama biti 1= RB3/PGM pini PGM ilevlidir, dk gerilimle programlanabilir. 0= RB3 saysal I/O tanml, MCLRye programlama iin yksek gerilim uygulanmaldr. Bit 6: BODEN: Gerilim alt ve st limitleri aarsa, program yeniden balatabilen (Brown out Reset Enable) bit 1= BOR yeniden balatma aktif (ON) 0= BOR yeniden balatma pasif (OFF) Bit 3: PWRTE: Powerup zamanlayc biti 1= Powerup zamanlayc aktif 0= Powerup zamanlayc pasif Bit2: WDTE: Beki kpei zamanlaycs (Watch dog timer) biti 12

1= Beki kpei zamanlaycs aktif 0= Beki kpei zamanlaycs pasif Bit 10: FOSC1FOSC0: Osilatr seme biti 11= RC osilatr seildi 10= HS osilatr seildi 01= XT osilatr seildi 00= LP osilatr seildi 3.2.3 ZAMANLAMA VE KOMUT PERYODU 16F87X ve 16F84 mikrokontrollerine OSC1 pininden gelen saat (clock) sinyali, yonga iinde drde blnr. Bunlara Q1, Q2, Q3, Q4 evrimi denir. Program sayac her Q1 evriminde bir artar. Komut Q4 annda bellee getirilerek, komut kaydedicisine (Instruction Register) yklenir. Komut kodunun zmlenmesi (decode) ve altrlmas (execute), izleyen Q1den Q4e dek olan srede gerekleir. Komutun ilenme aamalar: lk komut evriminde ilenecek olan komut, program belleindeki, komut kaydedicisine alnr. Bu komut evrimin bitiminde, program sayac bir arttrlr ve program sayac artk bellekte bir sonra ilenecek komutu gsterir. kinci komut evriminde ise bir nceki evrimde, komut kaydedicisine aktarlm olan komut, ayrtrlr (decode). Bylece komut ile yaplacak ilem belirlenir (Q1). lenecek veri bellekten alnr (Q2), komut altrlr (Q3) ve oluan sonu, gerekli adrese yazlr (Q4). Bylece komutun ilenmesi tamamlanr. Dallanma komutlar kullanlmsa, bu ilem iin iki komut evrimlik sre geer. nk ilk komut evriminde dallanma komutu, dier komutlar gibi program belleinden alnr. Bu arada bir nceki komut da yrtlmektedir. kinci komut evriminde dallanma komutu ilenecek ve bir sonraki komut evrimine geerken, program sayac dallanma komutundan hemen sonraki komutu deil, baka bir komutu gsterecektir. Ama mikrodenetleyici, bu komutun nasl sonulanacan ikinci komut evriminin sonunda anlar. Eer dallanma olacaksa, kaydedicisindeki bu deerin kullanlmamas ve yeniden komut yakalamas gerekir. Bylece PIC16F87X ve 16F84 bir komut evrimini kaybeder ve sapma veya dallanma komutlar eer sapma olacaksaiki komut evriminde gerekleir. 3.2.4 BELLEK YNETM PIC 16F87X ve 16F84 ailelerinin adet bellek blou bulunur. Bunlar program bellei (program memory), veri bellei (data memory) ve EEPROM veri belleidir. Her bloun, kendi veri yolu vardr (Harvard mimarisi). yle ki, ayn osilatr evriminde, her bir bloa eriim salanabilir. P rogram Bellei Y netimi 16F877de bu bellek kapasiteleri srasyla? 0000h07FFh, 0800h0FFFh, 1800h1FFFh adresleri arasndadr. Reset vektr adresi 0000h ve kesme (interrupt) vektr adresi 0004htr.

13

3.2.5 VER BELLE YNETM Veri bellei kendi iinde, bank ad verilen sayfalara blnmtr. Bunlarn her birinin banda zel fonksiyonlu kaydedici (Special Function RegisterSFR) alan ve daha sonra da genel amal kaydedici (General Purpose RegistersGPR) alan bulunur. zel ilem kaydedicileri mikrodenetleyicinin iletimini kontrol eder ve bir ilemin sonucunu renebileceimiz, zel durum bitleri vardr. rnein STATUS kaydedicisinin, 5. ve 6. bitleri olan RP0, RP1 adl bitler? bank seimi bitleri olarak, bu bellek blmlerini semede kullanlr. Her bank 07Fh adresine dek geniletilmitir (128 Byte). Baz zel ilem kaydedicileri bir banktan, daha ok bankta yer alr. Bu yntem, eriimi hzlandrma amal olup, ok kullanlan kaydedicilerin grnts ayna gibi dier banklara yanstlmtr. Bylece bu kaydedicilere erimek iin sk sk bank deitirilmesi gerei ortadan kaldrlm ve programlamaya kolaylk salamtr. Veri bellei olarak kullanlmak zere, klfn ierisinde bir de EEPROM bellek alan vardr. Bu bellek, dier veri bellei gibi dorudan adreslenemez. EEPROM veri belleine dolayl eriilir. Toplam 92 bytetr. Reset (balama) vektr: Enerji uygulandnda (Poweron) mikroilemcinin iinde veya dnda olan bir elektronik devre ile yeniden balatlmaldr (reset). Bu devre poweron reset ad ile klf ierisine yerletirilmitir. almaya balatlan mikroilemci, kendi program sayacn zel bir say ile ykler. te bu say, o mikroilemci iin, reset vektr adresidir.

14

Kesme (interrupt) vektr: Mikroilemci program belleindeki program altrrken, sras belirsiz, acilen yaplmas gerekli yordamlar da altrabilir. Sras ve ne zaman ortaya kaca bilinmeyen bu ileri yapmak iin mikroilemci, bir yolla dardan veya kendi iinden uyarlmaldr. Gelen uyardan mikroilemcinin baz birimleri etkilenir. Bu birimlerden biri olan program sayacna, zel bir say yklenir. Bu say, o mikroilemcinin kesme vektr adresidir. Kesme srasndaki uyardan etkilenen dier birim, yndr. Yn, program iinde bir alt program kullanldnda, bu alt programdan, asl program blouna dnlecek adresi tutar. Kesme de bir alt program gibi ele alnr. Kesmeye sapldnda kesme blmnden sonra dnlecek adres PCden yna yerletirilir. Daha sonra kesme yordamnn komutlar ilenir. Kesmeden k komutu olan Retfie, altprogramdan k komutu return gibi alr. Retfie komutu ile, programda dnlecek yerin adresi yndan alnp, PCye geri yklenir. Bylece kesmeden sonra, program blou iinde ilemeyi brakt yere dner ve kalan komutlar ilemeye devam eder. ie kullanlan altprogramlar en ok sekiz olabilir. bunlara kesme blmleri de dahildir . Kesmeleri dahil etmezsek, yn tamasna neden oluruz. Yn tamas olutuunda bizi uyaracak, herhangi bir uyar (flag) kaydedicisi bulunmamaktadr.

3.2.6 KAYDEDCLERN LEVLER INDF (Indirect File Register): Dolayl adresleme kaydedicisidir. Birbiri ard sra yaplacak eriim ilemlerinde, GPR Genel amal kaydedicilerle (statik RAM alannn) kullanm hzlandrlr ve yazlacak program kltr.

15

TMR0 (Timer): Mikrodenetleyici iinde bulunan zamanlayc ve saya olarak altrlan blm denetleyen kaydedicidir. PCL (Program Counter Low Byte): bir sonra altrlacak komutun program belleindeki adresini tutar. STATUS: Mikrodenetleyici iindeki aritmetik ilem birimi (ALU) ilem sonularna ait baz bilgileri durum kaydedicisinde tutar. Bank seme bitleri de bu kaydedicidedir. FSR (File Select Register): Dolayl adreslemede INDF ile birlikte kullanlr. Mikrodenetleyicinin iindeki RAM adresinde yaplacak ilemlerde, RAM adresini tutar. Bu durumda INDFye yazlacak her veri, aslnda adresi FSRde bulunan RAMe yazlmtr. PORTA PORTE: Portlar, mikrodenetleyicinin d dnyadan bilgi almas ve kendi dndaki devrelere veri aktarabilmesi amacyla kullanlr. PIC16F877nin be portu vardr. A portu 6 bit geniliindedir. B, C, D portlar 8 bit, E portu ise 3 bit geniliindedir. TRISA TRISE: Portlarn ynn (yongaya veri girii mi, yoksa yongadan veri k m yaplacak?) belirleyen kaydedicilerdir. Eer portlarn herhangi bir pininden mikrodenetleyici dna veri gnderilecekse, nce ilgili portun yn kaydedicisinin ayn numaral biti, b0 yaplr. Eer o pinden mikrodenetleyiciye veri girilecekse, yine nceden, o portun yn kaydedicisinin ayn numaral biti b1 yaplr. zetle ilgili TRIS kaydedicisi pini k iin b0, giri iin b1 yaplr. EEDATA ve EEADR: Mikrodenetleyici iindeki EEPROM veri belleine ulamakta kullanlrlar. Sonuta EEDATA kaydedicisindeki veri EEADR kaydedicisinde adres numaras bulunan veri, EEPROM veri belleinden okunarak EEDATA kaydedicisine getirilir. PCLATCH: Program sayacnn yksek ncelikli byte yani, st 5 biti iin kullanlr. INTCON: Kesme (interrupt) ilemlerinde kullanlr. GPR (General Purpose Register): Genel amal kaydedicilerin adresleri yukardaki izelgede verilmiti. Programc buradaki adresleri istedii gibi, kendi deikenleri iin kullanabilir. Bu adresleri isterse programn iinde, aadaki rnekte grld gibi adlandrabilir. SEC_1 EQU h20 ;GPR alanndaki h20 adresine SEC_1 ad verildi SEC_2 EQU h21 ;GPR alanndaki h21 adresine SEC_2 ad verildi. STA TUS Register (Durum Kaydedicisi) STATUS kaydedicisi, aritmetik ve mantk biriminin (ALU), aritmetik ilem sonucundaki durumunu, merkezi ilem biriminin (CPU) test durumlarn ve veri belleine ait kme (bank) seme bitlerini tutar. Herhangi bir kaydedici gibi, STATUSda bir komuta hedef olabilir. yani, ierii okunabilir, deitirilebilir. Ancak, TO ve PD isimli bitleri sadece okunabilir, deitirilemez. Eer, bu kaydedicinin ierii CLRF STATUS komutuyla, silinmek istenirse ; sadece st bit, 0 olur. Bu komut sonunda STATUSun ierii 000u u1uu deerini alr. Burada u:deimez (Unchangable) anlamndadr.

16

Not: dn alma (borrow) ilemleri iin ters kutup kullanlmtr (ilemde sonu 0sa, uyar bitleri 1, 1 ise 0 olmak zere tersleri yazlr). karma (SUB) ve dndrme (RLF, RRF) ilemlerinde bunun etkisi anlatlacaktr. Option Register (Seenek Kaydedicisi) Option Register, okunabilir ve yazlabilir bir kaydedicidir. Kapsamnda TMR0 / WDT zamanlayclarnn konfigrasyon bitleri, d kesme (interrupt) denetim bitleri, TMR0 zamanlaycs kesme denetim bitleri ve PORTB iin ekme (pullup)direnlerinin kullanlmasn salayan bit bulunur.

INTCON Register (Kesme Kaydedicisi) INTCON kaydedicisi, okunabilir ve yazlabilir bir kaydedicidir. Kapsamnda TMR0 / WDT kaydedicisi tama uyar bitleri, RB port deiim ve d kesme (RB0 / INT pin interrupt) denetim bitleri, TMR0 kesme denetim bitleri bulunur.

P I E1 Register (evresel Kesme Kaydedicisi) PIE1 kaydedicisi, evresel kesmelerle ilgili bitleri olan bir kaydedicidir. Bir evresel kesmenin olabilmesi iin, PIE1 (INTCON) biti de set edilmelidir.

P I R1 Register (evresel Kesme Kaydedicisi) PIR1 kaydedicisi, evresel kesmelerle ilgili uyar bitlerini tayan kaydedicidir.

17

P I E2 Register (CCP 2, SSP veri yolu arpma, E 2 P ROM evresel Kesme Kaydedicisi) PIE2 kaydedicisi, CCP2 (Capture/Compare/PWM2) evresel biriminin kesme bitlerini, SSP (Senkron Seri Port) veri yolu arpma bitini ve EEPROM yazma kesmesi bitini tar.

P I R2 Register (CCP 2, SSP databus arpma, E 2 P ROM evresel Kesme Kaydedicisi) PIE2 kaydedicisi CCP2 evresel biriminin kesme bitlerini, SSP arpma bitini ve E 2 PROM yazma kesmesi uyar bitini tar.

P CON Register (G Kayna Kontrol Kaydedicisi) G kontrol kaydedicisi PCON, yazlmda ve reset durumlarnda kullanlr. Reset durumlar? devrenin dardan MCLR ile, gerilim ya da akmn ar dme ve ykselmesi BrownOut, Watch Dog Timer ve son olarak Power on reset durumlarnda kullanlabilir. BOR biti, Power on resette bilinemez. Reset sonrasnda b1 yaplmaldr ki, bir sonraki BOR durumunu renebilsin.

P CL ve P CLATH Registers (A dres Kaydedicileri) Program counter (PC) olarak adlandrlan adresleme kaydedicisi 13 bitliktir. Bunun dk deerlikli byte PCL kaydedicisinden gelir. stteki bitler ise PC arasndaki 5 bittir, bunlar PCLATH kaydedicisinden alnr. PCL okunabilir ve yazlabilir bir kaydedicidir. Ancak st bitleri (PCH) dorudan okunamaz. Dolayl olarak PCLath yoluyla yazlabilir veya okunabilir.

18

Call komutu, ynn her zaman en tepesine, PCL kaydedicisinin iindeki adres deerini yazar. Return, Retfie ve Retlw komutlar ise ynn en tepesindeki elemann ieriini PCLye aktarr. Sayfa (bank) numaralarnn PCLath kaydedicisinden PCye aktarlabildiini program yazarken de unutmamalyz. PCLATH kaydedicisinin ierii, altyordama girildikten sonra sabit kalr, bir return ya da retfie benzeri komut gelse de deimez. Programc, call veya goto komutlarndan nce, PCLATH kaydedicisini gncellemelidir. PCH daima PCLATH kaydedicisi yoluyla gncellendiinden (tersi yaplamaz) altyordam veya gidilen kesimin hangi bankta olduu, aadaki rnee benzer bir yolla belirtilmelidir. ORG 0500 BCF PCLATH, 4 ;PCLATH kaydedicisinin 4.biti temizlendi BSF PCLATH, 3 ;PCLATHn 3.biti set edildi, 1.banka geildi ;(800hFFFh adres aral) CALL SUB1_P1 ?1.banktaki altyordam arld . . . ORG 0900 ;Bank 1 (800hFFFh) SUB1_P1 . . ;Altyordam 800h ile FFFh aralna yerletirildi. RETURN ;Returnden sonra 0.sayfaya (000h7FFh) dnlecek Computed goto (Hesaplanm goto): PCye PCLnin eklenmesiyle oluur. Y n (Stack) Yn 8 elemanldr. Elemanlar 13 bitliktir ve donanmn bir parasdr. Veri veya program alanlarnda yer almaz. Yn gstergesi (pointer) yazlabilir ve okunabilir deildir. Yn ilemi komutlar POP ve PUSHtur. Her PUSH ileminde ynn en tepesindeki adrese, PCn ierii yklenir. Her POP ileminde ynn en tepesindeki adres PCn iine geri yklenir. Yn, LIFO (Last In First Out) Son Giren lk kar tekniiyle alr. I N DF ve FSR Register (Dolayl Eriim Kaydedicileri) INDF, fiziksel bir kaydedici deildir. Mikrokontrolrdeki RAM adresini tutar. INDFe yazlan her veri, adresi FSRde bulunan RAMa yazlr. INDFten okunan veriler de adresi FSRde bulunan RAMden okunmutur.

19

4. PROJEMZDEK DEVRENN EMASI

20

5. BASKI DEVRE EMASI

6. PROGRAMIN C DLNDE YAZIMI#include "D:\metinsalihmuhsinproje\MAN.h" //Programn kaydedildii yer ve programn ad #define use_portb_lcd TRUE //LCD nin b portuna balandn belirtiyor #include //LCD ktphanesi alyor #device ADC=10 //10 bitlik ADC kullanlaca belirtiliyor long int bilgi=100; //bilgi adnda integer zelliinde deiken tanmlanyor ve deeri 100e eitleniyor unsigned long int nem; //nem adnda iaretsiz uzun integer zelliinde deiken tanmlanyor void main() // programn balad satr { setup_adc_ports(AN0_AN1_AN3); //mikro denetleyicinin ilk 3 analog girii aktif ediliyor setup_adc(ADC_CLOCK_DIV_8); //analog giriten 8 mikro saniyede bir bilgi okunacak setup_psp(PSP_DISABLED); //PSP birimi devre d 21

setup_spi(SPI_SS_DISABLED); //PSP birimi devre d setup_timer_1(T1_DISABLED); //T1 zamanlaycs devre d setup_timer_2(T2_DISABLED,0,1); //T2 zamanlaycs devre d setup_vref(FALSE); //analog girilerden vref kapal lcd_init(); //LCD yi hazr hale getiriyor set_tris_d(0xFF); // d portunun tamamn giri yap set_tris_c(0x00); // c portunun tamamn k yap output_c(0x00); // c portunun tamamn sfrla while(1) //sonsuz dng oluturma { basla: // basla adndaki etiket while(1) //sonsuz dng oluturma { if(input(pin_d0)==1) //d0 pinine balanan butona basldm { while(1) { if(input(pin_d0)==0) //d0 pinine balanan butondan elimiz ekildimi { goto menu; //butondan elimiz ekildiyse menu etiket satrna git } } } set_adc_channel(0); // 0. analog giriten veriyi al nem=read_adc(); //analog giriten alnan veriyi nem sabitine eitle printf(lcd_putc,"\f nem=%lu\n bilgi=%f",nem,bilgi); //LCD de nem ve bilgi deerlerini gster delay_ms(250); //250 ms bekle if(bilginem) //bilgi deikeni byk nem deikeninden ise alt satrdaki komutu altr { output_c(0x00); //c0 portunu 0 yap (c0 a balanan pompay durdur) } } menu: //menu etiketi while(1) { if(input(pin_d0)==1) //d0 pinine balanan butona basldm { 22

while(1) { if(input(pin_d0)==0) //d0 pinine balanan butondan elimiz ekildimi { goto basla; //butondan elimiz ekildiyse basla etiket satrna git } } } printf(lcd_putc,"\f delay_ms(250); bilgi\n %f",bilgi); //bilgi deikenini ekrana yaz

if(input(pin_d1)==1) //d1 pinine balanan butona basldm { delay_ms(10); //10 ms bekle bilgi=bilgi-1; //bilgi deikeninden 1 kar (bilgi referansmzdr) if(bilgi1023) //bilgi deikeni 1023 ten bykse alttaki komutu altr { bilgi=1023; //bilgi deikenini 1023 e eitle } } } }}

7. SONUletmeler dzeyinde ve lke dzeyinde ileri teknolojilere doru gelime lke kalknmasnn temelini oluturur. leri teknolojilere gei iin yatrmda, planlamada ve eitimde daha gelimi dzenlemeler yaplmal ve yeni olanaklar salanmaldr. Bu gereksinimlerden dolay uygulam olduuz proje baar ile sonulanmtr.

23