Komutların İşlem Süresi

Benzer belgeler
Komutların İşlem Süresi

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

PIC MCU da 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

Mikro denetleyicili Uygulama devresi bileşenleri

BÖLÜM 2 INTERRUPT ve TIMER İŞLEMLERİ

PIC MCU ile UYGULAMALAR

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

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

KONFİGÜRASYON BİTLERİ

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

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.

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

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

LCD (Liquid Crystal Display )

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

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

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

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

BÖLÜM 3 CAPTURE/COMPARE/PWM ve TUŞ TAKIMI İŞLEMLERİ

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.

# 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

BÖLÜM 3 3. PIC 16F8X KOMUTLARI 3.1.KULLANILAN SEMBOLLER: 3.2.KOMUTLAR VE KULLANIM Ö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 13 PIC 16F84 ile DONANIM SAYICI KULLANIMI İÇERİK KESME

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

Hacettepe Robot Topluluğu

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

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

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

LCD (Liquid Crystal Display)

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

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

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

Hacettepe Robot Topluluğu

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

PIC TABANLI, 4 BASAMAKLI VE SER

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

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

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

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

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

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Ü

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

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

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

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Ü

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

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

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

Mikroişlemciler. Microchip PIC

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

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

KESME (INTERRUPT) NEDİR?

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

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

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

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

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

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İ

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

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

PROGRAMLANABİLİR ZAMANLAYICI

BÖLÜM 1

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

PIC Mikrodenetleyicileri

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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İ

8 Ledli Havada Kayan Yazı

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İ

Microprocessors and Programming

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

HUNRobotX - Makaleler - Gecikme Kodları Hazırlama ve Gecikme Rutini Hazırlayıcı. Makaleler Gecikme Kodları Hazırlama ve Gecikme Rutini Hazırlayıcı

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İ

BÖLÜM 7 XTAL2 XTAL1. Vss. Şekil Mikrodenetleyicisi osilatör bağlantı şekli. Bir Makine Çevrimi = 12 Osilatör Periyodu

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

ONDOKUZ MAYIS ÜNİVERSİTESİ

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

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

MİKRO DENETLEYİCİLER 1 DERS NOTLARI (Final) Prof. Dr. Hakan Ündil Güz

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İ

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

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

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

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

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

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

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

GAZİ MESLEK YÜKSEK OKULU ELEKTRONİK TEKNOLOJİSİ

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Ü

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ PROJE III. Pic16F84 ile Dijital Saat ve Termometre. Hazırlayan: Tamer Tömekçe

UYGULAMA 1 24V START CPU V LO. Verilen PLC bağlantısına göre; START butonuna basıldığında Q0.0 çıkışını aktif yapan PLC programını yazınız.

PIC16F877A nın Genel Özellikleri

Hacettepe Robot Topluluğu

PIC MCU ile UYGULAMALAR-II

Transkript:

Komutların İşlem Süresi PIC lerde ŞARTSIZ dallanma komutları (GOTO, CALL, RETURN gibi ) hariç tüm Assembly dili komutları 1 saat saykılı (cycle) çeker. ŞARTLI dallanma komutları ise normalde 1 saat saykılı çekerken şart sağladığı durumda 2 saat saykılı çeker Hazırlayan: Dr.Bülent ÇOBANOĞLU 1

PIC in Bir Komutu İşleme Süresi Örnek 1: a) 10 MHz b) 16MHz c) 4 MHz saat frekansına sahip PIC MCU için bir komutu işleme süresi kaç sn dir. ( Farzedinki frekans ön bölücü değerleri yoktur.) Çözüm: Örnek 2: a) 10 MHz b) 16MHz saat frekansına sahip PIC MCU için bir komutu işleme işleme süresi kaç sn dir. ( Farzedinki frekans ön bölücü değeri 1/64 ) Çözüm: Not: Komutların işlem süresi MPLAB simülatöründe Stopwatch ile izlenebilir. YRD.DOC.Dr.BÜLENT ÇOBANOĞLU

KARŞILAŞTIRMA KOMUTLARI İLE TEKRARLI İŞLEMLER (SUBWF, SUBLW KOMUTLARI) Hazırlayan: Dr.Bülent ÇOBANOĞLU 3

