You are on page 1of 69

BLM 1 IR HABERLEME 1.1.IR Haberleme Sisteminin Gerekletirilmesi Tm haberleme sistemlerinde olduu gibi IR haberleme sistemlerinde de modlasyon tekniinden yararlanlr.

IR haberleme teknii seri dijital haberleme olduundan dijital modlasyon teknikleri kullanlr. Modlasyondaki ama evre klarndan ve dier IR haberleme kullanan aygtlardan alcyyal tmak, yalnzca kendi haberleme protokolne ve frekansna balolarak ileti im salamaktr. Tm modlasyon tekniklerinde olduu gibi IR haberlemede de taycsinyal bilgi sinyali ile dijital olarak arp larak modle sinyal elde edilir. Modle sinyal kuvvetlendirilerek haberlemeyi kzlalt k blgesinde gerekletiren IRLED diyotunun srlmesi iin kullanlr. Diyot zerinden yaylan modle k alctaraf ndan demodlasyon ilemine tabi tutularak gnderilen data sinyali elde edilmesi salanr ve data sinyali bir microcontrollerlar tarafndan ilenir.

ekil 1.1 modle dalga ekil 1.1de 40kHzlik taycdalga 900Hz ile modle edilmi ekli grlmektedir. lem basit olarak u ekilde yaplr. ekilden de grlecei gibi modlasyon ilemi iki sinyalin arplmasile elde edilmi tir. O halde modlasyon ilemi iin iki sinyalin birbirleri ile AND lenmesi gerekmektedir.

ekil 1.2 modlasyon ilemi Modlasyon ilemini gerekletirebilecek devre ise ekil 1.2 de gsterildii gibidir.

ekil 1.3 demodlasyon ilemi Demodlasyon ilemi ise ekil 1.3 de grld gibi kompleks bir yapya sahiptir. Bu ilem iin zel entegreler kullanlr. Bu tip entegrelerde PIN diyotu zerinden alnan sinyal n kuvvetlendirici tarafndan kuvvetlendirilir ve band geiren filtreye aktarlr. Filtre kndan sonra sinyal demodle edilir ve ka aktarlr. Tm uzaktan kumanda cihazlar IR sinyallerini gndermek iin baz kodlama teknikleri kullanrlar. Gnderilen sinyal binary olup eitli zaman ve bit uzunluklarnda olabilir. Uzaktan kumanda cihazlar kzlalt k palsleri yayarlar. Yaylan k eitli frekanslarda modle edilmi IR sinyali olabilir. Modle edici sinyal yaklak 40kHz civarndadr. Gelen IR sinyalleri modle sinyaller olduundan alc nitede uzaktan kumanda cihazndan yaylan asl sinyallerin dier sinyal kaynaklarndan arndrlmas salanr. IR sinyallerini modlasyona tabi tutmann birok yolu vardr. Bunlardan bazlar unlardr; pals genilii yada boluk genilii deitirerek veya pals ve boluklar arasnn dzenlenmesi ile modle sinyaller elde edilir. Bunun anlam 1 ve 0 seviyelerinin farkl pals geniliklerine sahip olmas veya palsler arasndaki boluklarn farkl olmasdr. # bir pals kodlu sinyal; pals genilii deitirilerek elde edilir:
+--+ +--+ +----+ +----+ | | | | | | | | --+ +--+ +--+ +--+ +-0 0 1 1 Sony bu kodlamay kullanr

ekil 1.4 pals kodlu sinyal # bir boluk kodlu sinyal; boluk uzunluu deitirilerek elde edilir:
+--+ +--+ +--+ +--+ | | | | | | | | --+ +--+ +----+ +----+ +-0 1 1 Panasonic bu kodlamay kullanr

ekil 1.5 boluk kodlu sinyal

# bir shift kodlu sinyal; pals ve boluk uzunluu deitirilerek elde edilir:
+--+ +--+--+ +--+ | | | | | | --+ +--+ +--+--+ + 0 1 0 Philips bu kodlamay kullanr

ekil 1.6 PWM kodlu sinyal Bunlara ek olarak ou kez balang bitleri dier adyla header ler kullanlr. Header, koddan nce gnderilen palsdir ve alcy aktif etek iin kullanlr. Header her zaman koddan nce gnderilen bir pals olup, kendisinden sonra gelen koddan bamszdr ve her farkl kod iin ayn header gnderilir.
+----------+ +--+ +--+ | | | | | | + +----+ +--+ +...... \______________/\_________...... Header kod

