Mikro denetleyicili Uygulama devresi bileşenleri

Benzer belgeler
PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

Komutların İşlem Süresi

Yrd.Doç. Dr. Bülent ÇOBANOĞLU. Sakarya Üniversitesi, Teknoloji Fakültesi

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

KANPUR/microcontrollers/micro/ui/Course_home3_16.htm Yrd.Doç. Dr.

PIC TABANLI, 4 BASAMAKLI VE SER

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

PIC MCU ile UYGULAMALAR

1. PORTB ye bağlı 8 adet LED i ikili sayı sisteminde yukarı saydıracak programı

PIC MCU da Komutların İşlem Süresi

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

LCD (Liquid Crystal Display )

LCD (Liquid Crystal Display)

Komutların İşlem Süresi

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

PIC MİKROKONTROLÖR TABANLI MİNİ-KLAVYE TASARIMI

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

IŞIĞA YÖNELEN PANEL. Muhammet Emre Irmak. Mustafa Kemal Üniversitesi Mühendislik Fakültesi. Elektrik-Elektronik Mühendisliği Bölümü

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

KONFİGÜRASYON BİTLERİ

BSF STATUS,5 ;bank1 e geçiş CLRF TRISB ;TRISB= BCF STATUS,5 ;bank0 a geçiş

Hacettepe Robot Topluluğu

Bank değiştirme Bir banktan diğerine geçmek için STATUS register denilen özel registerin 5. ve 6. bitinin durumunu değiştirmek gerekir.

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

W SAYAC SAYAC SAYAC. SAYAC= ise, d=0 W

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

Assembler program yazımında direkt olarak çizgi ile gösterilmemesine rağmen ekranınız ya da kağıdınız 4 ayrı sütunmuş gibi düşünülür.

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

Hyper Terminal programı çalıştırıp Uygun COM portu ve iletişim parametrelerinin ayarları yapılıp bekletilmelidir.

BÖLÜM 1 ALT PROGRAMLAR 1.1.ALTPROGRAM NEDİR?

B.Ç. / E.B. MİKROİŞLEMCİLER

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

UYGULAMA 05_01 MİKRODENETLEYİCİLER 5.HAFTA UYGULAMA_05_01 UYGULAMA_05_01. Doç.Dr. SERDAR KÜÇÜK

PROGRAMLANABİLİR ZAMANLAYICI

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

Mikroişlemci: Merkezi işlem biriminin fonksiyonlarını tek bir yarı iletken tümleşik devrede birleştiren programlanabilir sayısal elektronik devre

PIC 16F84 VE TEK BUTONLA BĐR LED KONTROLÜ

DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü

Hacettepe Robot Topluluğu

KESME (INTERRUPT) NEDİR?

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM ÖRNEKLERİ

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

T.C. MİLLÎ EĞİTİM BAKANLIĞI ELEKTRİK ELEKTRONİK TEKNOLOJİSİ MİKRODENETLEYİCİYLE ANALOG İŞLEMLER 523EO0022

7 Segment Display ve Kesmeler (Interrupts) Hafta6-7. Dr. Bülent Çobanoğlu-SAÜ 1

MİKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil Bahar-Final

PIC MİKRODENETLEYİCİLERİN HAFIZA YAPISI. Temel olarak bir PIC içerisinde de iki tür hafıza bulunur:

PIC UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu

Configuration bitleri ve reset durumları hakkında kavramlar

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

MİKRODENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-Final Kısmı

MİKRODENETLEYİCİ GELİŞTİRME SETİ TASARIM VE UYGULAMALARI. öğrencilerine eğitimleri esnasında iş hayatında karşılaşabilecekleri kontrol işlemleri ve

MİKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

DSPIC30F2010 ASSEMBLER PROGRAMI İÇERİSİNDE KONFİGÜRASYON BİTLERİNİ TANIMLAMA

T.C. MİLLÎ EĞİTİM BAKANLIĞI DENİZCİLİK MİKRODENETLEYİCİ 2

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ELEKTRİK ELEKTRONİK TEKNOLOJİSİ

MİKRO DENETLEYİCİLER II DERS NOTLARI (Vize) Prof. Dr. Hakan Ündil Bahar

Microprocessors and Programming

5. BÖLÜM - DÖNGÜ (ÇEVRİM) ve Z BAYRAĞI

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

MİKRO DENETLEYİCİLER II DERS NOTLARI (VİZE KONULARI) Prof. Dr. Hakan Ündil Bahar-Vize

Sistem Gereksinimleri: Uygulama Gelistirme: PIC Mikroislemcisinin Programlanmasi: PIC Programlama Örnekleri -1

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ BİTİRME ÖDEVİ

