PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

Benzer belgeler
Komutların İşlem Süresi

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

Mikro denetleyicili Uygulama devresi bileşenleri

# 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

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

PIC MCU ile UYGULAMALAR

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

Komutların İşlem Süresi

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

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

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

LCD (Liquid Crystal Display )

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

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

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

# 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

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

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

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

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

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

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.

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

KONFİGÜRASYON BİTLERİ

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

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

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

PIC TABANLI, 4 BASAMAKLI VE SER

LCD (Liquid Crystal Display)

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

Hacettepe Robot Topluluğu

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

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

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

KESME (INTERRUPT) NEDİ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Ü

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Ü

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

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

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

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

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

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

8 Ledli Havada Kayan Yazı

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

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

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

Microprocessors and Programming

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

Hacettepe Robot Topluluğu

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

PROGRAMLANABİLİR ZAMANLAYICI

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

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

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İ

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 1 DERS NOTLARI (Final) Prof. Dr. Hakan Ündil Güz

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

BÖLÜM 1

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

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

Mikroişlemciler. Microchip PIC

ONDOKUZ MAYIS ÜNİVERSİTESİ

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

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

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

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

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

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

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

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

Hacettepe Robot Topluluğu

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İ

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Ü

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

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İ

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

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

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

BİLİŞİM TEKNOLOJİLERİ

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

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

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

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

PIC16F877A nın Genel Özellikleri

PIC Mikrodenetleyicileri

Mikroişlemciler Laboratuar Deney Föyü

PIC MİKRODENETLEYİCİ KULLANARAK BİR SİSTEMİN TELEFONLA UZAKTAN KONTROLÜ

YILDIZ TEKNİK ÜNİVERSİTESİ ELEKTRİK - ELEKTRONİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ. EasyPic6 Deney Seti Kullanım Kılavuzu

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

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

Hacettepe Robot Topluluğu

Mikroişlemci gelişimi

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

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İ

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Ü

Transkript:

P I C 1 6 F 8 4 / P I C 1 6 F 8 7 7 K O M U T S E T İ PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

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 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 2

Ġç 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:Öğr.Gör.Bülent ÇOBANOĞLU 3

Zamanlayıcı kullanan Gecikme Prog; TMR0 ve Watchdog Timer Devresi PSA ; 0 ise TMR0 1 ise WDT TOCS; 0 ise dahili komut saykılı 1 ise harici digital sinyal Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 4

MOVLW b 11010111 ; TMRO, dahili sinyal kaynağı ve prescaler:111 seç MOVWF OPTION_REG Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 5

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 s ayısından 00h sayısına geçerken oluşan taşmada, INTCON kaydedicisinde 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. 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:Öğr.Gör.Bülent ÇOBANOĞLU 6

TMR0 Gecikme Alt programı Örnek: Osilatör frekansı 4MHz olan bir PIC için, OPTION kaydedicisind eki PS2, PS1 ve PS0 bitlerinin değerleri sırasıyla b 111 Ģeklindedir. TM R0 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 (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 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 7

Ġkili (binary) olarak artırma ve azaltma iģlemi uygulamaları Uygulama-1: 4 Bitlik Binary(ikili) Geri Sayıcı(15-0) BASLA TEST: 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 PORTB ye bağlı ledlerde binary sayım: BEKLE: DON ;gecikme alt programı CLRF TMR0 BTFSS INTCON,T0IF GOTO DON BCF INTCON,T0IF RETURN END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 8

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. ;********************************************************* Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 9

Ç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. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 10

Ç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,. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 11

Uygulama 2: 7 segment display de 5 sayısını gösteren programı yazınız. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 12

Uygulama-3: 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 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 13

Uygulama-4: 9 Dan 0 A Geri Sayıcı 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 DIZI CALL DIZI MOVWF PORTB GOTO BASLA 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';7 RETLW b'01111111' RETLW b'01101111' END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 14

Uygulama 5: F den 0 a kadar Geri Sayıcı 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=10-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 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 15

Uygulama 6: 0 dan F İ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' Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 16

Uygulama 7: Trafik Işığı Program Parçası BASLA CLRW DON MOVWF DURUM K S Y SINYAL CALL SINYAL ; DURUMU DEĞĠġTĠR. MOVWF PORTB ; SINYAL DEĞERINI PORTB DE GOSTER INCF ANDLW 0X03 DURUM,W ; DURUMU BĠR ARTIR, SONUCU W YA YAZ. ; MAKSIMUM 3 E KADAR ARTIR. MOVWF DURUM ; W ĠÇERĠĞĠNĠ DURUM DEĞĠġKENĠNE AKTAR CALL GECIKME ; BEKLE :-) GOTO DON MOVF DURUM,W ; DURUMU W YA TAġI. ADDWF PCL,F RETLW 0X41 RETLW 0X23 RETLW 0X14 RETLW 0X32 ; DURUM==0 ĠSE YEġĠL VE KIRMIZI(RB6,RB0) ; DURUM==1 ĠSE SARI VE KIRMIZI/SARI (RB5, RB0/RB1) ; DURUM==2 ĠSE KIRMIZI VE YEġĠL (RB4,RB2) 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 ; DURUM==3 ĠSE KIRMIZI/SARI VE SARI (RB4/RB5, RB1 K S Y Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 17

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; Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 18

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. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 19

Uygulama-8: PORTB nin RB0/INT ucundan gelen bir kesme gerçekleşince kesme alt programı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. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 20

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 ol ur. Bu kesmeyi aktif hale getirmek için INTCON kaydedicisinin RBIE bitinin 1 yapı lması gerekir. PORTB değişim kesmesi oluştuğunda RBIF=1 olur ve program kesm e alt programına dallanır. Program RBIF bitini otomatik sıfırlayamadığı için kes me 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 bitini yakan pr ogram. 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 kesmesin e izin ver. Kesme oluşup, program kesme alt programına dallandığında RBIF bitini 0 yap Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 21

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 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 22