ekil 1.7 kodlama format Header ve kod uzaktan kumanda cihazndaki butona basl tutulduu srece defalarca gnderilir. Normal olarak headerin ve arkasndan gelen kodun tekrarlanma sresi yaklak olarak 50ms dir. Gerekte headerden sonraki kod normal olarak iki paraya ayrlmtr: 1. adres ( hangi donanmn ilem yapacan gsterir, GROUP olarak adlandrlr. 2. komut ( donamma ne yapmas gerektiini anlatr, FUNCTION olarak adlandrlr. Buna ilaveten baz uzaktan kumandalar transmisyonlar arasnda gnderilen kodu deitirebilirler. Bu bir gvenlik sistemidir. Alcya gelen kod deimesine ramen alc bunu normal alglar fakat verici sinyallerini test etmek isteyen bir kullanc iin sknt yaratacak bir problemdir. Avrupa ve Amerika da farkl modlasyon sistemleri kullanld gibi gnderilecek bilgiyi tamak iinde farkl tayc frekanslar da kullanlr. Bunlar 30kHz, 33kHz, 36kHz, 36.7kHz, 38kHz, 40kHz ve 56kHzlik tayc frekanslardr. En ok kullanlanlar ise 38kHz ve 40KHzlik tayc frekanslardr. 1.2.Kullanlan Protokoller Her retici kendi protokollerini gelitirmitir. Bunlardan en ok bilinenleri PHILIPS in gelitirdii RC5 ( Remote Control 5 ) protokol ve SONY nin gelitirdii SIRCS ( Sony Infrared Remote Control Sistem ) protokoldr. Ayrca

yine SONY nin CTRL-S adn verdii protokol de vardr. CTRL-S in SIRCS den fark sadece aygt kodundan sonra gnderilen 3 veya 5 bitlik ekstra bilgidir. 1.2.1.RC5 RC5 13 bit uzunluunda; 5 grup biti, 6 komut biti ve 2 stop bitinden oluur. Fakat daha sonra 7 komut biti ve 1 stop biti olarak deitirilmitir. Bilinen en eski RC5 kodu ise 14 bit uzunluunda; 2 senkronizasyon biti, 1 kontrol biti ve 11 data bitinden oluur. Gnderilen bir datann uzunluu ise 24.889msdir. Tayc frekans ise 36kHzdir. RC5 protokolnde header yoktur.
1 kodu: +----+ | | +----+ + T T +----+ | | + +----+ T T

0 kodu:

T = 889us

ekil 1.8 RC5 1.2.2.SIRCS/CTRL-S SIRCS 12 bit uzunluunda, headeri bulunan bir protokoldr. CTRL-S protokol uzunluu ise 15 veya 17 bittir. Her data aras 25ms boluk braklr ve tayc frekans 40kHzdir.
+--------+ | | + +--+.. 4T T +----+ | | + +--+ 2T T +--+ | | + +--+ T T

Header:

1 kodu:

0 kodu:

T = 550us

ekil 1.9 SIRCS/CTRL-S

data: hhhhxxxxxxyyyyyy ^ ^ MSB LSB xxxxxx komut yyyyyy adres

1.2.3.SHARP Sharp tarafndan gelitirilen bu kod 17bit uzunluunda ve 32kHzlik tayc sinyal ile alc tarafa gnderilir. Kodun headeri yoktur, transmisyonlar arasnda 43ms lik boluk vardr. 1: 275us pals + 1900us boluk 0: 275us pals + 775us boluk 1.2.4.PANASONIC/TECHNICS 48 bitlik kod uzunlua sahip ve tayc frekans 32kHzdir. Kodun 48biti ilk transmisyon annda gnderilir, bir sonraki transmisyon uzunluu 47bit olarak gerekletirilir. Transmisyonlar aras boluk 76msdir.
Header: +--------------------+ | | + +--------+.. 10T 4T +--+ | | ..+ +------+.. T 3T

1 kodu:

+--+ | | ..+ +--+.. T T T = 400us 0 kodu:

ekil 1.10 PANASONIC/TECHNICS 1.2.5.OLDER PANASONIC/OLDER TECHNICS 22 bitlik kod uzunluuna sahiptir ve tayc frekans 32kHzdir. Headeri bulunmakla birlikte USA-Kanada ve Avrupa-dierleri iin farkl pals genilikleri sahip iki eit seri haberleme protokol vardr.
+----------------+ Header: | | + +------------+.. 8T 6T

1 kodu:

+----+ | | ..+ +------------+.. 2T 6T

+----+ 0 kodu: | | ..+ +----+.. 2T 2T T=420 (US of A and Canada) T=454 (Europe and others )

ekil 1.11 OLDER PANASONIC/OLDER TECHNICS Kod format header + rn kodu + data kodu + rn kodu tersi ( terslenmi hali ) + data kodu tersi ( terslenmi hali ) eklindedir. Header kodu 8T 1 seviyesi8T 0 seviyesinden, rn kodu 5 bitten, data kodu ise 6 bitten oluur. Esasen gnderilen kod 11 bitlik koddur fakat kodlarn terslenmi bileenleri de alc tarafa gnderilir. Transmisyon sonunda avrupa iin 41130us lik 0 seviyeli, USA iin ise 37390uslik 0 seviyeli senkronizasyon boluklar gnderilir. 1.2.6.NEC/PIONEER/KENWOOD/HITACHI/GOLDSTAR/YAMAHA 32 bitlik kod 39.2kHz lik tayc frekans ile gnderilir. Headerden sonra kod birkez gnderilir ve ardndan stop bit gnderilerek transmisyon tamamlanr. Transmisyonlar aras boluk 95msdir ve PANASONIC protokolne benzer olarak; ilk transmisyon annda gnderilen kodun son biti 1 ise bir sonraki transmisyon annda son bit eksik gnderilir.
Header: +--------------------------------+ | | + +----------------+.. 16T 8T 8.8ms 4.4ms +--+ | | ..+ +------+.. T 3T +--+ | | ..+ +--+.. T T +--------------------------------+ +--+ | | | | + +--------+ + 16T 4T T 8.8ms 2.2ms

1 kodu:

0 kodu:

Stop kodu:

T = 550us

ekil 1.12 NEC/PIONEER/KENWOOD

1.2.7.JVC 16 bit uzunlua sahip ve 35.5kHzlik tayc frekans ile gnderilir. Protokolde header ilk transmisyon annda bir kez, alc ile verici arasndaki senkronizasyonu salamak iin gnderilir ve sonraki transmisyonlarda header atlanarak yalnzca kod gnderlir. Kodun son biti 1 ise bir sonraki transmisyon annda bu bit atlanarak yalnzca 15 bitlik data gnderilir.
+--------+ Header:| | + +----------------+.. 4T 8T 1 kodu: +--+ | | ..+ +------+.. 500us 1800us

+--+ | | ..+ +--+.. 500 600us T = 500us 0 kodu:

ekil 1.13 JVC 1.2.8.GRUNDIG 10 bit uzunluunda ve headeri olan bir seri haberleme protokoldr. Headreden sonra 18mslik boluk gnderilir ve transmisyonlar aras 120lik boluk vardr. Kod start bit + data + stop bit formatnda gnderilir. Start bit her zaman bir kez, stop bit ise iki kez gnderilir.
+----+ start bit:| | + +----------------+.. 500us 2600us +------+ | | ..+ +------+.. 500us 550us +------+ | | ..+------+ +.. 550us 500us

1 kodu:

0 kodu:

ekil 1.14 GRUNDIG

1.2.9.FINLUX 10/16 bit uzunluunda headeri bulunan ve tayc frekans 32kHz olan seri haberleme protokoldr. Transmisyon ( startbit & 18ms bekleme ) + ( data & 105ms bekleme ) + ( stop bit ) formatnda gnderilir. Header 500uslik pals ve 5200uslik boluktan oluur. 1 ve 0 bitleri ise 500+530us formatnda gnderilir. Eer gnderilecek bit 1 ise 500uslik palsin ardndan 530uslik boluk, gnderilecek bit 0 ise 500uslik boluun ardndan 530uslik pals gnderilir. 1.2.10.MITSUBISHI 16 bit uzunluundadr ve header kullanlmaz farkl tayc frekanslarna sahip seri haberleme protokoldr. Transmisyonlar aras boluk 24.3msdir.
+--+ | | ..+ +-------------+.. 300us 1950us +--+ | | ..+ +-----+.. 300us 800us

1 kodu:

0 kodu:

ekil 1.15 MITSUBISHI 1.3.alma Prensibi IR seri haberlemede birden fazla kanall kumanda sistemi dizayn iin microcontroller veya microprocessor kullanlmas arttr. Verici ve alc ise birbirleriyle senkronize altrlmaldr. Daha basit bir ifadeyle verici ve alc niteler arasnda seri haberleme gerekletirilmelidir. Seri haberleme iin ise RC5, SIRCS, CTRL-S gibi protokoller uygulanabilir veya sistemi dizayn eden kiinin kendi ihtiyalarna gre bir seri haberleme protokol gelitirmesi gerekir. Bu daha basit bir yntemdir. zellikle IR haberleme gerekletiren bir ok uzak kontrol sistemi olduundan gvenlik veya dier uzak kontrollerin sisteminize karmamas iin protokoller nemli bir yer kaplar. CPU bu kurallara gre programlandnda yalnzca kendi protokolnde veya kendi haberleme formatnda yayn yapan vericilerle anlaabilir ki buda karkln yani dier bir uzak kontrol sisteminin sizin sisteminizde sz sahibi olmasn nler. Burada tayc frekans da nemlidir. ou uzak kumanda sistemleri 40kHzlik tayc frekans ile gnderilirler o halde tayc frekansnz 40kHz dnda bir frekans seerseniz daha gvenli bir kontrol sistemi elde edebilirsiniz. IR haberlemede nemli olan vericiden gnderilen modle k tayfn alcda yakalayabilmek, demodlasyonunu yaptktan sonrada ileyebilmektir. Daha nceki konularda bir IR haberlemede kullanlan modlasyon ve demodlasyon ilemlerinin nasl yapldklarn anlatmtk, o halde bir uzak kontrol devresi dizayn iin yapmamz gereken tek ey basit bir alc ve verici

blok diyagramlarn izerek bunlara uygun devreleri yerlerine yerletirmek suretiyle projeyi tamamlamaktr.
osc IRLED src

microcontroller

tu takm

ekil 1.16 verici ekil 1.16 da IR verici blok diyagram grlmektedir. Microcontrollera bal tu takm ile seilen data, osc tarafndan retilen tayc frekans ile arplarak IRLED src devresine aktarlr. Osilatr tayc frekans reten, kare dalga osilatrdr. Osilatrn rettii kare dalgann duty-cycle l kritik deildir fakat %25 ila %70 arasnda olmas transmisyon asndan daha elverilidir. Genellikle tv uzak kontrol nitelerinde %25 ila %30 luk duty-cycle seviyesi kullanlr. arpc devre ise osc frekans ile data sinyalini arplmas iin kullanlan basit bir AND kapsndan ibarettir. IRLED AND kaps kna dorudan da balanabilir fakat bu durumda alc ile verici arasndaki transmisyon mesafesi 1m den az olur. Transmisyon mesafesini artrmak iin IRLED yksek akml darbeler ile srlmesi gerekir. Bir IRLED in maksimum peak akm 1A den yksekdir ve bu akm deerlerinde LED zerinden yaylan kzlalt k iddeti artar. Dolays ile 1A lik bir akmn AND kaps kndan almak imkanszdr. Bu yzden IRLED ler yksek akmlar gerektirdiinden transistorlu devreler ile srlrler. NOT: osc ve arpm devresinin yapt grevi tek bana microcontroller stlenerek verici devresi yalnzca microcontroller ve IRLED src devreden oluan bir dzenek oluturulabilir fakat microcontroller iin daha karmak bir program yazmak gerekir.
nkuvvetlendirici AGC
Band geiren filtre

demod

Kontrol nitesi

microcontroller

kanallar

ekil 1.17 alc

ekil 1.17 de IR alc blok diyagram grlmektedir. Alc devresindeki PIN diyotu veya fotodiyot ile modle sinyaller alnp nkuvvetlendiriciden geirilir. Elde edilen sinyal AGC ( Automatic Gain Control ) devresinden geerek, band geiren filtreye aktarlr ve son olarak demodlasyon ilemine tabi tutulur. Band geiren filtre merkez frekans modlasyon frekansyla ayn deerde olan filtredir. Genellikle verici nitelerin gnderdii headerlar verici ile alc arasndaki senkronizasyonu salad gibi AGC nitesinin ayarlanmas iinde kullanlr. Son olarak demodlasyon sonucu elde edilen data microcontroller tarafndan ilenir.

10

BLM 2 KULLANILAN MALZEMELERN TANITILMASI 2.1.4060 CMOS 14 Blml Sayc ve Osilatr CMOS 4060 entegresi bir osilatr blm ve 14 basamakl ikilik saycs vardr. Osilatr konfigrasyonu RC ve XTAL osc devrelerine gre dizayn edilebilir. Bir RESET girii bulunur. RESET tm sayc klarnn 0 a ekilmesi ve osilasyonun durmasn salar. RESET giriine uygulanan yksek lojik seviye reset ilemini gerekletir. Tm sayc blmleri master ve slave FF lerden oluur. Entegre ierisindeki tm sayclar den kenar tetiklemelidir ve tm giri-klar tamponlanmtr. Giri devresindeki Schmitt trigger sayesinde ekil 2.1 14 blml sayc ve osilatr giri sinyalinin ykseli ve d zamanlar limitsiz klnmtr. zellikleri: - 15V besleme ile 12MHzlik clock girii - ortak reset - tamamen statik alma - tamponlanm giri ve klar - Schmitt trigger sinyal girii Osc zellikleri: - RC ve XTAL osc konfigrasyonu - Minimum 15V ta 690kHz RC osc frekans Kullanm alanlar: - sayc kontrolleri - zamanlayclar - frekans blcler - zaman geciktirme devreleri

11

ekil 2.2 4060 i yaps entegrenin i yaps ekil 2.2 de gsterilmitir

ekil 2.3 4060 FF yaps entegre ierisindeki FF yaps ise ekil 2.3 de gsterilmitir Maksimum deerleri: - DC besleme gerilimi VDD( referans VSS kayna ).-0.5V-20V - Giri gerilimleri..-0.5V-VDD+0.5V - Giriten ekilen akm.10mA - G harcamas...500mW - Klf scakl....-55C-125C osilatr devreleri:

ekil 2.4 4060 osilatr devreleri

12

2.2.4081 CMOS 2 Girili 4l AND kaps 4081 tek chip ierisinde 2 girili 4 adet AND kaps bulunan bir CMOS entegredir. zellikleri: - 10Vluk VDD besleme gerilimi ile tipik olarak 60nslik cevap hz - maksimum 20V luk besleme ile alabilme ekil 2.5 AND kaps Maksimum deerleri: - DC besleme gerilimi VDD( referans VSS kayna -0.5V-20V - Giri gerilimleri-0.5V-VDD+0.5V - Giriten ekilen akm...10mA - G harcamas..500mW - Klf scakl...-55C-125C -

ekil 2.6 4081 i yaps 2.3.TSOP12.. IR Alc Modl TSOP12.. serisi kzlalt uzak kontrol sistemleri iin gelitirilmi alclardr. Alc ksm bir PIN diyotu ve n kuvvetlendiriciden oluur. Klf IR filtre olacak ekilde tasarlanmtr. Alc kndaki sinyal dorudan microilemci giriine uygulanarak dekodlamas yaplabilir. TSOP12.. standart IR alc serisi tm transmisyon tekniklerini desteklemektedir.

13

zellikleri: - foto dedektr ve n kuvvetlendirici ayn klf iindedir - PCM frekanslar iin dahili filtre - TTL ve CMOS uyumluluk - k aktif iken lojik 0 seviyesi - Dk g harcamas - Ortam ndan bamsz - Uygun burst uzunluu 10cycles/burst rn numaralarna gre tayc frekanslar:

Tablo 2.1 rn numaralarna gre tayc frekanslar blok diyagram:

ekil 2.7 TSOP1240 blok diyagram uygulama devresi:

ekil 2.8 TSOP1240 uygulama devresi

14

Aadaki koullar salandnda kta data sinyali elde edilebilir: - tayc frekans band geiren filtre frekansna yakn olmaldr - burst sinyali 10cycle/burst veya daha fazla olmaldr - her 10cycle veya 70cycle arasndaki burst sinyali deerinden sonra 14cycle lk boluk gereklidir. - Saniyede 800den fazla burst sinyali alnabilir. En uygun data formatlar: - NEC ( tekrarlanan pals ) - NEC ( tekrarlana data ) - Toshiba Micom - Sharp - RC5 - RC6 - R-2000 - Sony 2.4.CQY36N GaAs Kzlalt Ik Yayan Diyot CQY36N kzlalt k yayan, plastik klfl GaAs diyottur. Diyot klf BPW16N foto diyotuna uyumludur. zellikleri: - pals uygulamalar iin uyumluluk - geni yaylm as =55 - peak dalga boyu 950nm - Si fotodedektrleri iin spectral uyumluluk ekil 2.9 CQY36N 2.5.PIC16F84A 18-pin FLASH/EEPROM 8-bit Microcontroller PIC16F84A, 1K program hafzas olan 8 bitlik bir microcontroller dr. 1Klk program kendi dilinde hex tabannda 1024 worde evrilerek seri olarak programlanr ve 35 basit komutu vardr. CPU zellikleri: - 35 basit komut - DC-20MHz alma frekans - 1024 words program hafzas - 68byte RAM - 64byte EEPROM - 4 kesme kayna - 13 I/O pin - maksimum 25mA pin akm ekil 2.10 PIC16F84 - 10.000 kez yazlp silinebilen FLASH program hafzas - 10.000.000 kez yazlp silinebilen EEPROM hafzas

15

40 yldan fazla EEPROM bellekte veri saklama 2 pin zerinden seri olara programlanabilme Power-on Reset ( POR ), Power-up Timer ( PWRT ),Oscillator Start-up Timer ( OST ) Dahili RC osilatrne bal Watchdog Timer ( WDT ) Kod kroma Farkl osilatr alma tipleri SLEEP modu ile daha az g harcama

CMOS FLASH/EEPROM teknolojisi: - dk hz, yksek hz teknolojisi - tamamen statik dizayn - 2.0V-5.5V besleme aral - dk g harcamas: <2mA@5V;4MHz, 15A@2V;32kHz, <0.5A stand-by akm@2V microcontrollerin blok emas aada gsterilmitir:

ekil 2.11 PIC blok diyagram 8 bitlik microcontroller aada akland gibi programlanr ve program bir metin dkman ierisine yazlr ve txt uzantl olarak kaydedilir. Microchip derleyicileri ile txt uzantl dokman asm uzantl bir dosyaya daha sonra ise hex uzantl dier bir dosyaya dntrlr. PIC programlamak iin kullanlan hardware bilgisayara takldktan sonra softwareye ilgili hex dosyas gsterilir ve PIC programlanr.

16

2.5.1.File register haritas Bank 0 000 INDF 001 TNF0 002 PCL 003 STATUS 004 FSR 005 PORT A 006 PORT B 007 Bank 1 080 081 082 083 084 085 086 087 INDF OPTION PCL STATUS FSR TRISA TRISB

EEPROM bellek alan ( kullanlmayacak ) 00A PCLATH 00B INTCON 00C 08A 08B 08C PCLATH INTCON

genel amal registerlerin kullanlaca alan ( veri depolama alan olarak kullanlr ) 04F 0CF

2.5.2.Bank deitirme Bir banktan dierine gemek iin STATUS register denilen zel registerin 5. ve 6. bitinin durumunu deitirmek gerekir. 00bank 0 01bank 1 16F84 n sadece 2 bank bulunduundan sadece 5. bitin deerini deitirmek yeterlidir. 6. bit daima 0 olmaldr. Her iki bit pic enerjilendiinde 0 dr. Ayrca reset girileri ile bu bitler 0 yaplr. Pic enerjilendiinde dorudan bank 0 seilmi olur. STATUS registerinin 5. bitini 1 yapmak iin BSF, 0 yapmak iin BCF kullanlr. BSF h03, 5 bank 1 seilir BCF h03, 5 bank 0 seilir

17

2.5.3.Portlarn I/O olarak ynlendirilmesi PortA y TRISA registeri PortB yi TRISB registeri ynlendirir. PortA/B nin hangi biti giri yaplma isteniyorsa TRISA/B ierisine o bite karlk gelen bit 1 yaplr, k olarak ynlendirilmek istenen bit iinse 0 yazlr. TRISA/B 1/0 PortA/B giri/k 2.5.4.Ak diyagramlar
Ak diyagram balangc ve sonu Hazrlk lem Karar Alt program Ak diyagram balayc

ekil 2.12 ak diyagramlar 2.5.5.Konfigrasyon bitlerinin yazlmas Aadaki koullar belirlemede kullanlr - osilatr tipi belirlemek - watchdog timer on-off yapmak - power-on reset on-off yapmak - kod korumay on-off yapmak ( programn okunmasn engellemek ) yazlacak tanm kodlar - kod koruma var _CP_ON - kod koruma yok _CP_OFF - power-on reset var _PWRTE_ON - watchdog timer devrede _WDT_ON - low power osc __LP_OSC - xtal osc _XT_OSC - high speed osc _HS_OSC

18

RC osc _RC_OSC

Buna gre program yle yazlmaya balanr LIST P=16F84 INCLUDE P16F84.INC _CONFIG _CP_OFF &_WDT_OFF &_PWRTE_OFF ilem 2.5.6.Veri Transferi 2.5.6.1.W registeri kullanm 2.5.6.1.1.Veri transferi W register RAM ierisindeki file registerden bamszdr. Registerler arasnda veri transferi yapmak iin kullanlr. PORTA ieriini PORTB ye yazmak MOVF PORTA, W ; PORTA ieriini W registerine ta MOVWF PORTB ; W registeri ieriini PORTB ye gnder PORTB nin ilk 4 bitini 1 yapmak MOVLW H0F ; W registerine H0F ykle ( 0F ilk 4 hanenin binary karl ) MOVWF PORTB ; W registeri ieriini PORTB ye gnder 2.5.6.1.2.Bit test ederek karar verme BTFSC veya BTFSS komutlar ile register ierisindeki herhangi bir bit test edilebilir. BTFSC register deki biti test et eer 0 ise bir sonraki komuta atla. BTFSS registerdeki biti test et eer 1 ise bir sonraki komuta atla. BTFSC (register), (test edilecek bit 0-7)

PORTA bit 1, 0 m

evet

TEST_PORTA BTFSC PORTA, 1 GOTO TEST_PORTA BSF PORTB, 0

Tekrar test et

PORTB 0.bit 1

ekil 2.13 bit test dngs

19

2.5.7.Dng Dzenleme 2.5.7.1.Saya kullanarak dng dzenleme Baz ilemlerin nceden belirlenen sayda tekrarlanmas durumunda register saya olarak kullanlr. Her ilem tekrarnda saya bir azalr. DECFSZ (saya) ( 0veyaW-1veyaFW ise sayatan 1 karlr ve sonu W ye yazlr- F ise sayatan 1 karlr ve sonu saya ierisine yazlr )

Saya= saya-1

Saya 0 m

evet

TEKRAR DECFSZ GOTO BSF SAYAC, F TEKRAR PORTB, 0

Tekrar et

PORTB 0.bit 1

ekil 2.14 saya test dngs 2.5.7.2.Karlatrma yaparak dng dzenleme Baz ilemler nceden belirlenen sayda tekrarlanmas gerekir. Bu durumda bir register saya olarak kullanlr. Her bir ilem tekrarnda saya bir arttrlr. Saya says ilemin tekrar saysna ulatnda dng sona erer ve baka komuta geilir. CLRF TEKRAR INCF MOVLW SUBWF BTFSC GOTO DONGU GOTO END DONGU SAYAC, F h07 SAYAC, W STATUS, 2 TEKRAR ;sayac 1 artr ;W registerine h07 ykle ;sayatan W yi kar ;STATUS 2. biti 1mi? SAYAC ;saya temizle

Dngnn tekrar says W registeri ierinse yklenen say ile belirlenir. SAYAC deikeni ierisindeki say dngnn her tekrarnda bir artrlr ve SUBWF komutu ile SAYAC tan W nin ierii karlr. karma ilemi

20

neticesinde STATUS registerinin 0. ve 2. bitindeki deer etkilenir. Bu bitler BTFSC komutuyla test edilir. Test sonucunda istenen deere ulanca dngye son verilir. STATUS registeri 0. bir CARRY FLAG 2. bit ZERO FLAG olarak adlandrlr. 2.5.7.2.1.SUBWF komutu karma yapan bir komuttur. W registerinin ieriini file registerden karr ve sonucu W registerine yazar. SUBWF (file register), W yada F olabilir. W karma sonucunu W registerine yazdrr F ise file registere. Z ve C flag ierii karma sonucu yle etkilenir. File register > W Z=0 C=1 File register = W Z=1 C=1 File register < W Z=0 C=0 1) F=W ise MOVLW h50 MOVWF MEM SUBWF MEM, W BTFSC STATUS, 2 ;W=MEM ise program GOTO ile devam eder, > veya < ise GOTO yu atlar GOTO XXX BSF PORTB, 0 2) F<W ise MOVLW h40 MOVWF MEM MOVLW h50 SUBWF MEM, W BTFSC STATUS, 0 GOTO yu atlar GOTO XXX BSF PORTB, 0 3) F>W ise MOVLW h60 MOVWF MEM MOVLW h50 SUBWF MEM, W BTFSC STATUS, 0 GOTO yu atlar GOTO XXX