ROBOT KOL BİTİRME PROJESİ DÖNEM İÇİ RAPORU

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

EasyPic 6 Deney Seti Tanıtımı

TIMER. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

8 Ledli Havada Kayan Yazı

ADC: Anolog-Digital Çevirici

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ BİTİRME ÖDEVİ

Hacettepe Robot Topluluğu

HUNRobotX - Makaleler - Hız Ayarlı Çoklu DC Motor Kontrolü. Makaleler Hız Ayarlı Çoklu DC Motor Kontrolü

PIC 16F877 nin kullanılması

Mikroişlemciler. Microchip PIC

BÖLÜM 1

PD103 BUTON LED UYGULAMA DEVRESİ UYGULAMA ÖRNEKLERİ MALZEME LİSTESİ

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

Yrd. Doç.Dr. Bülent ÇOBANOĞLU. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 1

DERS 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME

PIC Mikrodenetleyicileri

T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ

T.C FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

3.2 PIC16F84 Yazılımı PIC Assembly Assembler Nedir?

BÖLÜM 1: MİKRODENETLEYİCİLER

BİLİŞİM TEKNOLOJİLERİ

PIC Mikro denetleyiciler ve Programlama. Öğr.Gör.Bülent ÇOBANOĞLU

P IC 16F877. Program. Belleği

DENEY-4. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

ÖĞRENME FAALİYETİ-1 ÖĞRENME FAALİYETİ 1

Analog Sayısal Dönüşüm

ÖĞRENME FAALİYETİ-1 1. MİKRODENETLEYİCİ PROGRAMI YAZMA

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKİ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) ENDÜSTRİYEL OTOMASYON TEKNOLOJİLERİ

5.Eğitim E205. PIC16F628 ve PIC16F877 Hakkında Genel Bilgi IF THEN ELSE ENDIF HIGH-LOW GOTO-END- PAUSE Komutları Tanıtımı ve Kullanımı PIC16F628:

Bu yürütme, Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

DENEY-5. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

T.C. MİLLİ EĞİTİM BAKANLIĞI MEGEP (MESLEKÎ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ MİKRODENETLEYİCİ-3

PIC MCU ile UYGULAMALAR-II

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

Transkript:

Mikro denetleyicili Uygulama devresi bileşenleri Bir PIC mikro denetleyici ile uygulama gerçekleştirebilmek için ; Besleme devresi, Reset sinyali, Osilatör devresi, Uygulama devresi elemanlarına İhtiyaç vardır.

Besleme Devresi ve Bacak Bağlantıları Besleme geriliminin bağlandığı bacaklar Vdd (PIC16F84 için 14 nolu bacak, PIC16F877 için ise 11 ve 32 nolu iki farklı bacak) isimli bacaklardır. Toprak/Şase bağlantısı için ise Vss (PIC16F84 için 5 nolu bacak, PIC16F877 için ise 12 ve 31 nolu iki farklı bacak) isimli bacaklar kullanılır. Şekildeki 16F877 entegresinin bacak bağlantılarına bakıldığında besleme ve toprak girişleri, iki yanda birer tane olacak şekilde konumlandırılmıştır. Vdd' ile 'Vss' uçları arasına devreye ilk gerilim uygulaması anında (PIC'e enerji verme sırasında) olabilecek gerilim dalgalanmalarının sebep olabileceği arızaları önlemek amacıyla 0,1 mikrof'lık bir 'dekuplaj kondansatörü' bağlanır.

Reset Uçları ve Devresi: PIC mikro denetleyicilerin MCLR ucu (16F84 için 4 nolu, 16F877 için 1 nolu bacak) reset bacağıdır. Bacak bağlantılarında MCLR üzerinde bulunan çizgi, lojik 0 da iken reset işleminin gerçekleştiğini göstermektedir. Bu bacak lojik 0 (0V) seviyesine çekildiğinde program kesilir ve tekrar lojik 1 (+5V) seviyesine gelince program ilk satırdan itibaren çalışmaya başlar. Reset devresi aşağıdaki gibi kurulur. MCLR pininin yanlışlıkla lojik '0' değeri ile aktif hale gelmesini engellemek amacıyla bir direnç üzerinden + besleme ucuna bağlanması gereklidir. Bağlandığı ucu sabit olarak lojik '1' değerinde tutan bu direnç, 'pull-up' direnci olarak isimlendirilir. PIC microcontrollers aşağıdaki durumlarda RESET oluşur: PIC e ilk güç verildiğinde (POR Power On Reset), MCLR girişi mantıksal 0 yapıldığında, Watchdog zamanlayıcısında taşma olduğunda.