Aşağıdaki program kaç saat saykılında çalışır? Ve 4MHz lik bir MCU için çalışma süresini hesaplayınız? ;O dan 9 a ARTAN SAYICI LIST P=16F877 #INCLUDE<P16F877.INC> SAYAC EQU 20H ;16F84 İÇİN 0CH OLACAK 1 CLRF PORTB ;PORTB temizlenir 1 BSF STATUS, 5 ;BANK1 e geçilir 1 CLRF TRISB ;PORTB nin tüm uçları çıkış olacaktır 1 BCF STATUS, 5 ;BANK0 a geçilir DON: SON 1 CLRF SAYAC MOVF SAYAC,W MOVWF PORTB INCF SAYAC,F MOVLW.10 SUBWF SAYAC,W BTFSS STATUS,Z GOTO DON GOTO SON END 1 1 1 1 1 1 2 TG= Donguİci*Sayac+DonguDisi= =8*10+5+1=86 saykıl Hazırlayan: Dr.Bülent ÇOBANOĞLU 4

Gecikme Programları: 4Mhz, 1 msn lik gecikme YRD.DOC.Dr.BÜLENT ÇOBANOĞLU

Gecikme Programları Örnek 2: 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+1=1001 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. 4 MHz lik PIC MCU için toplam gecikme; 1000*1/4µS*4=1000µS=1msn lik bir gecikme sağlayacaktır. BEKLE MOVLW d 249 ;1 saykıl MOVWF SAYAC ;+1 saykıl DON NOP ;+1*249 DECFSZ SAYAC, F ;+1*249 +(1) GOTO DON ;+2*248 RETURN ;+2 TG=249+249+2*248+3+2(RETURN)+2(CALL)= 1001 saykıl Hazırlayan: Dr.Bülent ÇOBANOĞLU 6

Gecikme Programları: 4Mhz, 100 msn lik gecikme YRD.DOC.Dr.BÜLENT ÇOBANOĞLU

ÖRNEK 3: PORTB ye bağlı LEDleri sırası ile LSB- MSB taraflarını yakan programdaki BEKLE alt programı ne kadarlık bir gecikme sağlar? Hazırlayan: Dr.Bülent ÇOBANOĞLU 8

İç içe Döngüler ile Yapılan Gecikme 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. Örnek 2. İç içe döngülü bir gecikme alt programı ; Bu programda yaklaşık TG= 3*SAYAC1*SAYAC2 TG = 3*255*255 kadardır. MHz lik dahili saat saykılında bu süre yaklaşık 195µS lik bir gecikme sağlar. Hazırlayan: Dr.Bülent ÇOBANOĞLU 9

İç içe döngülü gecikme Programı: 4Mhz, 1 Dakikalık gecikme YRD.DOC.Dr.BÜLENT ÇOBANOĞLU

Zamanlayıcı kullanan Gecikme Programları: TMR0 Modülü ve TMR0 Kesmesi PSA ; 0 ise TMR0 1 ise WDT TOCS; 0 ise dahili komut saykılı 1 ise harici digital sinyal TMR0 blok diyagramı TMR0 kesmesi, TMR0 kaydedicisinin değeri FFh`dan 00h`ye geçtiğinde üretilmektedir. Bu TMR0 taşması sonucunda TOIF bayrağı (INTCON<2>) lojik1 olur. Kesme istenmiyorsa, TOIE bitinin (INTCON<5>) temizlenmesi ile gizlenebilir. Yeni kesme alınabilmesi için (INTCON<5>) TOIF bayrağı, yazılımdan silinmelidir. Hazırlayan: Dr.Bülent ÇOBANOĞLU 11

TMR0 Donanımsal Yapısı Timer0 (TMR0) modülü timer/sayaç aşağıdaki özelliklere sahiptir. 8 bitlik dir. Okunabilir ve yazılabilir, 8 bitlik programlanabilir prescaler., Dahili veya harici saat ayarı, FFh` tan 00h`ye taşma üzeri kesme, Dış saatin kenar seçimi, Hazırlayan: Dr.Bülent ÇOBANOĞLU 12