;W=veya> ise program GOTO ile devam eder, < ise

;W=veya< ise program GOTO ile devam eder, > ise

21

BSF

PORTB, 0

2.5.7.2.2.SUBLW komutu karma yapan komuttur. Sabit L ierisinden W registeri ieriini karr, sonucu W registerine yazar. karma sonucunda W ve sabitin deerleri flaglarn deerini deitirir. File register>W File register=W File register<W 1) sabit=W ise MOVLW SUBLW BTFSC GOTO BSF Z=0 C=1 Z=1 C=1 Z=0 C=0

h50 h50 STATUS, 2 XXX PORTB, 0

;sabit=W ise BSF komutuna geilir

2) sabit<W MOVLW SUBLW BTFSC GOTO BSF h60 h50 STATUS, 0 XXX PORTB, 0

;sabit<W ise BSF komutuna atlanr

3) sabit>W MOVLW SUBLW BTFSC GOTO BSF h40 h50 STATUS, 0 XXX PORTB, 0

;sabit>W ise BSF komutuna atlanr

2.5.8.Status Register STATUS registerinin ierii bir ok komutun almas neticesinde deiir. STATUS registerinin Z, DC veya C bitleri etkileyen bir komut kullanldnda bu bitlere yazma ilemi yaplamaz. Bu bitlerin 1 veya 0 olan durumu kullanlan PIC e baldr. Bank semek iin kullanlan RP0 ve RP1 bitlerine yazmak mmkn olduu halde, TO ve PD bitlerine yazma ilemi yasaklanmtr. Bu nedenle bir STATUS registerini etkileyen komutun altrlmas sonucunda etkilenen bitler beklenenden farkl olabilir.

22