Osilatör devresi ve bağlantısı: (1/2) PIC bir mikroişlemcili sistem olduğundan, komutları işleyebilmesi için saat(clock) sinyali dediğimiz, frekansı belli olan bir kare dalga işarete ihtiyaç duyar. PIC mikro denetleyicilerin saat sinyali girişi için kullanılan iki ucu vardır; bunlar OSC1 (16F84 için 16. pin, 16F877 için 13. pin olmak üzere) ve OSC2 (16F84 için 15. pin, 16F877 için 14. pin olmak üzere) uçlarıdır. Bu uçlara farklı tipte osilatörlerden elde edilen clock sinyalleri uygulanabilir. Seçilecek osilatör tipi Pic in kontrol ettiği devrenin hız gereksinimine bağlı olarak seçilir. Clock osilatör tipleri şunlardır: RC: Direnç/Kondansatör XT: Kristal veya seramik resonetör HS: Yüksek hızlı kristal veya seramik resonetör LP: Düşük frekanslı kristal

Osilatör devresi ve bağlantısı: (2/2) Kristal Osc. genelde C1 ve C2 kondansatörünün birbirine eşit olması gerekir. Seramik Resonator

Konfigürasyon bitleri ve işlevleri Power-up timer (PWRTE) Osilatör start-up timer BOR (Brown Out Reset) Yonga içindeki bir RC osilatör devresi ile belirli bir frekansta çalışması denetlenen WDT (Watch Dog Timer) Kesmeler Kod koruma güvenliği Id yerleşimleri Güç harcamasının azaltılması istendiği durumlar için uyku (sleep) modu İsteğe bağlı osilatör seçenekleri: RC/ XT/ HS/ LS Devre içi seri programlama (iki pin ile seri olarak programlanabilme) Devre içi düşük gerilimle programlama Devre içi hata arayıcı (Debugger) Not: Kullanılan osilatör tipi programlama esnasında PIC içerisinde bulunan konfigürasyon bitlerine yazılmalıdır. CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF CONFIG 0x3F31; CONFIG b 11111100110001 CONFIG(UNPROTECT & LVPDIS & BORDIS & MCLREN & WDTDIS & PWRTEN & INTIO); //C için CONFIG( HS & WDTDIS & PWRTDIS & BORDIS & LVPDIS & WRTEN & DEBUGDIS & UNPROTECT ); // C için Not: Program belleğinin 2007h adresinde olup 14 bittir. Bu bitlere sadece PIC programlama aşamasında erişilebilmektedir.

Konfigürasyon bitleri ve işlevleri CP1,CP0 : Flash Program Memory Code Protection Bits. All of the CP1:CP0 pairs have to be given the same value to enable the code protection scheme listed. 11 : Code protection off 10 : 1F00h to 1FFFh code protected 01 : 1000h to 1FFFh code protected 00 : 0000h to 1FFFh code protected DEBUG : In-Circuit Debugger Mode 1 : In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins. 0 : In-Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger. WRT : Flash Program Memory Write Enable 1 : Unprotected program memory may be written to by EECON control 0 : Unprotected program memory may not be written to by EECON control CPD : Data EEPROM memory Code Protection 1 : Code protection off 0 : Data EEPROM memory code protected LVP : Low Voltage In-Circuit Serial Programming Enable bit 1 : RB3/PGM pin has PGM function, low voltage programming enabled The high voltage programming mode is always available, regardless of the state of the LVP bit. 0 : RB3 is digital I/O, High Voltage on MCLR must be used for programming BODEN : Brown-out Reset Enable bit 1 : BOR enabled 0 : BOR disabled PWRTE : Power-up Timer Enable bit 1 : PWRT disabled 0 : PWRT enabled WDTE : Watchdog Timer Enable bit 1 : WDT enabled 0 : WDT disabled FOSC1,FOSC0 : Oscillator Selection bits 11 : RC : Resistor/Capacitor oscillator ( Less than 1MHz ) 10 : HS : High Speed Crystal/Resonator oscillator ( 4MHz to 20MHz ) 01 : XT : Crystal/Resonator oscillator ( Less than 4MHz ) 00 : LP : Low Power Crystal oscillator ( Less than 200KHz )