Timer 0 ile ilgili Kaydediciler Timer modu; TOCS biti (OPTION<5>) biti lojik 0 atandığında TMR0 kaydedicinin içeriği dahili osilatör frekansı ile artar. Eğer temizlenmesiyle seçilir. Timer modunda Timer0 modülü her bir komut sürecini uzatır. Eğer, Sayaç modu kullanılacaksa TOCS biti (OPTION<5>) lojik 1 olarak atanır ve RA4 girişinden dışarıdan gelen değişim ile TMR0 kaydedici içeriği artar. Bu modda, artım için yükselen ve düşen kenar tetiklemesi TOSE (OPTION<4>) tarafından belirlenmektedir. TOSE bitinin temizlenmesi ile yükselen sınırları seçilmiş olunur. TMR0 kesmesi, TMR0 kaydedicisinin değeri FFh`dan 00h`ye geçtiğinde üretilmektedir. Bu TMR0 taşması sonucunda TOIF bayrağı (INTCON<2>) lojik1 olur. Kesme istenmiyorsa, TOIE bitinin (INTCON<5>) temizlenmesi ile gizlenebilir. Yeni kesme alınabilmesi için (INTCON<5>) TOIF bayrağı, yazılımdan silinmelidir.

TMR0 Frekans ÖnBölücü(PreScaler) Ayarları OPTION_REG OPTION_REG Kaydedici bitleri Bit 5 TOCS: TMR0 saat kaynağını seçme biti 0 = Dahili komut çevrim saati kullanılır (CLKOUT) 1 = RA4/TOCK1 pininden (uçundan) gelen darbeler saat kaynağı olurak kullanılır. Bit 4 TOSE: TMR0 kaynak kenarı seçme biti (Eğer TOCS = 1 ise) 0 = RA4/TOCK1 pininden gelen her yükselen kenar için bir artırılır 1 = RA4/TOCK1 pininden gelen her düşen kenar için bir artırılır. Bit 3 PSA: Önbölücü / önölçekleme yapılacak birimi seçme biti 0 = Önbölücü TMR0 modülü için ayrılır 1 = Önbölücü WDT için ayrılır. Bit 2,1,0; PS2, PS1, PS0: Önbölücü oranı seçme bitleri MOVLW b 11010111 ; TMRO, dahili sinyal kaynağı ve prescaler:111 seç MOVWF OPTION_REG 14

TMR0 ile Gecikme TMR0 sayıcısının FF (255) den 00 a geçmesi TMR0 kesmesine sebep olur ve bu kesme sonucunda INTCON kesme kaydedicisinin 2. (T0IF) biti 1 değerini alır. Bu kesmeyi kullanabilmek için daha önce sinde INTCON kaydedicisinin TOIE bitinin 1 yapılarak kesmeye izin verilmesi gerektiği unutulmamalıdır. 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) Hazırlayan: Dr.Bülent ÇOBANOĞLU 15

TMR0 Kesme Gecikmesi TMR0 sayıcısı h 00 değeri yerine istenilen bir sayıdan başlatılabilir. Kesme Gecikme Süresi=T komut zamanı (4 *TOSC )*Prescaler değeri*(256-tmr0 başlangıç sayısı) Formülü ile istenilen geçikme süresi hesaplanabilir. Formülde TMR0 başlangıç sayısı ve Prescaler değeri ondalık olarak alınmalıdır. TMR0 ile elde edilebilen en büyük kesme gecikme süresi (PS0-PS2: 111 seçilirse) ve Fosc=4MHz ise ; T komut zamanı =1/(fosc/4)=1µs bulunur. Kesme Gecikme Süresi= T komut zamanı *Prescaler değeri*(256-tmr0 başlangıç sayısı) 1 ms zaman gecikmesi için: = 1µs*256*(256-0) = 65536µs = 65,5 ms olur. Kesme Gecikme Süresi= T komut zamanı *Prescaler değeri*(256-tmr0 başlangıç sayısı) = 1µs*8*(256-131) = 1000µs = 1 ms olur. Hazırlayan: Dr.Bülent ÇOBANOĞLU 16

TMR0 Gecikme Alt programı Örnek 7: Osilatör frekansı 4MHz olan bir PIC için, OPTION kaydedicisindeki PS2, PS1, PS0 bitlerinin değerleri sırasıyla b 111 şek lindedir. TMR0 zamanlayıcısının sıfır(0) değerinden saymaya başladığı kabulü ile bu PIC kaç saniye 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 = 4 *TOSC * Prescaler *(256 TMR0 başlangıç değeri) 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 CLRF TMR0 DON BTFSS INTCON, TOIF GOTO DON BCF INTCON, TOIF RETURN Hazırlayan: Dr.Bülent ÇOBANOĞLU 17