STATUS register bitleri: Bit 7: IRP:register bank select bit 16F84 te kullanlmaz 0 olarak kalmaldr Bit 6-5: RP1:RP0: register bank select bit 00=bank0 ( h00-hFF ) 01=bank1 ( h80-hFF ) 10=bank2 ( h100-h17F ) 11=bank3 ( h180-h1FF ) 16F84 te sadece RP0 kullanlr, RP1 0 olarak kalmaldr Bit 4: TO: time out bit 1=PIC enerjilendiinde, CLRWDT ve SLEEP komutu alnca 0=WDT zamanlaycsnda zaman dolduunda Bit 3: PD: power down bit 1=PIC enerjilendiinde ve CLRWDT komutu altnda 0=SLEEP komutu alnca Bit 2: Z: zero bit 1=aritmetik veya mantksal komutun sonucu 0 olduunda 0= 0 olmadnda Bit 1: DC: digit carry/borrow bit ADDLW ve ADDWF komutlar kullanldnda oluan tama ve dn alma olduunda 1=alt drt bitin 4. bitinde tama meydana geldiinde 0= gelmediinde Bit 0: C: carry/borrow bit ADDLW ve ADDWF komutlar kullanldnda oluan tama ve dn alma olduunda 1=en soldaki 7. bitte tama olduunda 0=en soldaki 7. bitte tama olmadnda NOT: RLF ve RFF komutlar altnda en sol bit veya en sa bit deeri carry bitine yklenir. 2.5.9.Zaman Geciktirme 2.5.9.1.Zaman geciktirme dngleri 2.5.9.1.1.Dahili komut saykl PIC giriine uygulanan osc frekans 4 e blnr ve bir komutun icra sresi bu frekansn bir saykl sresincedir. Fakat PIC16F84 komutlarndan 10 tanesi hari dierleri bir komut saykl sresince alr. Bu komutlar: Komut GOTO CALL RETURN Komut saykl 2 2 2

23

Program saycya (PC) veri yazan komutlar DECFSZ RETLW RETFIE INCFSZ BTFSC BTFSS

2 1 ( register ierisindeki say 1 ise ) 2 ( register ierisindeki say 0 ise ) 2 2 1 ( register ierisindeki say 1 ise ) 2 ( register ierisindeki say 0 ise ) 1 ( test edilen bit 1 ise ) 2 ( test edilen bit 0 ise ) 1 ( test edilen bit 0 ise ) 2 ( test edilen bit 1 ise )

Tablo 2.2 komut icra sreleri 2.5.9.1.2.Tek dng ile minimum zaman geciktirme SAYAC registeri ierisine h01 yklenir, DECFSZ komutu ile tekrar saysndan her defasnda 1 karlr. karma sonucu 0 olduunda dng sona erdirilir.
SAYACh01

SAYAC= SAYAC-

MOVLW h01 MOVWF SAYAC DONGU


Saya 0 m evet

;1 saykl ;1 ;0 toplam 4 saykl

DECFSZ GOTO

SAYAC, F ;10+2 DONGU

Tekrar azalt

Devam et

ekil 2.15 min zaman geciktirme dngs 2.5.9.1.3.Tek dng ile maksimum zaman geciktirme SAYAC registerine yklenen say hFF olursa toplam 766 saykllk zaman gecikmesi elde edilir. 2.5.9.1.4.Komut saykl saysnn bulunmas N registere atanan say olursa bir dngn 3N saykllk bir geciktirme oluturur.

24

2.5.9.1.5.N saysnn bulunmas N=GSf/12 Nregistere atanan decimal say hex e dntrlerek yazlmal GSgecikme sresi fPICe uygulanan harici frekans 2.5.10.Alt programlar Gerektiinde alt program ad CALL komutundan sonra yazlarak arlr. RETURN komutu ile ana programa dnlr. Alt programn altrlmaya balad anda programn tekrar geri dnecei adres bilinmesi gerekir. STACK register bu adresin yazld zel bir registerdir. Alt programlardan gri dnlrken en son yazlan adres ilk nce ilem grr. - ana programn ilk komutundan itibaren program almaya balar. - program ak CALL_ALTPROG ile alt prog adl alt programa geer - ana alt programdan kld andaki adres STACK registere yazlr - alt program komutlar alr - RETURN alt program komutlarnn bittiini gsterir. Program akn ana programda kald yerdeki adrese gnderir - STACK registerde yazl bulunan ayrlma adresine alnr - Ana program kald yerden itibaren almaya balar ve END komutu ile sona erer 2.5.11.Bit Kaydrma 2.5.11.1.Sola kaydrma RLF komutu ile belirlenen bir file register ierisindeki bitlerin pozisyonu her defasnda bir sola kaydrmak iin kullanlr. Register ierisindeki bitler sola kaydnda MSB biti STATUS registerde bulunan carry flag ierisine yazlr. Carry flag ierii ise registerlerin LSB bitine yazlr. RLF (file register) (d) destination W veya F W ise sonu W ye F ise F e yazlr MEM adndaki bir file registerin ierii h86 ise RLF komutu altrldnda MEM registerinin ierii MOVLW h86 MOVWF MEM RLF MEM, F H86=b10000110 1CF 1 MSB 0 0 Kaydrma sonucu MEM registeri 0CF 0 MSB 0 0 0 0 0 1 1 1 1 0 0 LSB 1 LSB

25

2.5.11.2.Saa kaydrma RRF komutu ile belirlenen bir file register ierisindeki bitlerin pozisyonu her defasnda bir saa kaydrmak iin kullanlr. Register ierisindeki bitler saa kaydnda LSB biti STATUS registerde bulunan carry flag ierisine yazlr. Carry flag ierii ise registerlerin MSB bitine yazlr. RRF (file register) (d) destination W veya F W ise sonu W ye F ise F e yazlr MEM adndaki bir file registerin ierii h49 ise RRF komutu altrldnda MEM registerinin ierii MOVLW h49 MOVWF MEM RRF MEM, F H49=b01001001 0 MSB 1 0 0 Kaydrma sonucu MEM registeri 1 0 1 0 1 0 0 1 0 0 1 0 1CF 0

2.5.11.3.COMF ve SWAPF komutlar COMF komutu seilen file register ierisindeki bitleri tersine evirir yani 1 ler 0, 0 lar 1 olur COMF ( file register ) (d) W veya F MOVLW h0F MOVWF MEM COMF MEM, F SWAPF komutu seilen bir file register ierisindeki verinin ilk drt biti ile son drt biti yer deitirir. SWAPF ( file register ) (d) MOVLW hC6 MOVWF MEM SWAPF MEM, F 2.5.12.Mantksal ilem komutlar 2.5.12.1.ANDLW W register ieriini istenen bir sabit veri ile AND ler elde edilen sonucu W registerine yazar. Bu komut W regiter ierisindeki bir veya birka bitin deerini 0 yapmak iin kullanlr. ANDLW (sabit) 1 ile AND lenen bitlerin deeri deimez 0 ile AND lenen bitlerin deeri 0 olur.( maskeleme ) W register ierisindeki b11010111 ise 2. ve 7. biti 0 yapmak iin b01111011 sabiti ile AND lemek gerekir.

26

MOVLW ANDLW MOVWF DONGU

b11010111 b01111011 PORTB

GOTO DONGU Sonuta W register ierii yledir b01010011 2.5.12.2.ANDWF Seilen bir file register ieriini AND ler sonu W veya F registeri ierisine yazlr. ANDWF ( file register ) (d) W veya F olabilir PORTA ierii b00101100 olsun W registeri ierii ise b11011111 verisini yerletirerek 5. bitin ieriini 0 yapan ve PORTB ye gnderen komutlar. MOVLW b11011111 ANDWF PORTA, W MOVWF PORTB DONGU GOTO DONGU Sonuta PORTA ierii yledir PORTA00001100 2.5.12.3.IORLW W registerinin ieriini istenen bir sabit veri ile OR lar. IORLW ( sabit ) W register ierisindeki veri b00000011 ise bu verinin 6. ve 7. bitindeki verileri 1 yapmak iin b11000000 sabiti ile OR lamak gerekir. MOVLW b00000011 IORLW b11000000 MOVWF PORTB Sonuta PORTB ierii yledir PORTB11000011 2.5.12.4.IORWF Seilen bir file register ile W registerinin ieriini OR lar sonucu W registerine yada file registere yazar. IORWF ( file register ) (d) 2.5.12.5.XORLW W register ieriini sabit bir veri ile XOR lar, elde edilen sonucu W register ierisine yazar. XORLW (sabit) MOVLW b11110000 XORLW b10000001 MOVWF PORTB Sonuta PORTB ierii yledir PORTB01110001

27

2.5.12.6.XORWF Seilen bir file register ile w registerinin ieriini XORlar sonu W veya F register ierisine yazlr. XORWF ( file register ) (d) 2.5.13.Bir bytelk iki veriyi karlatrma W register iindeki bir byte lk veriyi istenen bir bytelk sabit veri ile ayn olup olmadn test etmek amacyla XORLW komutu kullanlr. Bir file register ierisindeki veriyi W register iindeki veri ile karlatrmak iinde XORWF komutu kullanlr. Veriler ayn ise XORlama sonucunda Z flag 1, veriler ayn deil ise Z flag 0 olur. PORTA registeri ierisindeki verinin b00000110 verisi ile ayn olup olamadn kontrol eden program MOVLW TEST_PORTA XORWF BTFSS GOTO DEVAM MOVF MOVWF . . b000001100 PORTA, F STATUS, 2 TEST_PORTA PORTA PORTB

2.5.14.Bir byte lk veriyi 0 ile karlatrma W register ierisindeki bir byte lk verinin 0 olup olmadn test etmek iin 0 sabit verisi ile ORlanr. Bu ilem iin IORLW kullanlr. Bir file register ierisindeki verinin 0 olup olmadn kontrol etmek iin W register ierisine 0 verisi atandktan sonra bu ikisi OR lanr. Bu ilem iin IORWF komutu kullanlr. OR sunucunda karlatrlan byte lar ayn ise yani ierikleri 0 ise Z flag 1 olur W register ieriinin 0 olup olmadn kontrol eden komutlarn yazl MOVLW b00000000 TEST_W IORLW b00000000 BTFSS STATUS, 2 GOTO TEST_W DEVAM 2.5.15.Aritmetik lemler Aritmetik ilemler iin gerekli komutlar: ADDLW sabiti W registerden karr ADDWF W registerle F registeri toplar SUBLW sabitten W registeri karr

28