I/O Portları: Analog/Digital Seçimi 16F877 de 8 tane 10 bitlik A/D çevirme kanalı bulunur. A / D kanalları için RA4 hariç diğer A ve E portları kullanılır. A/D çevirme işlemi 4 adet kaydediciyle yapılmaktadır. Aşağıda ilgili register lar ve adresleri gösterilmiştir. ADRESH 0x1E ; A / D sonuç kaydedicisi (high register) ADRESL 0x9E ; A / D sonuç kaydedicisi (low register) ADCON0 0x1F ; A / D kontrol kaydedicisi 0 ADCON1 0x9F ; A / D kontrol kaydedicisi 1 ADFM biti dönüştürme işlemi sonunda 10 bitlik sayının formatını belirler.1: Sayı sağa kaydırılır.0: Sayı sola kaydırılır. PCFG3 PCFG0 bitleri A/D portlarının durumunu belirler. Tümü 0 yapılırsa bu durumda 8 tane analog kanal seçilmiş olur ve her kanalın referans gerilimi VDD olarak ayarlanır.

I/O Portları: Analog/Digital Seçimi ADCON1, PORTA portunu dijital giriş çıkış yapmaya izin verir. Eğer bunu yapmasaydık PORTA analog olacak ve dijital olarak giriş ve çıkış işlemleri yapamayacaktık. Ayrıntılı bilgi için lütfen datasheet e ve ileride anlatacağımız ADC konusuna göz atınız.

Gecikme Programları Örnek 1: Tek bir döngü ile yaklaşık 1000 saykıllık bir gecikme sağlayacak programı yazınız. Çözüm: Toplam Gecikme= Döngü dışındakiler + SAYAC* Döngü içindekiler = 1+1+ (249*4) + 2=1000 saykıl Tabii 1000 saykıllık gecikme programının ne kadar sürelik bekleme sağlayacağı PIC mikro denetleyicinin çalışma frekansına bağlıdır. 10 MHz lik PIC MCU için toplam gecikme; 1000*0.1µS*4=400µS lik bir gecikme sağlayacaktır. DON MOVLW d 250 ;1 saykıl MOVWF SAYAC ;1 saykıl DECFSZ SAYAC, F ;1*250 NOP ;1*249 GOTO DON ;2*249 +1

İçiçe Gecikme Programları Tek bir döngü ile genelde istediğimiz zaman gecikmesini elde edemeyebiliriz. Çünkü bir kaydedici içine yazabileceğimiz en büyük değer ondalık olarak 255 tir. Bu da 255 ten fazla tekrar yaptıramayacağımız anlamına gelir. Bu durumda iç içe döngüler kullanarak bu sayıyı çok çok büyütebiliriz. İç içe döngüler kullandığımızda hem tekrarlanan komut sayısı artacağından döngünün bir adımının harcadığı süre uzayacak, hem de içi içe döngüler sebebiyle iki (veya daha fazla) döngünün çarpımı kadar sayıda tekrar olabilecektir. TG= 4+5*255+3*255*255+2 = 196356 saykıl Bu programda yaklaşık toplam gecikme 3*SAYAC1*SAYAC2 değeri kadardır. Yaklaşık toplam gecikme = 3*255*255 kadardır. 1MHz lik dahili sat saykılında bu süre yaklaşık 195µS lik bir gecikme sağlayacaktır. İç içe döngüleri çoğaltarak gecikmenin süresini

Örnek 1: Bir gecikme alt programı kullanarak PORTB ye bağlı 8 ledi dörtlü olarak (ilk önce LSB tarafı daha sonra MSB tarafı olacak şekilde) belirli zaman aralıkları ile yakıp, söndüren bir programı gerçekleştiriniz

Zamanlayıcı kullanan Gecikme Programı TMR0 ve Watchdog Timer Devresi PSA ; 0 ise TMR0 1 ise WDT TOCS; 0 ise dahili komut saykılı 1 ise harici digital sinyal

