You are on page 1of 9

Microchip firmasnn retmi olduu 14 bitlik 16F877 denetleyicisi projenin temel elemandr.

PIC16F877, belki en popler PIC ilemcisi olan PIC16F84'ten sonra kullanclarna yeni ve gelimi olanaklar sunmasyla hemen gze arpmaktadr. Program bellei FLASH ROM olan PIC16F877'de, yklenen program PIC16F84'te olduu gibi elektriksel olarak silinip yeniden yklenebilmektedir. Tablo da 'da PIC16F877 ve PIC16F84 ilemcileri arasnda zellik karlatrmas yaplmtr. zellikle PIC16C6X ve PIC16C7X ailesinin tm zelliklerini barndrmas, PIC16F877'yi kod gelitirmede de ideal bir zm olarak gndeme getirmektedir. Konfigrasyon bitlerine dikkat etmek artyla C6X veya C7X ailesinden herhangi bir ilemci iin gelitirilen kod hemen hibir deiiklie tabi tutmadan F877'e yklenebilir ve almalarda denenebilir. Bunun yan sra PIC16F877, PIC16C74 ve PIC16C77 ilemcileriyle de bire bir bacak uyumludur.

PIC16F877 Portlarnn Fonksiyonlar Port A Her bir biti bamsz olarak giri veya k olarak tanmlanabilmektedir. 6 bit geniliindedir (PICF84'de 5 bittir). RA0, RA1, RA2, RA3, RA4 ve RA5 bitleri analog / saysal evirici olarak konfigre edilebilmektedir. Buna ek olarak RA2 ve RA3 gerilim referans olarak da konfigre edilebilmektedir. (bu durumda bu bitler ayn anda A / S evirici olarak kullanlamamaktadr).

PIC16F877 ile PIC16F84 Karlatrlmas

lemciye ilk defa gerilim uygulandnda RA4 hari dier be PORTA biti A / S eviricidir. Eer RA portunun baz bitlerini saysal giri / k olarak kullanmak istersek ADCON1 yazmacnda deiiklik yapmamz gerekmektedir. Yazmalardaki deiikliklerin nasl yaplaca, tmdevrenin katalounda bulunmaktadr. Bu projede A portu analog giri olarak kullanlm ve alglayclardan gelen scakla bal gerilim deerleri A / S evirici yardmyla saysallatrlmtr. Port B Her bir biti bamsz olarak saysal giri veya k olarak tanmlanabilmektedir. 8 bit geniliindedir. B portunun her baca dahili bir direnle Vdd'ye baldr. Bu zellik varsaylan olarak etkin deildir. Ancak OPTION yazmacnn 7. bitini 0 yaparak B portunun bu zelliini etkinletirilebilir. RB4 - RB7 bacaklar ayn zamanda bacaklarn saysal durumlarnda bir deiiklik olduunda INTCON yazmacnn 0. biti olan RBIF bayran 1 yaparak kesme oluturmaktadr. Bu zellii, ilemci SLEEP konumundayken, devreye bal tu takmnn her hangi bir tua basldnda ilemcinin yeniden etkinlemesi iin kullanabilir. Btn bunlarn yan sra RB6 ve RB7 yksek gerilim programlama, RB3 ise dk gerilim programlama modlarnda da kullanlmaktadr. Port C Her bir biti bamsz olarak saysal giri veya k olarak tanmlanabilmektedir. 8 bit geniliindedir. Tm port bacaklar Schmitt Trigger girilidir. TRISE yazmacnn 4. biti olan PSPMODE bitini 1 yaparak "parallel slave mode" da kullanlabilir. Bu fonksiyon araclyla 8 bit geniliindeki her hangi bir mikroilemci bus'na balanabilir. Port D Her bir biti bamsz olarak saysal giri veya k olarak tanmlanabilmektedir. 8 bit geniliindedir. Tm port bacaklar Schmitt Trigger girilidir. TRISE yazmacnn

4. biti olan PSPMODE bitini 1 yaparak "parallel slave mode" da kullanlabilir. Bu fonksiyon araclyla 8 bit geniliindeki her hangi bir mikroilemci bus'na balanabilir.

Port E Her bir biti bamsz olarak giri veya k olarak tanmlanabilmektedir. 3 bit geniliindedir. RE0, RE1 ve RE2 bacaklarnda Schmitt Trigger giri tamponlar vardr. Her bir bacak analog / saysal evirici olarak konfigre edilebilmektedir. Eer port d, paralel slave port olarak konfigre edilirse, RE0, RE1 ve RE2 bacaklar port d'nin baland mikroilemci bus'na srasyla READ, WRITE ve CHIP SELECT kontrol girileri olarak kullanlabilmektedir. Bunun iin TRISE uygun biimde ayarlanmaldr. lgili yazmalar ve adresleri aadaki gibidir. RE portlarnn A / S veya saysal giri / k olarak seiminde kullanlmaktadr. lemciye ilk defa gerilim uygulandnda port e biti de A / S eviricidir. Eer RE portunun baz bitlerini saysal giri / k olarak kullanmak istenirse ADCON1 yazmacnda deiiklik yaplmas gerekecektir. 10.1.2.Konfigraston Biti Konfigrasyon (oku '0') olduunda programlanabilir ve (oku '1') olursa programlanamaz. Bu bitler program hafzas yerine 2007h de planlanmtr. Bu adres 1007h kullanc program hafza yerinde iaretlidir. Gerek olay, zel test / konfigrasyon hafza yeri(2000h-3FFFh) uygun olmaldr.

zel Fonksiyonlar Paralel Slave Port TRISE yazmacnn PSPMODE biti 1 yapldnda PORTD 8 bit geniliinde mikroilemci portu olarak kullanabilir. Bu arada RE0, RE1 ve RE2'yi, TRISE ve ADCON1 yazmalarnda ilgili ayarlar yaparak saysal giri olarak da tanmlamak gerekmektedir. Bylece harici bir mikroilemci, RE0, RE1 ve RE2'yi kontrol olarak kullanarak 8 bitlik veri bus'na bal PIC16F877'nin port d ksmna hem veri yazabilmekte, hem de okuyabilmektedir.

USART USART, yani senkron / asenkron alc verici PICF877'deki iki seri giri /k biriminden biridir. Seri iletiim arayz ( SCI ) olarak da bilinen USART, monitr veya PC gibi aygtlara tam ift ynl asenkron balantda kullanlmak zere konfigre edilmitir. A / S veya S / A arayzlerine, seri kullanlmak zere konfigre edilebilmektedir. USART aadaki gibi konfigre edilebilmektedir. Asenkron : Tam iftynl Senkron : Master, yarm ift ynl Senkron : Slave, yarm ift ynl RC6 verici, RC7 ise alc port olarak kullanlmaktadr. RCSTA ( 0x18 ) ve TXSTA ( 0x98) yazmalar da konfigrasyonda kullanlmaktadr. Master Snchronous Serial Port (MSSP) MSSP birimi, dier evre birimleri veya mikroilemcilerle seri iletiimde kullanlmaktadr. Bu evre birimleri seri EEPROM, kaydrmal yazmalar ( shift register ), gsterge srcleri, A / S eviriciler vb. olabilir. MSSP birimi ayn anda aadaki iki moddan birine konfigre edilebilir. RC5: Seri veri k ( SDO: Serial data out ) RC4: Seri veri girii ( SDI: Serial data in ) RC3: Seri saat ( SCK: Serial clock ) Bu modlardan birine gre konfigre etmek iinse SSPSTAT (senkron seri port durum yazmac, 0x94), SSPCON (senkron seri port kontrol yazmac, 0x14) ve SSPCON2 (senkron seri port kontrol yazmac 2,0x91) yazmalar ayarlanmaldr. Analog / Saysal evirici Birimi A / S evirici birimi 16C7X ailesinden farkl olarak 10 bittir. Toplam 8 A / S kanal bulunmaktadr. F877'nin gzel bir zellii de ilemci SLEEP modunda iken bile A / S eviricinin geri planda almasdr. A / S kanallar iin RA4 hari dier RA portlar ve RE portlar kullanlabilir. Aada ilgili yazmalar ve adresleri gsterilmitir. ADRESH 0x1E ; A / S sonu yazmac (high register) ADRESL 0x9E ; A / S sonu yazmac (low register) ADCON0 0x1F ; A / S kontrol yazmac 0 ADON1 0x9F ; A / S kontrol yazmac 1

ADCON0 REGISTER: R/W-0 (bit7) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE' ADON (bit0) U-0 --

ADCS0:ADCS0 : A/D dntrme clock sinyali seme biti. Sinyal seme ilemi ADCON1 registeri ile birlikte kullanlr. ADCS2 (ADCON2 register), ADCS1 ADCS0 (ADCON0) bit ls clock sinyali semek iin kullanlan bitlerdir. Aadaki tablo bunu aklamaktadr: ADCON1 <ADCS2> ADCON0 <ADCS1:ADCS0> Dntme clock sinyali 0 00 Fosc/2 0 01 Fosc/8 0 10 Fosc/32 0 11 FRC (sinyal i RC devresi tarafndan salanr) 1 00 Fosc/4 1 01 Fosc/16 1 10 Fosc/64 1 11 FRC (sinyal i RC devresi tarafndan salanr) CHS2:CHS1:CHS0 : Analog giri kanal seme biti 000 : Kanal 0 (AN0) 001 : Kanal 1 (AN1) 010 : Kanal 2 (AN2) 011 : Kanal 3 (AN3) 100 : Kanal 4 (AN4) 101 : Kanal 5 (AN5) 110 : Kanal 6 (AN6) 111 : Kanal 7 (AN7) GO/DONE' : Dntrme ilemi durum biti, 1 : A/D dntrme ilemi srasnda donanm tarafndan aktiveedilir. Sonra tekrar resetlenir. 0 : A/D dntrme ilemi yaplmyor. ADON : A/D dntrc modl ama biti 1 : A/D modl altrld 0 : A/D modl almyor ADCON1 REGISTER R/W-0 (bit7) R/W-0 R/W-0 (bit0) ADFM ADCS2 -deneme

U-0 --

U-0 PCFG3

R/W-0 PCFG2

R/W-0 PCFG1

R/W-0 PCFG0

Yakalama / Karlatrma ve PWM Birimi Her capture / compare ve pwm birimi 16 bitlik yakalama yazmac, 16 bitlik karlatrma yazmac veya 16 bitlik PWM (darbe genilik modlasyonu) yazmac olarak kullanlmaktadr. Yakalama modunda, TMR1 yazmacnn deeri, RC2 / CCP1 bacann durumunda bir gelime olduunda CCPR1H:CCPR1L yazmalarna yazlmakta ve PIR1 yazmacnn 2. biti olan CCP1IF kesme bayra 1 olmaktadr. RC2 bacann durumu, her den kenarda, her ykselen kenarda, her ykselen 4. veya 16. kenarda kontrol edilecek ekilde CCP1CON yazmac araclyla ayarlanarak konfigre edilebilir. Karlatrma modu ise CCPR1 yazmacndaki 16 bitlik deer dzenli olarak TMR1 yazma deeriyle karlatr ve bir eitlik olduunda RC2 / CCP1 baca CCP1CON yazmacnda yaptmz ayara gre 1, 0 olur veya durumunu korur. PWM modunda ise RC2 / CCP1 baca 10 bit znrlkte darbe genilik modlasyonlu bir iaret retecek ekilde konfigre edilebilir. PR2 yazmac darbe genilik periyodunun tayininde kullanlmaktadr. Dier bir kaynak 2 adet CCP modl bulunmaktadr. Her bir modl capture, compare yada PWM ilemlerini yapabilir. Her birisini incelemeden nce bu modlleri daha iyi kavrayalm. 16 bitlik registerlardan oluurlar. Bu 16 bitlik register 8 bitlik 2 registerdan meydana gelir. Aadaki tablo iki modln birlikte kullanlabilirliini gstermektedir.

*Capture ve compare Timer1 ile kullanlrken PWM Timer2 ile birlikte kullanlr. CCP1Modl: CCP1 modl iin kullanacamz register CCPR1(Capture/Compare/PWM Register 1) registerdr. Bu da 2 adet 8 bitlik registerdan oluur : CCPR1H: CCPR1L register ifti.

CCPxX:CCPxY : Sadece PWM'de kullanlr. PWM'de duty cycle iin en anlamsz 2 biti oluturur. CCPxM3:CCPxM0 : CCPx alma modu seme bitleri 0000 : CCP modlleri pasif 0100 : Capture mod, tetikleme tm den kenarlarda 0101 : Capture mod, tetikleme tm ykselen kenarlarda 0110 : Capture mod, tetikleme her 4. ykselen kenarda 0111 : Capture mod, tetikleme her 16. ykselen kenarda 1000 : Compare mod,eitlenme durumunda karlatrc k 1 (CCPxIF :1) 1001 : Compare mod, eitlenme durumunda karlatrc k 0 (CCPxIF :0) 1010 : Compare mod 1011 : Compare mod 11xx : PWM mod Capture Mod: Capture modda CCPR1H:CCPR1L registerleri Timer1 deki deeri belli zamanlarda tutar. Tetikleyici olarak RC2/CCP1 port girii kullanlr (RC2/CCP1 girii input olarak ayarlanmaldr, eer k olarak ayarlanrsa bu durumda tetikleme porta veri yazlmas durumunda gerekleir ). CCP1CON registeri tetikleme zelliklerini belirler. Her capture olaynda CCP1IF (PIR registerinn 2. biti ) bayra set olur. Bir sonraki capture olaynda yeni data ncekinin zerine yazlr. Ayrca Timer1 zamanlayc yada sekron edilmi sayc olarak ayarlanmaldr.

Capture mod blok diyagram RAM Bellek PIC16F877'nin 0x00~7Fh adres aralna ayrlm olan RAM bellei vardr. Bu bellek ierisindeki dosya yazmalar ierisine yerletirilen veriler PIC ilemcisinin almasn kontrol etmektedir. File register ad verilen zel veri alanlarnn dnda kalan dier bellek alanlar, normal RAM bellek olarak kullanlmaktadrlar. ekil 2.2'de PIC16F877'nin kullanc RAM bellek haritas grlmektedir.

PIC16F877'nin Besleme Ular ve Beslenmesi PIC16F877'nin besleme gerilimi 11, 12 ve 31, 32 numaral bacaklardan uygulanmaktadr. 11 ve 32 numaral Vdd ucu +5 V'a ve 12, 31 numaral Vss ucu topraa balanr. PIC'e ilk defa enerji verildii anda meydana gelebilecek gerilim dalgalanmalar nedeniyle, oluabilecek istenmeyen arzalar nlemek amacyla 20 100nF'lk dekuplaj kondansatrnn devreye balanmas gerekmektedir. PIC'ler CMOS teknolojisi ile retildiklerinden 2 ila 6 Volt arasnda alabilmektedirler. +5 V'luk bir gerilim ise ideal bir deer olmaktadr.

PIC16F877'nin Reset Ular Kullancnn program kasti olarak kesip balangca dndrebilmesi iin PIC'in 1 numaral ucu MCLR olarak kullanlmaktadr. MCLR ucuna 0 Volt uygulandnda programn almas balang adresine dner. Programn ilk balang adresinden itibaren tekrar alabilmesi iin, ayn uca +5 Volt gerilim uygulanmaldr. PIC16F877'nin Saat Ular ve Osilatr Tipleri PIC16CXX mikrodenetleyicilerinde 4 eit osilatr bulunmaktadr. Kullanc bu 4 eitten birini seerek iki konfigrasyon bitini (FOSC1 ve FOSC2) programlayabilir. Bu osilatr eitleri aada verilmitir. PIC16F877'de saat ular

13. ve 14. bacaklardr. Hazrlanacak olan PIC programlarnda kullanlan osilatr tipi PIC programnn alma hzn ve hassasiyetini etkileyeceinden dolay amaca uygun bir osilatr devresi kullanlmaldr. Aada farkl osilatr eitleri ve zellikleri grlmektedir. Osilatr tipinin seiminde dikkat edilecek bir baka nokta ise, seilecek olan osilatrn kullanlan PIC'in zelliine uygun olmasdr. rnek verecek olursak; en fazla 10 MHz alma frekansna sahip bir PIC16F877 iin 20 MHz'lik bir osilatr kullanmak doru olmaz. Fakat daha dk bir frekans deeri ile alan bir osilatr devresi kullanlabilir. Osilatr eitleri RAM Bellek Haritas

Kristal Osilatr / Seramik Rezonatr XT, LP ve HS modlar, RC osilatrlere nazaran ok daha hassastrlar. Bu modlar, kristal osilatr veya rezonatrlerin, OSC1 / CLKIN ve OSC2 / CLKOUT ularna balanmalaryla kurulmaktadr. Tablo 2.4'te hangi frekansta ka pF'lk kondansatr kullanlmas gerektii belirtilmitir.

RC Osilatr Zamanlamann ok hassas olmad durumlarda RC ikilisi osilatr kayna olarak kullanlmaktadr. RC osilatr, maliyetin azaltlmasn salamaktadr. Kullanc d R ve C elemanlarnn tolerans nedeniyle meydana gelen deiiklikleri de dikkate almaldr. Direncin deeri 3 ila 100 KOhm arasnda seilmelidir. 1MOhm gibi yksek diren deerleri osilatr grlt ve nem gibi evresel etkilere kar duyarl hale getirir. Diren 2 KOhm deerinin altnda ise, osilatr kararsz hale gelebilmekte, hatta tamamyla durabilmektedir.

You might also like