SUBWF F registerden W registeri karr RLF F register ierisindeki bitleri bir sola kaydrr RRF F register ierisindeki bitleri bir saa kaydrr 0-255 saylar arasndaki 8 bitlik toplamada carry flag elde edilen sonucun 8 bitin dna tap tamadn gsterir. Eer CF=0 ise sonu 8 bitten fazla deildir CF=1 ise sonu 8 bitten fazladr yani tama vardr 0-255 saylar arasndaki 8 bitlik karmada CF elde edilen sonucun negatif veya pozitif olduunu gsterir eer CF=1 ise sonu pozitif CF=0 ise sonu negatiftir 2.5.15.1.8 bit toplama Bir bytelk iki say iki ekilde toplanabilir. lki W register sabit bir say ile toplanr (ADDLW) sonu W registerine yazlr. kincisi W registerle bir file register ierii toplanr (ADDWF) sonu W veya F e yazlr. h02+hFD=hFF CF=0 h03+hFD=h00 CF=1 2.5.15.2.16 bit toplama Toplama ileminde kullanlan saylar 1byte=hFF=d256 dan daha byk ise say iki yada daha fazla byte ile gsterilir. h01FD saysn iki paraya blerek h01 iin A registeri, hFD iin B registeri kullanarak ilemlkeri yaparz. - toplanacak iki saynn ilk nce alt byte lar toplanr - alt byte lerde tama varsa st bytelardan birisine 1 eklenir - st bytelar toplanr ilemin ak diyagram:

Alt byte lar topla

ADDWF

CF=1 mi?

evet st bytelerden birisine 1 ekle

INCF ADDWF

st byte lar

topla

ekil 2.16 bit toplama ak diyagram

29

2.5.15.3.8 Bit karma SUBLW h02 ;saydan W registerini kar SUBWF MEM, F ;MEM den W registerini kar Kk saydan byk say karlrsa CF=0, byk saydan kk say karlrsa veya saylar birbirlerine eit ise CF=1 olur.

2.5.15.4.16 Bit karma - alt bytelar birbirlerinden karlr - dn alma var ise CF=0 sa st bytelardan birsinden 1 karlr - eer dn alma yok ise CF=1 se st bytelarn karmas yaplr

Alt byte lar kar

SUBWF

CF=0 mi?

evet st bytelardan birisinden 1 kar

DECF SUBWF

st byte lar kar

ekil 2.17 bit karma ak diyagram 2.5.16.evrim Tablolar evrilecek kod h00 h01 h02 h03 h04 h05 h06 h07 h08 h09 h0A h0B h0C evrilen 7seg k. 7 seg ularndaki 7 segde grlecek PORTB veri say h3F 00111111 0 h06 00000110 1 h5B 01011011 2 h4F 01001111 3 h66 01100110 4 h6D 01101101 5 h7D 01111101 6 h07 00000111 7 h7F 01111111 8 h6F 01101111 9 h77 01110111 A h7C 01111100 b h39 00111001 C

30

h0D h0E h0F Nokta

h5E h79 h71 h80

01011110 01111001 01110001 10000000

d E F .

Tablo 2.3 evrim tablolar 2.5.17.Program counter 13 bitlik bir program saycs vardr. GOTO ve CALL komutlaryla kullanlan 11 bitlik adresler 2KB lik program bellei bulunan PIC leri adreslemek iin yeterlidir. (PIC16F84 te 1KBlik program bellei vardr ) PIC programlarnda program sayc PC kodu ile kullanlr. Program saycnn alt 8 bitine PCL st 5 bitine PCH ad verilir. Program saycnn st 5 bitini dorudan okumak ve yazmak mmkn deildir. Ancak PCLATH zel registeri ile veri yklenir. Bu registerde 5 bittir. PCLATH ierii PIC enerjilendiinde b00000 dr. PCH komutu kullanlmad srece bu registerle herhangi bir iimiz yoktur. Fakat almada soruna neden olmamas iin 4. ve 3. bitlerinin ierikleri 0 lanmaldr. 2.5.18.RETLW Ana programa dn iin kullanlr. RETURN komutundan farkl olarak W registerine sabit bir say ykler. RETLW h3F ;W ye verilen sayy ykle ve ana programa dn 2.5.19.Kesmeler ( Interrupts ) Port girilerinden veya donanm ierisindeki bir saycdan gelen sinyal nedeniyle belleinde almakta olan programn kesilmesi olaydr. Programn kesildii andan itibaren nceden hazrlanan bir alt program alr. Alt program ilevini bitirdikten sonra ana program kald yerden itibaren tekrar almasna devam eder. Neticede kesme ana programn almasn duraklatr fakat ilevini devam ettirmesini engellemez. Alt programlarla arasndaki fark normal alt program arma, program ierisinde yazlan komutlar vastasyla yaplr. Kesme alt programlarnn arlmas ise donanmda oluan deiiklikler yapar. Kesme meydana geldiinde o anda almakta olan komutun almas tamamlanr daha sonra program ak PIC program belleinin h0004 adresine atlar ve bu adresteki komutu altrr. PIC kesme alt program altktan sonra ana programda hangi adrese geri dneceini o anda alan komutun adresini STACK registerine kaydeder. Alt program ilevini tamamladnda ana program ak bu adresten itibaren devam eder. Kesme alt programndan ana programa dn komutu RETFIE komutu ile yaplr. Kesme alt programnda meydana gelen olaylar: - kesme olay meydana geldiinde STACK registerinin olduu adrese h23F atla

31

ana programn kald adresi STACK registere yaz h04 adresindeki komutu altr. Bu komut kesme alt programn altr kesme alt programnn olduu adrese atla kesme alt program altr. Alt programn en son komutu RETFIE dir STACK registerin olduu yere git Ana programa dn adresini al Ana programn kesildii yerdeki adresten bir sonraki adrese git ve devam et

2.5.19.1.INTCON registeri RAM bellekte h0B adresinde bulunan zle registerlerden bir tanesidir. Tm kesme ilemlerinin kontrol bu register aracl ile yaplr. Bit 7: GIE: tm kesme ilemlerini iptal etme bayra 0=tm kemeler geersiz 1=aktif yaplm tm kesmeler geerli Bit 6: EEIE: EEPROM bellee yazma ilemini tamamlama kesmesi 0=geersiz 1=geerli Bit 5: T0IE: TMR0 sayc kesmelerini aktif yapma bayra 0=geersiz 1=geerli Bit 4: INTE: harici kesmeyi aktif yapma bayra 0=geersiz. Harici kesmeler kabul edilmez 1=geerli. Harici kesmeler kabul edilir Bit 3: RBIE: PORTB (4, 5, 6, 7. bitleri) deiiklik kesmesini aktif yapma bayra 0=geersiz. PORTB deki deiiklikler kesme oluturur 1=geerli. PORTB deki deiiklikler kesme oluturmaz Bit 2: T0IF: TMR0 saycs zaman am bayra 0=zaman am yok 1=zaman am var ( hFF den h00 a gei ) Bit 1: INTF: harici kesme bayra 0=harici kesme olumadnda 1=harici kesme olutuunda Bit 0: RBIF: PORTB deiiklik bayra 0=RB4-RB7 ularnda deiiklik yok 1=RB4-RB7 ularndan en az birinde deiiklik var 2.5.19.2.Kesme kaynaklar Kesmeler aadaki 4 kaynaktan gelebilir. 1) external kesme ( RB0/INT ucundan gelen sinyal ) 2) TER0 saycsnda oluan zaman am kesmesi ( saycnn hFF den h00 gelmesi ) 3) PORTB 4, 5, 6 ve 7. bitler lojik seviye deiikliinden 4) EEPROM bellee yazma ileminin tamamlanmasnda meydana gelen kesme ( bahsedilmeyecek )

32

2.5.19.2.1Harici kesmeler Harici kesmelerin kullanlabilmeleri iin yazlm ve donanm gereklidir. Yazlm aracl ile PORTB nin RB0/INT ucu dardan gelebilecek kesmeyi alglayabilecek ekilde hazrlanr. Bunun iin: - RB0/INT ucu giri olarak ynlendirilmeli - INTCON registeri iindeki ilgili bayrak ( INTE ) kullanlarak harici kesme ilemi aktif yaplmaldr. Donanm ise RB0 ucundan sinyal girii yapabilecek elektronik bir devredir. Bu sinyalin kenar tetiklemesi nemlidir. OPTION registerinin 6. biti bu utan girilen sinyalin ykselen mi yoksa den kenarnda m kesme yaplacana karar verir. OPTION register INTEDG ( 6. bit ) 0=den kenarda kesme 1=ykselen kenarda kesme Kesme alt programnn almas esnasnda gelebilecek yeni kesmeleri engellemek iin INTCON registerinin 4. bit ( INTE bayra ) 0 yaplmaldr. Eer harici kesme RB0/INT ucundan sinyal giriiyle meydana gelirse INTCON register ierisindeki INTF bayra 1 olur. INTF kesme alt program ierisinde tekrar 0 yaplmaldr. Aksi halde tekrarlanan kesmeler ile karlalr. Ksaca zetlenirse harici kesme olutuunda yaplacak ilemler sras yledir: - sonraki kesmeleri geersiz yapmak iin INTE bayran 0 yap - kesme alt programn altr - INTF kesme bayran 0 yap - Yeni kelimeleri geerli yapmak iin INTE bayran 1 yap 2.5.19.2.2TMR0 sayc kesmesi erisindeki saynn hFF den h00 a gelince oluur. 2.5.19.2.3.PORTB lojik seviye ( RB4-RB7 ) deiiklik kesmesi PORTB nin 4, 5, 6 ve 7. bitlerinde meydana gelen bir deiiklikte INTCON registerinin 0. biti ( RBIF ) 1 olur. Bu kesme INTCON registerinin 3. biti ( RBIE ) aracl ile aktif veya pasif yaplabilir. PORTB nin 0, 1, 2, 3. bitlerindeki deiiklikler lemse oluturmaz. PORTB deki deiiklii alglamak iin bu porttaki son deer RB4-RB7 ularndan okunan veri ile karlatrlr. Eski ve yeni okunan veriler OR lanr. Farkllk varsa RBIF bayra ( INTCON registerinin 0. biti ) 1 olur.PORTB kesmesi yle silinebilir: - RBIE biti ( INTCON 3.bit ) silinmek suretiyle - PORTB yi okuduktan sonra RBIF bitini silmek suretiyle 2.5.19.3.Kesme alt programlarnn dzenlenmesi 2.5.19.3.1.Tm kesme ilemlerinin aktif yapma bayra ( GIE ) Bir kesme olaynn meydana gelmesi esnasnda INTCON registerinin 7. biti 0 olur. Bu ilem yeni bir kesmenin program akn bozmamas iin otomatik olarak yaplr. Kesme alt program almasn RETFIE komutu ile sona erdirip,

33