Frekans Bölme(Prescaler) Oranı: Bir PIC te OSC1 girişinden girilen işaretin frekansının dörde bölündüğü ve bu bölünmüş işaretin OSC2 çıkışından alınabildiğinden bahsedilmişti. PIC te bir komutun işletilmesi için geçecek zaman, OSC1 girişinden verilen sinyalin dörde bölümü ile bulunan frekansla belirlenir. Örneğin, OSC1 girişine 4MHz lik bir osilatör bağlanmışsa, bu işaret PIC içinde dörde bölünür ve dahili komut sinyalinin frekansı 1MHz olur. Bu 1MHz lik işaret PIC in OSC2 çıkışından alınabilir. Bu örnekte, dahili komut frekansının 1MHz olması, 1 saniye içinde 1 milyon tane komut işletilebildiği anlamı taşır. Diğer bir deyişle, 1 komutun işletilebilmesi için geçecek süre saniyenin milyonda biri, yani 1μs olacaktır. Frekans bölme oranı OPTION kaydedicisinin ilk üç biti tarafından belirlenir. TMR0 daki artışın frekans bölme oranı ile çarpılması bir komut zamanı verir. Mesela frekans bölme oranı 1/4 ise, bir komut zamanı TMR0 daki artışın dörtte birine denk geliyor demektir. Bu da her 4 komut zamanında bir, TMR0 içeriği 1 sayı artıyor anlamına gelir. Ornek: Osilator frekans. 8MHz olan bir PIC için, OPTION kaydedicisindeki PS2, PS1 ve PS0 bitlerinin değerleri sırasıyla «101» şeklindedir. TMR0 zamanlayıcısının 00h değerinden saymaya başladığı kabulü ile bu PIC kaç saniye sonra TMR0 tarafından bir kesme oluşturur? Cozum: 8 MHz saat frekansı ise peryot, TOSC =1/fosc =0.125 µs PS2:PS0 = 101 olduğundan Prescaler= 1:64 Kesme gecikmesi = 4 *0.125 µs * 64 *(256 0) = 8192 µs = 8 ms.

Frekans Bölme (Prescaler) Oranı: MOVLW b 11010111 ; TMRO, dahili sinyal kaynağı ve prescaler:111 seç MOVWF OPTION_REG

TMR0 ile Gecikme TMR0 sayıcısının FF (255) den 00 a geçmesi TMR0 kesmesine sebep o lur ve bu kesme sonucunda INTCON kesme kaydedicisinin 2. (T0IF) biti 1 değerini alır. Bu kesmeyi kullanabilmek için daha öncesinde INTCON kaydedicisinin TOIE bitinin 1 yapılarak kesmeye izin verilmesi gerektiği unutulmamalıdır. TMR0 hem yazılabilir, hem okunabilir bir sayıcıdır. OPTION kaydedicisi ile belirlenebilen frekans bölme seçeneği vardır. Saymaya ana programda, alt programlarda ve kesme alt programlarında da devam eder. Bu bir avantajdır. En önemli özelliği ise, saydığı değer FFh sayısından 00h sayısına geçerken oluşan taşmada, INTCON kaydedicisin de T0IF bayrağı 1 değerini alır ve bu değer kullanılarak bir kesme alt programı çalıştırılabilir. Öncesinde TOIE biti <1> yapılarak TMRO da taşma olması halinde kesmeye izin verilmesi sağlanmalıdır. Tosc=1/Fosc Kesme gecikmesi (Overflow time)= 4 *TOSC * Prescaler *(256 TMR0 başlangıç değeri) Bu formülden TMR0 başlangıç değeri de çekilebilir. O zaman TMR0 = 256 (Gecikme zamanı)/(4 *TOSC* Prescaler)

TMR0 Gecikme Alt programı Örnek2: Osilatör frekansı 4MHz olan bir PIC için, OPTION kaydedicisindek i PS2, PS1 ve PS0 bitlerinin değerleri sırasıyla b 111 şeklindedir. TMR0 z amanlayıcısının sıfır(0) değerinden saymaya başladığı kabulü ile bu PIC kaç s aniye sonra TMR0 tarafından bir kesme oluşturur? Çözüm: 4 MHz saat frekansı ise peryot, TOSC =1/fosc =0.25 µs PS2:PS0 = 111 olduğundan Prescaler= 1:256 Kesme gecikmesi (Overflow time) = 4 *0.25 µs * 256 *(256 0) = 65536 µs =65.536ms MOVLW b 11010111 ;TMR0, DAHİLİ SİNYAL,1:256 MOVWF OPTION_REG GECIKME DON CLRF TMR0 BTFSS INTCON, TOIF GOTO DON BCF INTCON, TOIF RETURN

Uygulama Devreleri için başka bir gecikme programı:1 sn lik gecikme programı Eğer 32.768 Hz lik bir kristal seçilirse ¼*32.768=8.192 Hz lik bir çalışma frekansı elde edilebilir. Buda bir LED i 1 sn süre ile yakmak için 8192 kez komut saykılı saymak gerekir. OPTION kaydedicisinin PS2:PS0 bitleri ile bu sayı 2 ile 256 arasında bölünür. Prescaler 256 seçilirse 8192/256=32Hz yapar. Bu hız seçildiğinde 1 saniyede 32 sinyal üretilir. Böylece TMR0 ı 32 ye kadar saydırdığımızda LED i 1 sn gecikme ile yakabiliriz. MOVLW B 00000111 MOVWF OPTION_REG ;PRESCALER : 1/256 ;********************************************************* ;32/32=1 Saniyelik gecikme programı BEKLE DON CLRF TMR0 ;TMR0 başlat MOVF TMR0,W SUBLW.32 ;TMR -32 ;TMR0 değerini W taşı BTFSS STATUS,Z ; Sonuc 0 mı? GOTO DON ;32 kez don RETLW 0 ;W içeriğini 0 layarak ana programa don. ;*********************************************************