Örnek-8: 4 Bitlik Binary(ikili) Geri Sayıcı(15-0) Uygulaması LIST P=16F877A #INCLUDE<P16F877A.INC> ORG 0X00 GOTO ANA ANA CLRF PORTB ;PORTB temizlenir BSF STATUS, 5 ;BANK1 e geçilir MOVLW b'11010111' ;TMR0, DAHİLİ SİNYAL,1:256 MOVWF OPTION_REG CLRF TRISB ;PORTB nin tüm uçları çıkış olacaktır BCF STATUS, 5 ;BANK0 a geçilir EnBasa MOVLW d'16' MOVWF PORTB Say CALL BEKLE ;65,53ms CALL BEKLE ;65,53+65,53=131ms lik gecikme DECFSZ PORTB,F ;PORTB-- GOTO Say ;Tekrarla GOTO EnBasa BEKLE: ;gecikme alt programı CLRF TMR0 DON BTFSS INTCON,T0IF GOTO DON BCF INTCON,T0IF RETURN END PORTB ye bağlı ledlerde binary sayım: Hazırlayan: Dr.Bülent ÇOBANOĞLU 18

Örnek-9: Timer 0 için harici kesmesini (RA4) kullanarak, 5 kere butona bastığımızda 4 ledin sırasıyla yanmasını sağlayan programın C kodu #include <htc.h> void main(void) { TRISA=0x10; // RA4 giris yapılıyor TRISB=0x00; // PORTB çıkıģ olarak ayarlanıyor PORTA=0x00; // PORTA sıfırlanıyor PORTB=0x00; // PORTB sıfırlanıyor TMR0=-5; // Esasen 250 yüklenmis oluyor //Bit bit tanımlama veya OPTION_REG dogrudan atama T0SE=0; // Düsen kenar tetikleme T0CS=1; // Harici osilatör PSA=1; // Prescaler TMR0 için PS2=0; // 1:2 bölüm değeri PS1=0; PS0=0; T0IF=0; // TMR0 kesme bayrağı temizleniyor T0IE=1; // TMR0 kesmesine izin veriliyor GIE=1; // Genel kesme izni veriliyor for(;;); // sonsuz dongu } static void interrupt isim(void) // Kesme ismi (önemsiz) { char i; // Değiskenler tanımlanıyor if(t0if) // TMR0 kesmesi olusmus mu { i++; // PORTB'de gözükecek değer if(i==16) i=0; PORTB=i; // Değisken değeri PORTB'ye yansıtılıyor TMR0=-5; // Esasen 250 yüklenmis oluyor T0IF=0; // Tekrar dıs kesme alabilmek için kesme bayrağı temizlenir } } Hazırlayan: Dr.Bülent ÇOBANOĞLU 19

Örnek-9: Timer 0 için harici kesmesini (RA4) kullanarak, 5 kere butona bastığımızda 4 ledin sırasıyla yanmasını sağlayan programın Assembly dilinde kodlanması Start LOOP LIST P=16F877 #include p16f877.inc N EQU 0X00 ORG 0x0 ; Reset Adresi goto Start ORG 0X04 ; Kesme Adresi goto KESME CLRF PORTB BSF STATUS,5 MOVLW b'11101000' BSF TRISA,4 MOVWF OPTION_REG CLRF TRISB BCF STATUS,5 CLRF PORTB MOVLW b'11100000' MOVWF INTCON MOVLW -3 MOVWF TMR0 CLRF N GOTO LOOP KESME END INCF N,F MOVF N,W MOVWF PORTB BCF INTCON,T0IF MOVLW -3 MOVWF TMR0 RETFIE Hazırlayan: Dr.Bülent ÇOBANOĞLU 20

PIC16F877 Kesme Kaynakları YRD.DOC.Dr.BÜLENT ÇOBANOĞLU

Kesmeler Kesme (Interrupt), mikro denetleyicinin gerçekleştirdiği işleme bakmaksızın belirli durumların/olayların olma sı durumunda isteklere / olaylara cevap verilmesini sağlayan mekanizmadır. Bu mekanizma, mikro denetle yici ile çevre birimleri arasındaki bağlantıları oluşturması ve ilişkileri düzenlemesi nedeniyle çok önemli bir yer e sahiptir. Oluşan her kesme programı ile programın normal işlenme süreci değiştirilerek program durdurulur ve kes me ile ilgili rutin/altprogram gerçekleştirildikten sonra ana programın işlenmesi kalınan noktadan devam edilir Bütün PIC 16F mikro denetleyicileri dört farklı kaynaktan kesme alabilir. Bunlar; YRD.DOC.Dr.BÜLENT ÇOBANOĞLU