ana programa dnld anda sonraki kesmelerin geerli olabilmesi iin tekrara otomatik olarak 1 yaplr. Kesme olaynda meydana gelen olaylar: - INTCON GIE=1 - Kesme olay - INTCON GIE=0 - PC ierisindeki adres STACK registerine kaydedilir - h004 adresine atlar - kesme olay balar alt program alr - kesme bayra kontrol edilir - kesme olay biter ( RETFIE ) - program ak ana programa geer - INTCON GIE=1 2.5.19.3.2.Kesme esnasnda W ve STATUS registeri saklama Eer W ve STATUS registerinin ierii korunmak isteniyorsa gerekli komutlar kesme alt programnn ierisinde yer almaldr. Kesme olduunda yaplmas gereken ilemler: - W registeri deikene ykle - STATUS registeri deikene ykle - Kesme ilemi gerekletir - STATUS geri ykle - W geri ykle - Kesme alt programndan dn ( RETFIE ) Bu ilemleri yapacak komutlar: h004 KESME_ALT_PROG . . KESME_ALT_PROG 1: MOVWF SAKLA_W ;W registerini ykle 2: SWAPF STATUS, W ;STATUS ieriini SWAP yap 3: MOVWF SAKLA_S ;STATUS ieriini sakla . . ;kesme alt program komutlar . 4: SWAPF SAKLA_S, W ;STATUS ieriini yeniden SWAP yap 5: MOVWF STATUS ;STATUS registere yeniden ykle 6: SWAPF SAKLA_W, F ;W ieriini SWAP yap 7: SWAPF SAKLA_W, W ;W yi yeniden SWAP yap ve W ye yaz RETFIE ORG GOTO

34

SWAPF komutu bir register ieriini baka bir registere STATUS registerini deitirmeden yklemek iin kullanlr. Bu komutla alt 4 bit ile st 4 bitin yeri deiir. Bu nedenle alt programdan geri dnlmeden nce tekrar SWAPF komutu eski haline getirilmesi gerekir. Bu ilem srasnda MOVF komutu STATUS registerdeki Z bayrann ieriini deitirdiinden zero flag durumunu kontrol ederek ilem yapan bir programda hatalara neden olabilir. W registeri ierii b00001111 STATUS registeri ierii ise b00110100 olsun ve yukardaki program inceleyelim: 00001111 W register 00110100 STATUS register KESME_ALT_PROG 1: 00001111 SAKLA_W 2: 01000011 W register 3: 01000011 SAKLA_S ; kesme alt program komutlar 4: 00110100 W register 5: 00110100 STATUS 6: 11110000 SAKLA_W 7: 00001111 W register 2.5.19.3.4.Kesme alt programnn yazlmas lk komut h004 adresine yazlmaldr. Kesme kullanan programlarn dzenlenmesi aadaki gibi olmaldr: ORG h000 GOTO BASLA ;ana program balangc ORG h004 GOTO INT_ALT_PROG ;kesme alt program balangc ; BASLA Ana program komutlar . . INT_ALT_PROG Kesme alt program komutlar . . RETFIE 2.5.19.3.5.Kesme gecikmesi Bir kesme olutuunda alt program balamadan nce 3-4 komut saykl sresince gecikme meydana gelir. Zamann nemli olduu uygulamalarda gz nne alnmaldr.

35

2.5.20.Donanm Sayclar 2.5.20.1.Donanm sayc/zamanlayc PORT klarna gnderilen sinyaller arasnda bir gecikme istediimiz zaman bu gecikmeyi salamas iin bir alt program yaplr bu alt programa software timer denir. Fakat bu ilemi PIC donanm ierisinde yapan hardware timer bulunmaktadr. Genelde h00 dan balayp ierisindeki birer birer artran bir file registerdir. Sayma aralklar nedeniyle gecikme olmaktadr. PIC de iki tip timer bulunmaktadr. TMR0 olarak adlandrlan 8 bit sayc ilkidir. RAM bellein h01 adresinde olan zel bir registerdir. kincisi ise watchdog timer WDT ad verilen zamanlaycdr. 2.5.20.2.TMR0 sayc/zamanlayc RAM bellein h01 adresinde bulunur. TMR0 programlanan bir saycdr. Saymaya istenilen bir komuttan balatlabilir, herhangi bir anda da ierii sfrlanabilir. zellikleri: - 8 bit saycdr - yazlabilir ve okunabilir - programlanabilen frekans blme deeri - harici veya dahili clock ile say art - harici olarak den veya ykselen kenar tetiklemesi - sayc deeri artan yndedir. ( h00, h01hFF ) - TMR0 deeri hFF den h00 a gelince ilgili flag 1 yaparak kesme oluturur Ana program veya kesme alt programlar alrken sayma ilemini durdurmaz. Sayma ilemi devam ederken hFF den h00 a geite meydana gelen tama INTCON registerinin 2. bitinde ( T0IF ) 1 olarak grlr. Bu bayrak kontrol edilerek kesme oluturulabilir. 2.5.20.3.OPTION register RAM bellein 1. BANK ndaki h81 adresinde bulunan zel registerdir. Kesme sinyalinin tetikleme kenarn , PORTB nin pull-up yaplma durumunu, TMR0 veya WDT yi seme bayran kontrol eden 8 bitlik registerdir. RBPU(7.bit) INTEDG T0CS T0SE PSA PS2 PS1 PS0(0.bit)

PS0, PS1, PS2: frekans blme says Frekans blme says TMR0 oran 000 001 010 1/8 011 1/16 100 1/32 101 1/64

WDT oran 1/1 1/8 1/16 1/32

36

1/128 1/256 Tablo 2.4 frekans blme says PSA: frekans blc seme biti 0=blme says TMR0 iin geerli 1=WDT iin geerli T0SE: TMR0 sinyal kayna kenar seme biti 0=RA4/T0CKI ucundan den kenar tetiklemesi 1=ykselen kenar tetiklemesi T0CS: TMR0 sinyal kayna seme biti 0=dahili komut saykl seilir 1=harici sinyal ( RA4/T0CKI ucu ) INTEDG: harici kesme sinyali kenar seme biti 0=RB0/INT ucundan den kanarda tetikleme 1=ykselen kenarda tetikleme RBPU: PORTB pull-up geerli yapma biti 0=PORTB ularndaki pull-up lar iptal edilir 1=geerli yaplr 2.5.20.4.TMR0 sayc zellikleri

110 111

1/64 1/128

ekil 2.19 TMR0 Sayc iindeki saynn artrlmas iin gerekli clock sinyali iki farkl kaynaktan salanabilir. 1) dahili komut sinyali 2) harici sinyal ( RA4/T0CKI ) - harici sinyal PORTA nn 3. bitinden ( RA4/T0CKI ) - TMR0 n sinyal kaynan semek iin OPTION registerinin 5. biti ( T0CS ) kullanlr - Sinyal kaynandan gelen sinyal direkt olarak TMR0 besleyebildii gibi frekans blc aracl ile de beslenebilir

37

Frekans blme says TRM0 veya WDT ye OPTION registerinin 3. biti ( PSA ) ile ynlendirilir. Her iki saycnn da blme oranlar birbirlerinden farkldr dikkat! - OPTION registerinin 0,1,2. bitleri kullanlarak 8 farkl frekans blme deeri seilebilir. TMR0 saycsn tetikleyecek olan sinyal direkt olarak sinyal kaynandan salanmak isteniyorsa ( frekans blcy bypass ederek ) frekans blme deeri WDT ye atanr. Bu ilem PSA bitile yaplr - Frekans blme deeri TMR0 a atandnda TMR0 a yazmak iin kullanlan tm komutlar frekans blme deerini siler - Frekans blme deeri kullanlmadan direkt olarak harici sinyal kullanlrsa dahili komut sinyali ile senkronizasyonu salamak iin 2 saykllk bir gecikme salanr - Harici sinyal uygulandnda TMR0 saycsnn iindeki saynn hangi kenarda artacan belirlemek iin OPTION registerinin 4. biti ( T0SE ) aracl ile belirlenir. - TMR0 saycsndan k sinyalleri aadaki durumlarda oluur: 1) RAM bellein h01 adresindeki TMR0 registeri okununca 2) Saycnn hFF den h00 a geiinde meydana gelen tama sinyalinin INTCON registerinin 2. bitine ( T0IF bayra ) 1 yazlmas annda - TMR0 daki saylar artran saycya uygulanan sinyallerdir - Saylar harici sinyal aracl ile artrldnda istenirse bu sinyaller saylabilir. Bu durumda TMR0 sinyal sayc olarak kullanlm olur 2.5.20.5.Frekans blme saysnn kullanlmas Frekans blme says 000 001 010 011 100 101 110 111 TMR0 oran 1/8 1/16 1/32 1/64 1/128 1/256 WDT oran 1/1 1/8 1/16 1/32 1/64 1/128

Tablo 2.5 frekans blme saysnn kullanlmas 2.5.20.6.TMR0 ve WDT oran TMR0 oran ise 2 komut sayklnda bir defa st sayya gemi olur. Frekans blme says b000 seilirse TMR0 n sayma aral sresi ne olur? Fosc=4 MHz ise Tkomut=1s olur TMR0 dahili komut sayklnn 2 sayklnda 1 defa artar o zaman: TMR0 sayma aral sresi=TkomutTMR0oran =1s2=2s buna gre TMR0 saymaya baladnda ilk say h00 ise bu say hFFe gelince kesme sinyali oluacaktr. Bu say ondalk

38

olarak 256 eder. yleyse TMR0 ka saniyede kesme sinyali verecei yle hesaplanr: kesme gecikmesi=TMR0 sayma aral256 =2s256=512s eklinde hesaplanr. 2.5.20.7.Frekans blme saysnn atanmas TMR0 saysn direkt olarak sinyal kaynandan beslemek iin frekans blme saysn WDT ye atamaktr. Frekans blme deeri WDT ye atandnda TMR0 a yazmak iin kullanlan CLRF, BSF, MOVWF gibi komutlar frekans blme deerini sfrlayarak yeni bir deer iin hazrlar. Frekans blme deeri TMR0 dan WDT ye veya tersi atama ilemi yaplrken frekans blme saysnn sfrlanmas nedeniyle PIC alma esnasnda istenmeyen resetler oluabilir. Bunlar nlemek iin aadaki program muhakkak kullanlmaldr. #TMR0 dan frekans blme deeri atama: BCF STATUS, 5 ;BANK0 ge CLRF TMR0 ;TMR0 ve frekans blme silinir BSF STATUS ;BANK1 ge CLRWDT ;WDT sil MOVLW bxxxx1xxx ;yeni frekans blme deeri se MOVWF OPTION_REG ;OPTION registere yaz BCF STATUS, 5 ;BANK0 ge #WDT den TMR0 a frekans blme deeri atama: CLRWDT ;WDT yi ve frekans blme deerini sil BSF STATUS, 5 ;BANK1 ge MOVLW bxxxx0xxx ;TMR0 yeni frekans blme deerini ve yeni sinyal kayna se MOVWF OPTION_REG ;OPTION registere yaz BDF STATUS, RP0 ;BANK0 ge 2.5.20.8.TMR0 saycsnn kullanlmas 2.5.20.8.1.TMR0 saycnn kurulmas - yukarda verilen komutlar ile frekans blme deerinin atanmasyla - OPTION registerin bitlerine uygun veri gndererek 2.5.20.8.2.TMR0 saycnn balatlmas - saycya bir say yazmak sayma ilemini balatr 2.5.20.8.3.Saymaya balama saysnn deitirilmesi - saycnn h00 dan deil de baka bir saydan balatmak iin TMR0 registerine istenen saynn atanmas yeterlidir. 2.5.20.8.4.TMR0 n altn anlamak bu registeri herhangi bir anda okuyarak - herhangi bir bitini test ederek