Örnek 3: 4 Bitlik Binary(ikili) Geri Sayıcı(15-0) BASLA TEST: BEKLE: DON LIST P=16F84A #INCLUDE<P16F84A.INC> CLRF PORTB ;PORTB temizlenir BSF STATUS, 5 ;BANK1 e geçilir MOVLW b'11010111' ;TMR0, DAHİLİ SİNYAL,1:256 MOVWF OPTION_REG MOVLW h'0f' MOVWF TRISA ;PORTA nın tüm uçları giriş CLRF TRISB ;PORTB nin tüm uçları çıkış olacaktır BCF STATUS, 5 ;BANK0 a geçilir MOVLW d'16' MOVWF PORTB BTFSC PORTA,0 GOTO TEST CALL BEKLE ;65,53ms CALL BEKLE ;65,53+65,53=131ms lik gecikme DECFSZ PORTB,F GOTO TEST GOTO BASLA ;Başa dön ;gecikme alt programı CLRF TMR0 BTFSS INTCON,T0IF GOTO DON BCF INTCON,T0IF RETURN END PORTB ye bağlı ledlerde binary sayım:

Çevrim Tabloları Ve 7 Segment Display Uygulaması Çevrim / Bakış tabloları ile bir kodu başka bir koda dönüştürmek için kullanılırlar. Örneğin PIC mikro denetleyiciyi portlarına bağlı 7 Segment display / gösterge üzerinde hexadecimal (onaltılık tabandaki) sayıları göstermek, sıcaklık dönüşümü(derecefahrenayt gibi) yapma, sinus, kosinus alma gibi işlemlerde dönüşüm/çevrim tabloları kullanılar. 7 Segment display kodlaması için aşağıdaki tablo kullanılır.

Çevrim tablosunda uygun kodu seçmek için program sayıcıyı (PCL Program Counter), seçilen kodu ana programa göndermek için de RETLW komutunu kullanırız Birden fazla display bağlantısı Çevrim tablosundaki verilere sıralı olarak erişerek PCL ye yani o anki adrese istediğimiz sayıyı ekleyerek istediğimiz adrese / elemana ulaşırız. PCL nin o anki değerine ADDWF ile istediğimiz sayıyı ekleriz. Kullanım Şekli: ADDWF PCL, F İstediğimiz değeri geri döndürecek komut ise RETLW (RETLW h 3F gibi) dir. RETLW komutu ile alt alta yazılan sayı değerleri dt komutu yanyana yazılabilir. DIZI ADDWF PCL, F dt h 3F, h 06, h 5b,.

Örnek 4: 7 segment display de 5 sayısını gösteren programı yazınız.

Uygulama-5: 0 dan 9 kadar olan sayıları PORB uçlarına bağlı 7 segment display de gösteren programı gerçekleştiriniz. LIST P=16F84A #INCLUDE <P16F84A.INC> SAYAC1 EQU h'0d' BSF STATUS,5 ;BANK1 e geçiş yap CLRF TRISB ;PORTB nin tüm uçları çıkış seçildi BCF STATUS,5 ;BANK0 a geçiş yap CLRF PORTB ;PORTB yi temizle Basla MOVLW h'00' ;W kaydedicisine h'00' değerini yükle MOVWF SAYAC1 DON MOVF SAYAC1,W CALL DIZI MOVWF PORTB ; W içeriğini PORTB ye aktar INCF SAYAC1,F ; SAYAC1 değerini artır GOTO DON DIZI ADDWF PCL, F ;W içeriğini PCL ye aktar RETLW b'00111111' ;W ya 0 değeri yüklendi RETLW b'00000110' ;W ya 1 değeri yüklendi RETLW b'01011011' ;W ya 2 değeri yüklendi RETLW b'01001111' ;W ya 3 değeri yüklendi RETLW b'01100110' ;W ya 4 değeri yüklendi RETLW b'01101101' ;W ya 5 değeri yüklendi RETLW b'01111101' ;W ya 6 değeri yüklendi RETLW b'00000111' ;W ya 7 değeri yüklendi RETLW b'01111111' ;W ya 8 değeri yüklendi RETLW b'01101111' ;W ya 9 değeri yüklendi END