39

hFF den h00 a geite oluan kesme sinyalin test ederek. Kesme annda INTCON registerinin 2. biti ( T0IF bayra ) 1 olur TMR0 almas esnasnda PIC yklendii dier ileri yapmaya devam eder

2.5.20.8.5.TMR0 almasna devam etmesi - silinmedii srece ( CLRF TRM0 ) - ierisine say yazlmad srece ( MOVLW h05, MOVWF TMR0 ) - PIC resetlenmedii srece 2.5.20.8.6.Kesme olutuunda TRM0 hFF ulaan sayc otomatik olarak h00 dan balar - eer balang says devaml olarak bir N says olmas isteniyor ise her kesme olutuunda bu say tekrar TMR0 a atanmaldr 2.5.20.8.7.TMR0 durdurma - PIC alt srece saymaya devam eder. Fonksiyonlarndan yararlanlmak istenmiyorsa program ierisinde kullanlmaz ancak kesme bayra ( T0IF ) 1 yapmaya devam eder 2.5.20.8.8.TMR0 saycsn istenen bir saydan balatlmas Kesme gecikmesi=4(256-TMR0 ilk says)prescaler / Fosc - kesme gecikmesi: oluacak kesme sinyali aral ( s ) - TMR= ilk says: atanan ondalk say - Prescaler: frekans blme says (2, 4, 8, 16, 32, 64, 128, 256) kullanlmad zaman bu say senkronizasyon nedeniyle 2 alnmaldr - Fosc: PIC osc frekans 2.5.21.WDT zamanlaycs ( watchdog timer ) PIC nceden belirlenen srede yapmas planlanan bir ii zamannda yapmayp dng kontrolden km ve kilitlenmi ise WDT devreye girer ve PIC reset edilir. Ayrca SLEEP moduna girmi PIC i uyandrarak almaya devam etmesi amacyla da kullanlr.

40

ekil 2.20 WDT OPTION registerinin WDT ile ilgili 4 biti vardr. WDT zamanlaycsn semek iin OPTION registerinin 3. biti 1 yaplmaldr. WDT orannn ise 0,1,2. bit aracl ile frekans blmesi yaplr. WDT zamanlaycsn sinyal kayna internal bir osc dir. Nominal zaman am 18ms fakat bu deer frekans blme ilemi ile 2.3 sn kadar karlabilir. 2.5.21.1.Zaman am sresi WDT nin CLRWDT komutu ile reset yapldktan sonra saymasn tamamlayp tekrar saymaya balad ana kadar geen zamandr. WDT saymasn tamamlad anda zaman am sinyali verir ve bu sinyal STATUS un 3. ve 4. bitindeki flaglar etkiler. Bit 3: PD: power down biti 0=SLEEP komutu altnda 1=PIC enerjilendiinde yada CLRWDT komutu altnda Bit 4: TO: time out biti 0=WDT zaman am sinyali olutuunda 1= PIC enerjilendiinde yada CLRWDT komutu altnda WDT ile kontrolden km bir program tekrar resetleyerek kontrol ele alma planlanyorsa ana porgram banda bu bitler kontrol edilmelidir. Bylece zaman am olduunda program ak baka bir yere dallandrlabilir.

41

rnek program paras: WDT_KONT BTFSS STATUS, 4 CALL XXX MOVLW hFF MOVWF TRISA . . . .

;TO biti 1 mi? ;hayr program akna devam et

WDT uygulamasnn kapatlmas PIC programlaycnn ara yznden yaplr. Ancak bu program ierisinde bir konfigrasyon satr oluturularak da yaplabilir. Komut program esnasnda geersiz edilemez sadece CLRWDT ile resetlenebilir. Bu durumda h00 dan itibaren tekrar saymaya balar sayma sresi bitince STATUS registerinin TO bayran 0 yapar. 2.5.21.2.SLEEP komutunun kullanlmas Komut genellikle PIC programnn devaml olarak almas gerekmeyen durumlarda kullanlr. Bu komut ile program olduu yerde durur ve tm zel registerler ve RAM bilgileri saklanr. SLEEP modundan kma WDT sinyali ve harici kesme sinyalleri vastasyla yaplabilir.

42

BLM 3 PROJENN GEREKLETRLMES 3.1. Projenin Gerekletirilmesi Her eyden nce bilinen IR haberleme protokollerini kullanmayacaksanz kendinize ait bir protokolnz olmas gerekir. Basit bir seri protokol u ekilde yaplabilir: ncelikle seri haberleme yapan cihazlar vericinin gnderdii modle darbelerin geniliini lerek ilem yaparlar. rnein; SIRCS (Sony Infrared Remote Control System ) protokolnde 2400uslik darbeden sonra 600uslik bir boluk gnderir alc 2400uslik darbeyi aldktan sora ilem yapmaya balar yani alc darbenin birka yerinde okuma yaparak programn akna devam etmez, gelen darbenin sresini lerek dier kodlarn alnp alnmayacana karar verir. Fakat bir microcontroller iin daha basit haberleme yollar varken darbe sresini lp karar verebilen bir program yazmak ura gerektiren bir itir.

1 0 header
30ms 5ms 10ms

1
LSB 0 1 2 3 4 5 6 MSB 7

8 bit data
10ms 80ms 110ms

ekil 3.1 gelitirilen protokol Proje iin gelitirilen IR seri haberleme protokol ekil 3.1 de gsterildii gibidir. 11 bitlik bir koddur ve her bittin gnderilmesi 10ms srer. 1 seviyesinin gnderilmesi iin 10 ms lik darbe, 0 seviyesinin gnderilmesi iinse 10mslik boluk braklr. Gnderilecek bitler ayr ayr kodlanmam ve balang iin header kullanlmtr. Header her transmisyonda tekrar gnderilir. Alc ise gelen kodlarn darbe sresini lerek karar vermemektedir, gelen kodlardan belli zaman aralklarnda rnekler alarak ilem devam ettirilir. Esas olarak alc, ilk darbeyi aldktan sonra 5ms bekler ve okuma ilemine balar. Okuma ilemi rnek alma

43

ilemidir. Eer ilk okuma annda gelen bitden alnan rnek 1 seviyesinde ise bir sonraki okuma ilemi iin 10ms beklenir bu bitin ise 0 seviyesinde olmas gerekmektedir. 0 biti de alndktan sonra 10ms lik bir bekleyi daha balar ve son gelen header bitinden rnek alnr. Eer bu bit 1 seviyesinde ise gelen sinyal, gvenlik band olan 3 bitlik headeri am demektir ve headerden sonra gelen tm bitler srasyla 1-0 seviyeleri ayrt edilmeksizin microcontroller tarafndan kabul edilir ve k portlarna yazlr. Gelen 8 bitlik datada, microcontrollerin 1 veya 0 olmas istenen port klarnn bilgisi yer alr. rnein alc nitedeki microcontrollerin portlarndan biri olan PORTB nin 3. bitinin 1 seviyesi olmas isteniyorsa, vericiden gnderilen data sinyali 00010000 eklinde olmaldr. Bu ekilde vericiden gnderilen 1 seviyesi dier bitlere kaydrlarak teker teker tm bitlerinde 1 seviyelerine kmalar salanarak 8 kanall uzak kontrol nitesi elde edilebilir. lem aadaki tabloda daha rahat grlmektedir. Headerden sonra gelen data 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001 microcontroller k ( PORTB ) RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

Tablo 3.1 microcontroller doruluk tablosu Artk yaplmas gereken tek ey bu protokolde haberleebilecek microcontroller programlarn yazmaktr. Software tamamlandktan sonra ise hardwareyi tasarlayp devreleri board zerine kurmaktan ibarettir. Yukarda anlatlan protokol gerekletirebilen programn ak diyagram yledir:

44

PORTA 0.biti 1 yap

PORTA 0.biti 1 yap

PORTA 0.biti 1 yap

ekil 3.2 bekle alt program

45

3.1.1Verici ak diyagram
bala

data gnderme program

PORTA 0.biti 1 yap

bekle

PORTA 0.biti 1 yap

header
bekle

Data1 gnder

PORTA 0.biti 1 yap

bekle

Data2 gnder

PORTA 0.biti 1 yap

bekle

PORTA 0.biti 1 yap

Data3 gnder
bekle

PORTA 0.biti 1 yap

Data4 gnder

bekle

PORTA 0.biti 1 yap

bekle

Data5 gnder

PORTA 0.biti 1 yap

gnderilen 8bitlik data

bekle

PORTA 0.biti 1 yap

Data6 gnder
bekle

PORTA 0.biti 1 yap

bekle

Data7 gnder
PORTA 0.biti 1 yap

bekle

Data8 gnder

ekil 3.4 verici ak diyagram

46

3.1.2Alc ak diyagram
bala

PORTA 0.biti 1 yap

PORTA 0.biti 1 yap PORTA 0.biti 1 yap

bekle

PORTA 0.biti 1 yap PORTA 0.biti 1 yap bekle PORTA 0.biti 1 yap

PORTA 0.biti 1 yap

PORTA 0.biti 1 yap

PORTA 0.biti 1 yap

bekle

bekle

PORTA 0.biti 1 yap

PORTA 0.biti 1 yap

bekle

bekle

bekle

PORTA 0.biti 1 yap

bekle

bekle

PORTA 0.biti 1 yap

bekle

bekle

ekil 3.5 alc ak diyagram

47

3.2.Ak diyagramlarna gre microcontroller programlar 3.2.1.Verici program


P=16F84 EQU h'05' EQU h'06' EQU h'03' EQU h'85' EQU h'86' EQU h'0C' EQU h'0D' CLRF PORTB BSF STATUS, 5 CLRF TRISA MOVLW h'FF' MOVWF TRISB BCF STATUS, 5 CLRF FH1 CLRF FH2 ;---------------------------------------------KODSEC BTFSC PORTB, 0 GOTO KOD0 NOP BTFSC PORTB, 1 GOTO KOD1 NOP BTFSC PORTB, 2 GOTO KOD2 NOP BTFSC PORTB, 3 GOTO KOD3 NOP BTFSC PORTB, 4 GOTO KOD4 NOP BTFSC PORTB, 5 GOTO KOD5 NOP BTFSC PORTB, 6 GOTO KOD6 NOP BTFSC PORTB, 7 GOTO KOD7 NOP GOTO KODSEC ;--------------------------------------------------;GIDEN_DATA_10000000 KOD0 BTFSS PORTB, 0 GOTO KODSEC ;-------------------HEADER-------------------BSF PORTA, 0 LIST PORTA PORTB STATUS TRISA TRISB FH1 FH2

;PORTB ieriini 0 yap ;BANK1 e ge ;PORTA k yap ;W registerine hFF ykle ;PORTB y giri yap ;BANK0 ge ;FH1 registeri iei b00000000 ;FH2 registeri iei b00000000

48

NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------1-----------------0 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------3 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;---------------0-----------------6 BCF PORTA, 0

49

NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD0 ;-------------------------------------------------;GIDEN_DATA_01000000 KOD1 BTFSS PORTB, 1 GOTO KODSEC ;------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------1-----------------1 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------3 BCF PORTA, 0 NOP NOP

50

NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;---------------0-----------------6 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD1 ;--------------------------------------------------;GIDEN_DATA_00100000 KOD2 BTFSS PORTB, 2 GOTO KODSEC ;-------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP NOP NOP

51

CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------1-----------------2 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------3 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;---------------0-----------------6 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD2 ;--------------------------------------------------; GIDEN_DATA_00010000 KOD3 BTFSS PORTB, 3 GOTO KODSEC

52

;-------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------1-----------------3 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE

53

;---------------0-----------------6 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD3 ;--------------------------------------------------;GIDEN_DATA_00001000 KOD4 BTFSS PORTB, 4 GOTO KODSEC ;-------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------3 BCF PORTA, 0

54

NOP NOP NOP NOP CALL BEKLE ;--------------1-----------------4 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;---------------0-----------------6 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD4 ;--------------------------------------------------;GIDEN_DATA_00000100 KOD5 BTFSS PORTB, 5 GOTO KODSEC ;-------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP

55

NOP NOP CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------3 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------1-----------------5 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;---------------0-----------------6 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD5 ;--------------------------------------------------;GIDEN_DATA_00000010

56

KOD6 BTFSS PORTB, 6 GOTO KODSEC ;-------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------3 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP

57

NOP CALL BEKLE ;---------------1-----------------6 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------7 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD6 ;-------------------------------------------------;GIDEN_DATA_0000001 KOD7 BTFSS PORTB, 7 GOTO KODSEC ;-------------------HEADER-------------------BSF PORTA, 0 NOP NOP CALL BEKLE BCF PORTA, 0 NOP NOP CALL BEKLE BSF PORTA, 0 NOP NOP CALL BEKLE ;--------------0-----------------0 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------1 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------2 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE

58

;--------------0-----------------3 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------4 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------0-----------------5 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;---------------0-----------------6 BCF PORTA, 0 NOP NOP NOP NOP CALL BEKLE ;--------------1-----------------7 BSF PORTA, 0 NOP NOP NOP NOP CALL BEKLE GOTO KOD7 ;-------------------------BEKLE_ALT_PROGRAMI------------------------------BEKLE MOVLW h'64' MOVWF FH2 DONGU1 DECFSZ FH2 GOTO FH1AZALT GOTO BITIR FH1AZALT MOVLW h'64' MOVWF FH1 DONGU2 DECFSZ FH1, F GOTO DONGU2 GOTO DONGU1 BITIR RETURN ;--------------------------------------END

59

3.2.2.Alc program
LIST PORTA PORTB STATUS TRISA TRISB FH1 FH2 P=16F84 EQU h'05' EQU h'06' EQU h'03' EQU h'85' EQU h'86' EQU h'0D' EQU h'0E' CLRF PORTB ;PORTB ieriini 0 yap BSF STATUS, 5 ;BANK1 e ge CLRF TRISB ;PORTB k yap MOVLW h'FE' ;W registerine h'FF' ykle MOVWF TRISA ;PORTA y giri 0 HARIC BCF STATUS, 5 ;BANK0 ge ;-------------------------------------------------------------STANDBY BSF PORTA, 0 ;stand-by LEDini yak BTFSS PORTA, 1 GOTO STANDBY BCF PORTA, 0 ;stand-by LEDini sndr ;-------------------------DECODE-------------------------KAYDIR MOVLW h'20' MOVWF FH2 K1 DECFSZ FH2 GOTO K2 GOTO HEADER K2 MOVLW h'20' MOVWF FH1 K3 DECFSZ FH1, F GOTO K3 GOTO K1 ;--------------------HEADER_YAKALAMA----------------------;--------------------------1------------------HEADER BTFSS PORTA, 1 GOTO EXIT NOP CALL BEKLE BTFSC PORTA, 1 GOTO EXIT NOP CALL BEKLE BTFSS PORTA, 1 GOTO EXIT NOP CALL BEKLE ;---------------------------------------BTFSC PORTA, 1 BSF PORTB, 0

60

NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 1 NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 2 NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 3 NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 4 NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 5 NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 6 NOP NOP NOP CALL BEKLE ;--------------------------1------------------BTFSC PORTA, 1 BSF PORTB, 7 NOP NOP NOP CALL BEKLE ;----------------------------------------------NOP

61

NOP GOTO HEADER EXIT MOVLW h'00' MOVWF PORTB GOTO STANDBY ;-------------------------BEKLE_ALT_PROGRAMI------------------------------BEKLE MOVLW h'64' MOVWF FH2 DONGU1 DECFSZ FH2 GOTO FH1AZALT GOTO BITIR FH1AZALT MOVLW h'64' MOVWF FH1 DONGU2 DECFSZ FH1, F GOTO DONGU2 GOTO DONGU1 BITIR RETURN ;--------------------------------------END

62

3.3.Devreler 3.3.1.Verici devreleri 3.3.1.1.Tayc frekansn elde etmesi: Tayc frekans, temin edilen alc modl tipine gre 40kHz olarak belirlenmitir. Bu frekans retecek entegre ise osc ve 14 adet blc ksm olan 4060 CMOS entegresi seilmitir. 4060 olmas nedeni ise hem retilen frekansn darbe boluk orannn yaklak olarak eit olmas hem de retilen frekansn entegre ierisindeki 14 farkl frekans blcleri sayesinde osiloskop kullanmadan kolaylkla bir frekans metre ile llebilmesidir.

ekil 3.6 RC osilatr devresi retici firma tarafndan nerilen RC osc devresi ekil 3.6 da gsterilmitir.

ekil 3.7 osilatr devresi 40kHz iin gerekli hesaplamalar yaplp, R ve C deerleri bulunursa vericinin osc devresi ekil 3.7 deki deerleriyle kurulur. 3.3.1.2.arpm devresi ve IRLED src arpm devresi iin 4081 4l 2 girili CMOS AND kap entegresi, IRLED src transistoru iin ise yksek hzl anahtarlama ve max 800mA kollektr akm zelliklerinden dolay 2N2219A seilmitir.

63

ekil 3.8 IRLED src devresi AND kapsnn 1 nolu girii microcontrollern data k ile ve 2 nolu girii ise 4060 entegresinin 9 nolu pin olan 40kHz k ile balant yaplr. Haberleme srasnda, 2N2219A transistoru snabilir fakat klf scakl kritik deerlere ulamadndan, soutucuya gerek yoktur. 3.3.1.3.Microcontroller osilatr konfigrasyonu

ekil 3.9 verici osilatr konfigrasyonu PIC16F84A nn 4MHz lik osilatr konfigrasyonu iin, retici firmann nerdii balant ekli ve deerleri kullanlmtr.

64

3.3.1.4.Microcontroller reset devresi

ekil 3.10 verici reset devresi PIC16F84A nn reset devresi iin, retici firmann nerdii balant ekli ve deerleri kullanlmtr. 3.3.2.Alc devreleri 3.3.2.1.IR alc modl Alc, kuvvetlendirici ve sinyalin demodlasyon iin TSOP1240 modl kullanlmtr. Modl numarasnn son iki rakamndan da anlalaca gibi modl 40kHzlik tayc frekansna sahip sinyallerin demodlasyonunu yapmaktadr.

ekil 3.11 modl devresi Verilen alc modl devresi, retici firma tarafndan nerilen balant ekli ve deerleri ile kurulmutur. 3.3.2.2.Tersleyici TSOP1240 alc modl demodlasyon sonucunda knda gnderilen datann tersini oluturduundan CMOS 4585 NOT kaps ile terslenerek microcontroller giriine uygulanmtr.

65

3.3.2.3.Microcontroller osilatr konfigrasyonu

ekil 3.12 alc osilatr konfigrasyonu PIC16F84A nn 4MHz lik osilatr konfigrasyonu iin, retici firmann nerdii balant ekli ve deerleri kullanlmtr. 3.3.2.4.Microcontroller reset devresi

ekil 3.13 alc reset devresi PIC16F84A nn reset devresi iin, retici firmann nerdii balant ekli ve deerleri kullanlmtr. 3.4.Devrenin Ayarlanmas Verilen emalara uygun olarak devreler kurulup microcontrollerlar programlanr ve yerlerine yerletirilir. Ayarlanmas gereken tek ey; verici nitenin osilatr frekansn, tayc frekans olan 40kHz ye ayarlamaktr. Bir osiloskop veya frekans metre 4060n 9. pinine balanarak, verici nite zerindeki 10Klk trimpotu ayarlamak sureti ile 40kHz lik darbe serisi elde edilmeye allr. Verici ve alc niteler aralarnda 1m mesafeyi amayacak ve birbirlerini grecek

66

ekilde konumlandrlp, verici zerindeki butonlardan birine basl tutulur. Bu srada alc nitedeki karl olan LEDin yanmas gerekir. Verici zerindeki buton basl tutularak niteler birbirlerinden yava yava uzaklatrlr. Alc nitedeki LED sndnde 10K trimpot ayar ile oynanarak LEDin tekrar yanmas salanr. Bu ilem sistemin kumanda mesafesini artrmak iin kullanlr. ki nite arasndaki mesafe 5-6m yi amayacak ekilde birka defa daha bu yntem uygulanabilir. Sistemin kumanda mesafesini daha fazla artrmak iin IRLED 27luk seri direnci, 4.7 luk diren ile deitirilebilir. 4.7 dan daha kk bir diren deeri IRLED e ve transistora zarar verir.

67

BLM 4 ZMLER 4.1.Alc 4.1.1.Alc ematik

ekil 4.1 alc ematik 4.1.2.Alc PCB

ekil 4.2 alc PCB

68

4.2.Verici 4.2.1.Verici ematik

ekil 4.3 verici ematik 4.2.2.Verici PCB

ekil 4.4 verici PCB

69

You might also like