Uygulama-6: 0 dan F ileri sayıcı (PIC16F877 için) LIST P=16F877 #INCLUDE <P16F877.INC> SAYAC1 EQU h'21' BSF STATUS,5 ;BANK1 e geçiş yap CLRF TRISB ;PORTB nin tüm uçları çıkış seçildi BCF STATUS,5 ;BANK0 a geçiş yap CLRF PORTB ;PORTB yi temizle Basla MOVLW h'00' ;W kaydedicisine h'00' değerini yükle MOVWF SAYAC1 DON MOVF SAYAC1,W CALL DIZI MOVWF PORTB ; W içeriğini PORTB ye aktar INCF SAYAC1,F GOTO DON DIZI ADDWF PCL, F ;W içeriğini PCL ye aktar dt 0x3F,0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F,0x6F dt h'77',h'7c',h'39',h'5e',h'79',h'71' END

Uygulama-7: Sürekli bir şekilde F den 0 a geri sayıcı (PIC16F877 için) LIST P=16F877 #INCLUDE <P16F77.INC> SAYAC1 EQU h'21' BSF STATUS,5 CLRF TRISB BCF STATUS,5 CLRF PORTB BASLA MOVLW h'10' MOVWF SAYAC1 DON MOVF SAYAC1,W CALL DIZI MOVWF PORTB DECF SAYAC1,F GOTO DON DIZI ADDWF PCL, F GOTO BASLA dt 0x3F,0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F,0x6F dt h'77',h'7c',h'39',h'5e',h'79',h'71' END

Uygulama-8: 9 Dan 0 A Geri Sayıcı (Alternatif) LIST P=16F84 INCLUDE "P16F84.INC" SAYAC EQU h'0c' CLRF PORTB CLRF SAYAC BSF STATUS,5 CLRF TRISB BCF STATUS,5 BASLA INCF SAYAC,F MOVF SAYAC,W SUBLW d'10' ;W=10-W BTFSS STATUS,Z GOTO DISPLAY MOVLW h'00' MOVWF SAYAC GOTO DISPLAY GOTO BASLA DISPLAY CALL DIZI MOVWF PORTB GOTO BASLA DIZI ADDWF PCL,F RETLW b'00111111';0gfedcba RETLW b'00000110' RETLW b'01011011' RETLW b'01001111' RETLW b'01100110' RETLW b'01101101' RETLW b'01111101' RETLW b'00000111' RETLW b'01111111' RETLW b'01101111' END

Uygulama 9: F den 0 a kadar Geri Sayıcı (Alternatif) LIST P=16F84 INCLUDE "P16F84.INC" SAYAC EQU h'0c' CLRF PORTB CLRF SAYAC BSF STATUS,5 CLRF TRISB BCF STATUS,5 BASLA INCF SAYAC,F MOVF SAYAC,W SUBLW d'16' ;W=16-W BTFSS STATUS,Z GOTO DISPLAY MOVLW h'00' MOVWF SAYAC GOTO DISPLAY GOTO BASLA DISPLAY DIZI CALL DIZI MOVWF PORTB GOTO BASLA ADDWF PCL,F dt h'3f',h'06',h'5b',h'4f',h'66',h'6d', dt h'7d',h'07',h'7f',h'6f',h'77',h'7c', dt h'39',h'5e',h'79',h'71' END

Uygulama 10: 0 dan F ye İleri Sayıcı Gecikmeli SAYAC SAYAC2 SAYAC3 DON BEKLE DON1 DON2 DIZI LIST P=16F84 INCLUDE "P16F84.INC" EQU h'0c' EQU h'0d' EQU h'0e' CLRF PORTB BSF STATUS,5 CLRF TRISB BCF STATUS,5 CLRF SAYAC MOVF SAYAC,W CALL DIZI MOVWF PORTB CALL BEKLE INCF SAYAC,F GOTO DON MOVLW h'ff' MOVWF SAYAC2 MOVLW h'ff' MOVWF SAYAC3 DECFSZ SAYAC3,F GOTO DON2 DECFSZ SAYAC2,F GOTO DON1 RETURN ADDWF PCL,F dt h'3f',h'06',h'5b',h'4f',h'66',h'6d', dt h'7d',h'07',h'7f',h'6f',h'77',h'7c', dt h'39',h'5e',h'79',h'71

Uygulama 11: Trafik Işığı Programı K S Y K S Y B7 B6 B5 B4 B3 B2 B1 B0 0 Y S K 0 Y S K 41 1 1 23 1 1 1 14 1 1 32 1 1 1

Kesmeler Kesme (Interrupt), mikro denetleyicinin gerçekleştirdiği işleme bakmaksı zın belirli durumların/olayların olması durumunda isteklere / olaylara ce vap verilmesini sağlayan mekanizmadır. Bu mekanizma, mikro denetleyi ci ile çevre birimleri arasındaki bağlantıları oluşturması ve ilişkileri düzenl emesi nedeniyle çok önemli bir yere sahiptir. Oluşan her kesme programı ile programın normal işlenme süreci deği ştirilerek program durdurulur ve kesme ile ilgili rutin/altprogram gerçekl eştirildikten sonra ana programın işlenmesi kalınan noktadan devam edilir PIC16F84 mikro denetleyicisi dört farklı kaynaktan kesme alabilir. Bunlar;

RB0/INT Pini Harici Kesme Örneği RB0/INT pini harici kesmesi kenar tetiklemelidir. Yani bu uçtaki sinyalin 1 d en 0 a veya 0 dan 1 e geçişi kesmeye sebep olur. Kesmenin yükselen kenar da mı yoksa düşen kenarda mı gerçekleşeceğine programcı karar verir. Bu nun için OPTION_REG kaydedicisinin INTEDG biti kullanılır. INTEDG biti 1 ise kesme yükselen kenarda, 0 ise düşen kenarda gerçekleşir. INT kesmesini kullanabilmek için INTCON kaydedicisinin INTE biti 1 yapılar ak kesmeye izin verilmelidir. INT kesmesi oluştuğunda INTCON kaydedici sinin INTF biti 1 olur. Programda kesme alt programı içerisinde INTF=0 yapılmalıdır.

Uygulama-12: PORTB nin RB0/INT ucundan gelen bir kesme gerçekleşince kesme alt progr amında PORTA ya bağlı LED leri yakan programı yazalım Program Algoritması: RB0/INT ucunu giriş olarak seç, OPTION_REG kaydedicisinin INTEDG biti ile düşen veya yükselen kenar tetiklemesini seç, INTCON kaydedicisinin GIE ve INTE bitleri 1 yapılarak kesmeye izin verilir, Kesme oluşup, program kesme alt programına dallandığında INTF bitini 0 yap.

PORTB Değişim Kesmesi Örneği PORTB nin 4 ve 7. bitlerinde (RB4- RB7) bitlerinde bir değişim meydana gelmesi PORTB değişim kesmesine sebep o lur. Bu kesmeyi aktif hale getirmek için INTCON kaydedicisinin RBIE bitinin 1 ya pılması gerekir. PORTB değişim kesmesi oluştuğunda RBIF=1 olur ve program ke sme alt programına dallanır. Program RBIF bitini otomatik sıfırlayamadığı için kesme alt programı içerisinde RBIF=0 yapılır. UYGULAMA - 9 : PORTB nin RB4- RB7 uçlarına bağlı butonlardan bir veya bir kaçına basıldığında PORTA nın ilk 4 bit ini yakan program. Program Algoritması: PORTB nin 4, 5, 6 ve 7. Bitlerini giriş olarak seç, INTCON kaydedicisinin GIE ve RBIE bitini 1 yaparak PORTB değişim kesmesi ne izin ver. Kesme oluşup, program kesme alt programına dallandığında RBIF bitini 0 yap

Uygulama-13: PORTB nin RB4-RB7 uçlarından gelen bir kesme gerçekleşince kesme alt progr amında PORTA ya bağlı LED leri yakan programı yazalım BASLA KESME BEKLE DON1 DON2 LIST P=16F84 INCLUDE "P16F84.INC" CBLOCK H'0C' SAYAC1,SAYAC2 ENDC ORG 0X00 GOTO BASLA ORG 0X04 GOTO KESME BSF STATUS,5 ;BANK1 e geçiş yap CLRF TRISA ;PORTA çıkış seçildi MOVLW 0XFF MOVWF TRISB ;PORTB GIRIŞ BCF STATUS,5 ;BANK0 a geçiş yap CLRF PORTA ;PORTA ya bağlı ledleri söndür BSF INTCON,RBIE;RB değişim kesmesine izin ver BSF INTCON,GIE ;Tüm kesmelere izin ver GOTO BASLA MOVLW 0X0F MOVWF PORTA CLRF INTCON CALL BEKLE RETFIE MOVLW 0X05 MOVWF SAYAC1 MOVLW 0X06 MOVWF SAYAC2 DECFSZ SAYAC2,F GOTO DON1 DECFSZ SAYAC1,F GOTO DON2 RETURN END