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

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

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

# 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

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

KONFİGÜRASYON BİTLERİ

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

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

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

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

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

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

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

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

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

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.

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

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

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

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

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

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

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

PIC TABANLI, 4 BASAMAKLI VE SER

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

LCD (Liquid Crystal Display )

MİKRODENETLEYİCİLER I DERS NOTLARI Prof. Dr. Hakan Ündil Güz (Vize sonuna kadar olan kısımdır.)

Hacettepe Robot Topluluğu

LCD (Liquid Crystal Display)

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

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

# 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

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

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

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

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

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

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

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

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

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

8 Ledli Havada Kayan Yazı

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

MİKROİŞLEMCİ (MİKROPROSESÖR - CPU) NEDİR? Prof. Dr. Hakan ÜNDİL (Bir haftalık derse ait ders notudur)

PIC16F877A nın Genel Özellikleri

Komutların İşlem Süresi

PİC BASİC PROFESSİONAL

Hacettepe Robot Topluluğu

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

ONDOKUZ MAYIS ÜNİVERSİTESİ

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

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

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İ

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

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

Hacettepe Robot Topluluğu

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

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

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

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 FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EET-302 MİKROİŞLEMCİLER LABORATUVARI DENEY FÖYÜ

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

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

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

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

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

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Ü

DERS 11 PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI İÇERİK. Alt Program Çevrim Tabloları Program Sayıcı ( Program Counter PC )

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

BİLİŞİM 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İ

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

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

BÖLÜM 1

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

DEVRELENDİRİLMİŞ LOJİK

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

Microprocessors and Programming

BÖLÜM 2 2. PROGRAMLAMA MANTIĞI

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

PROGRAMLANABİLİR ZAMANLAYICI

BUTON KONTROLÜ. Pull-Down Bağlantı (Ters Bağlantı) Butona basılmadığında Giriş=1 Butona basıldığında Giriş=0

PIC Mikrodenetleyicileri

Mikroişlemciler Laboratuar Deney Föyü

MİKROİŞLEMCİ (Microprocessor) NEDİR?

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İLER 1

Mikroişlemciler. Giriş

BÖLÜM 1 MİKROİŞLEMCİLERİN YAPISI VE ÇALIŞMASI 1.GİRİŞ

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

Mikroişlemciler. Giriş

MİKRODENETLEYİCİLER I DERS NOTLARI Güz-Final. 1. BÖLÜM GİRİŞ ve SAYI SİSTEMLERİ 1.1. Devrelendirilmiş Lojik

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

Jalv2 ile PIC Programlama 1.BÖLÜM. Sercan TEK. Temmuz Temel JALv2 Kavramları

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

Transkript:

MİKROİŞLEMCİLER VE MİKRODENETLEYİCİLER 1 - DERS NOTLARI (Kısım 3) Doç. Dr. Hakan Ündil Program Örneği 9 : Gecikme altprogramı kullanarak Port B ye bağlı tüm LED leri yakıp söndüren bir program için akış diyagramı çizerek gerekli assembly programını PIC 16F84 için yapınız. Çözüm: ; PROGRAM9. ASM-----15 / 12 / 2003 LIST P = 16F84 INCLUDE P16F84.INC SAYAC1 EQU h 0C ;16F84 de genel amaçlı RAM (Veri Hafızasında) ilk adres SAYAC2 EQU h 0D BSF STATUS,5 CLRF TRISB BAŞLA BCF STATUS,5 DEVAM MOVLW CALL h 00 PORTB GECİKME 16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB CALL GECİKME PORTB yi sıfırla GOTO DEVAM GECİKME CALL GECİKME MOVLW h FF MOWF SAYAC1 TEKRAR1 MOWF SAYAC2 PORTB h FF TEKRAR2 DECFSZ SAYAC2, F GOTO TEKRAR2 CALL GECİKME DECFSZ SAYAC1, F GOTO TEKRAR1 RETURN Program Örneği 10: PORTA nın 0. bitine bağlı ve basıldığında ( 0 ) üreten bir bütona 8 kere basıldıktan sonra yine PORTA nın 1. bitine 2 kere basılırsa PORTB ye bağlı bütün LED lerin yanması isteniyor ( Her tuşa basıldıktan sonra GECİKME alt programı kullanılacaktır ). Gerekli akış diyagramını çizerek programı yazınız. Çözüm: ; PROGRAM10.ASM-------22 / 12 / 2003 LIST P = 16F84 INCLUDE P16F84.INC GECİK1 EQU h 0C GECİK2 EQU h 0D SAYAC1 EQU h 0E SAYAC2 EQU h 0F CLRF PORTB ; PORTB yi sıfırla BSF STATUS,5 ;Bank1 e geç CLRF TRISB ;PORTB çıkış BSF TRISA, 0 BSF TRISA, 1 ;RA0veRA1 Giriş BCF STATUS,5 ; Bank0 a geç MOVLW h 03 SAYAC1 ; SAYAC1 e 03 yaz MOVLW h 02 38

BAŞLA 16F84 ü tanıt A portu giriş B portu çıkış SAYAC1 03 SAYAC2 02 RA0 = 0 HAYIR mı? EVET GECİKME SAYAC1 i 1 azalt HAYIR SAYAC1 0 mı? RA1 = 0 mı? GECİKME HAYIR EVET SAYAC2 ;SAYAC2 ye 02 yaz TEKRAR BTFSC PORTA, 0 ; RA0 = 0 mı? GOTO TEKRAR ;Değilse TEKRAR a CALL GECİKME ;Evetse GECIKMEye DECFSZ SAYAC1 ;SAYAC1 i 1 azalt GOTO TEKRAR ; Sonuç 0 değilse DEVAM BTFSC PORTA, 1 ; RA1 = 0 mı? GOTO DEVAM ; Değilse DEVAM a CALL GECİKME ;Evetse GECIKMEye DECFSZ SAYAC2 ; SAYAC2 i 1 azalt GOTO DEVAM ;Sonuç 0 değilse MOVLW h FF PORTB ;PORTB ye FF yükle ; GECİKME ALT PROGRAMI GECİKME MOVLW h FF GECİK1 ;GECIK1 e FF yükle DONGU1 MOVLW h FF GECİK2 ;GECIK2 ye FF yükle DONGU2 DECFSZ GECIK2, F ; GECIK2 yi 1 azalt GOTO DONGU2 ;Sonuç 0 değilse DECFSZ GECİK1,F ;GECIK1 i 1 azalt GOTO DONGU1 ; DONGU1 e git. RETURN ; Alt Programdan dön ; SON SAYAC2 yi 1 azalt SAYAC2 0 mı? HAYIR EVET PORTB ye FF yaz SON LOJİK İŞLEM KOMUTLARI RLF Komutu (Bir bit Sola Kaydırma) Bir file register içinde bulunan bitlerin birer bit sola kaydırılması işlemidir. Bu durumda en solda bulunan ( 7. bit ) C ( elde ) bayrağına geçmekte, daha önce C de bulunan bit ise en sağdaki ( 0.) bite geçmektedir. Komutun formatı; Komutu şematik gösterirsek; RFL FİLE REGISTER, d W yada F ( Sonucun Yeri ) 39

Program Örneği 11: Bir programla önce B portunun sadece 0. bitini (RB0) 1 yapın. Daha sonra 1 defa bu biti sola kaydırın. Bu işlemin daha iyi görülebilmesi için üst üste 2 kere GECIKME alt programı kullanın. Çözüm: BASLA 16F84 ü tanıt PORTB çıkış PORTB 01 CALL GECIKME CALL GECIKME RLF PORT B SON ; PROGRAM 11. ASM_ TARİH LIST P = 16F84 INCLUDE P16F84.INC GECİK1 EQU h 0C GECİK2 EQU h 0D BCF STATUS, 0 ; Elde yi sıfırla BSF STATUS, 5 ; Bank1 e geç CLRF TRISB ; PORTB Çıkış BCF STATUS, 5 ; Bank0 a geç MOVLW h 01 PORTB ;PORTB ye 01 yaz CALL GECIKME_ALTPROG CALL GECIKME_ALTPROG BEKLE GOTO BEKLE GECIKME_ALTPROG MOVLF DONGU 1 MOVLW DONGU2 DECFSZ GOTO DECFSZ GOTO RETURN ; Önceki Gecikme Alt Prog ile aynı h FF GECIK1 h FF GECIK2 GECIK2, F DONGU2 GECIK1, F DONGU1 RRF Komutu (Bir Bit Sağa Kaydırma) RRF komutu da RLF komutuna benzer olup fark bu defa kaydırma işleminin sağa olması dolayısıyla en sağdaki bit C ( elde ) bayrağına geçecektir. Daha önce C bayrağında bulunan bit ise bu sefer en soldaki (7.( bite geçecektir. Komut formatı; RRF FİLE REGİSTER, d Sonucun gideceği yer W yada F Mesela MEM adlı bir file registere hex 30 sayısını yazın. Aynı anda C bayrağı da (C= 1) ise RRF komutunun icrasından önce ve sonraki durum: 40

Bu işlem için kullanılacak program komutları : MOVLW h 49 ; W Registerine (49) 16 yükle MEM ; W yi MEM adresine sakla RRF MEM, F ; MEM i Sağa bir bit ötele. şeklinde olacaktır. Program Örneği 12: Önce C bayrağını (1) yapın ve başlangıçta sıfırlanmış PORT B üzerinden birer bit sola kaydırın. Her kaydırma arasında GECIKME alt programına gönderin. C bayrağı tekrar ( 1 ) olunca programı bitirin. NOT: GECIKME_ALTPROG Gösterilmeyecektir. Çözüm: BAŞLA 16F84 ü tanıt PORTB çıkış C 1 PORTB 00 RLF PORTB CALL GECIKME ; PROGRAM 12.ASM----------Tarih INCLUDE PIC16F84.INC BSF STATUS, 5 ; Bank1 e geç CLRF TRISB ; PORTB Çıkış BCF STATUS, 5 ; Bank0 a geç KAYDIR RLF PORTB ; PORTB yi sola kaydır CALL GECIKME_ALTPROG BTFSS STATUS, 0 ; C bayrağı 1 mi? GOTO KAYDIR ; Değilse KAYDIR a DONGU GOTO DONGU ; Evetse burada bekle C = 1 mi? SON 41

COMF ve SWAPF Komutları COMF komutu ile istenen bir file register içinde (0) lar (1) ve (1) ler (0) yapılabilir [1 e göre tümleyen işlemi!.. ]. Komut formatı; COMF FİLE REGİSTER, d Sonucun gideceği yer ( destination ) ( W yada F yazılır ) şeklindedir. Örnek: HAFIZA1 adlı registere ( 1F ) 16 yüklendikten sonra bunun tersi olan ( E0 ) 16 ı HAFIZA2 ye saklayın. Bunun için gerekli rutini (Program Parçasını) yazın. Çözüm: MOVLW COMF h 0F HAFIZA1 HAFIZA1, W HAFIZA2 HAFIZA1 0001 1111 HAFIZA2 1110 0000 SWAPF komutu ise bir file register içindeki ilk dört bit (Yüksek anlamlı Nibble) ile son dört bitlerin (Düşük anlamlı Nibble) yerlerini değiştirir. Komut formatı; SWAPF FİLE REGİSTER, d şeklindedir. Örnek: PORTB ye ( 3F ) yazdıktan sonra ilk ve son bitlerin yerini değiştiren ve sonucu W ye yazan Program parçası yazın. MOVLW SWAPF h 3F PORTB PORTB, W ANDLW Komutu W registerinin içeriğini sabit bir sayı ile Lojik AND (VE) işlemine tabi tutar. Sonucu tekrar W ye yazar. Bilindiği gibi işlemin sonunda her iki sayıda 1-1 olan bitler 1; diğerleri 0 olarak neticelenecektir. Komut formatı; ANDLW Sabit sayı şeklindedir. Bu komutla bir sayının ( veri ) istenen bitleri ( 0 ) yapılırken diğerleri olduğu gibi bırakılır. Bunun için sabit sayı ( maske ) seçilirken sıfır yapılmak istenenler ( 0 ), diğerleri ( 1 ) olarak seçilmelidir. Örnek: W içinde (3C) sayısı olsun. Bu sayının 2.,3. ve 6. bitlerini (0) yapıp diğerlerini aynen bırakan komutu yazalım. Sonuçta sayı ne olur? Önce W deki sayıya hiç bakmadan 2.,3.,6. bitleri 0, öteki bitleri 1 olan bir maske seçelim. 7 6 5 4 3 2 1 0 42

1 0 1 1 0 0 1 1 = (B3) 16 Bu maskeyle W deki sayıyı (3C yi) Lojik VE işlemine tabi tutmak için gerekli komut: ANDLW h B3 olacaktır. Sonucu bulmak için ise, W deki sayı (3C) 16 verildiğine göre bu sayının 2.,3. ve 6. bitlerinin sıfırlanmış halini yazmamız gerekir. O da (30) 16 olarak elde edilecektir. [ 3C de 6. bit zaten 0 olduğuna göre, 3C yi binary yazın ve 2. ve 3. bitlerini sıfırlayın] ANDWF Komutu Bu komut ANDLW komutuna benzer olup bu defa W ile herhangi bir file register arasında Lojik AND (ve) işlemi gerçekleştirilir. Sonuç ise ya W ye ya da F e yazılır. Komut formatı: File Register ANDWF, d (Sonucun yeri, W ya da F) şeklindedir. Örnek: PORTB registerinin içinde b 00101100 sayısı olsun. W Registerine de b 11011111 değerini (maske) yerleştirelim. Bu iki sayıyı Lojik AND işlemine tabi tutarak neticeyi yine PORTB ye yazalım. Bunun için gerekli program parçası : IORLW Komutu MOVLW b 00101100 ; W Registerine 2C yükle. ANDWF PORTB, F ; PORTB ile W yi AND (VE) işlemine tabi tut ; ve sonucu yine PORTB ye yaz. Bu komut istenen bir biti 1 yapıp diğerlerini aynen bırakmak için kullanılır. Verilen sabit sayı ile W registeri Lojik OR (VEYA) işlemini yapar ve sonucu yine W registerine yazar. Komut Formatı: IORLW Sabit sayı şeklindedir. Bu amaçla seçilecek sabit sayıda (Maske de), (1) yapılmak istenen bitler (1), değiştirilmesi istenmeyen bitler (0) seçilmelidir. Örnek: W Registerinde bulunan sayının 5.,6.,7. bitleri 1 yapılıp diğer bitler aynen bırakılmak istensin. Önce Maskemizi seçelim; 7 6 5 4 3 2 1 0 1 1 1 0 0 0 0 0 = E0 (Sayıda 1 yapılacak bitler 1) Bu durumda gerekli program parçası (komut) IORLW b 1110 0000 olacaktır. NOT: Maske seçimi işlemi için W da bulunan sayının bilinmesine gerek yoktur. Hangi sıradaki bitlerin (burada 5,6,7 idi) 1 yapılacağının bilinmesi yeterlidir. Soruda sayı W dadır denildiği için program parçasında W ya yükleme komutuna ihtiyaç yoktur. Örnek: Yukarıdaki örnekte W daki sayımız (04) 16 olsaydı sonuç ne olurdu? 43

W ile Maske arasında OR işlemi: (sonuç E4 olacaktır) Bit No: 7 6 5 4 3 2 1 0 W Reg. 0 0 0 0 0 1 0 0 Maske 1 1 1 0 0 0 0 0 Sonuç 1 1 1 0 0 1 0 0 IORWF Komutu Bu komut da IORLW komutuna benzer olup fark, maskenin sabit sayı yerine bir file registerde bulunmuş olmasından ibarettir. Sonuç ise ister W ye, ister File Register a yazılabilir. Komut Formatı: File Register IORWF, d (Sonucun yeri, W ya da F) XORLW Komutu Bu komut ise W Registeri ile verilen sabit sayı arasında EXOR ( Özel VEYA) işlemi gerçekleştirerek sonucu W ye yazar. Komut Formatı: XORLW Sabit Sayı şeklindedir. Bu komut da W Registerde bulunan 8 bitlik sayının istenen bitlerinin tersini almak diğer bitleri aynen bırakmak için kullanılabilir. Bu maksatla belirlenecek Maske baytında tersi alınmak istenen bitler (1), diğerleri (0) seçilmelidir. Örnek: Önce W ya (3B) 16 sayısını yükledikten sonra bu sayının sadece 1., 3., 5., 7. bitlerinin tersini alıp neticeyi PORTA ya yazmak için gerekli komutları verin. Bu durumda sonuç ne olur? W ile sabit sayı arasında (EXOR işlemi) MOVLW h 3B ;W ye 3b yaz XORLW b 10101010 ; maskede 7,5,3,1. bitler 1, yapıldı PORTA ; Sonuç PORTA ya yazıldı. Bit No: 7 6 5 4 3 2 1 0 W Reg.de(3B) 0 0 1 1 1 0 1 1 Maske (AA) 1 0 1 0 1 0 1 0 Sonuç (91) 1 0 0 1 0 0 0 1 XORWF Komutu Bu komut da XORLW komutuna benzer olup burada asıl sayı W registerde, maske ise file registerde bulunur. İşlem sırası önemli olmadığı için maskeyi W ya asıl sayıyı File Registere yazmak da mümkündür. NOT: XORLW ve XORWF iki tane 8 bitlik sayının aynı olup olmadıklarını test etmek için kullanılabilir. Sayılar aynı ise EXOR lanınca sonuç (00) 16 olacağından Z bayrağı (1) olacaktır. Aksi takdirde Z bayrağı (0) kalacaktır. [ Z bayrağının STATUS un 2. biti olduğunu hatırlayın] Örnek: PORTA da bulunan bir baytlık sayı (09) 16 dan farklı ise A Portu test edilmeye devam edilecek, (09) 16 a eşit ise bu sayı PORTB ye yazılsın isteniyor. Gerekli Program Parçası: 44

TEST MOVLW h 09 XORWF PORTA,W ; W ile PortA ya Lojik EXOR işlemi uygula BTFSS STATUS,2 ; Z bayrağı 1 mi? GOTO TEST ; Değilse TEST e git MOVF PORTA, W ; Evetse PortA yı W ye aktar. PORTB ; W yi PortB ye yaz. Mesela, PORTA ya gelen sayı (07) 16 olsa ve (09) 16 ile XORWF işlemi yapıldığında; 0000 0111 (07) 0000 1001 (09) 0000 1110 (0E) Sonuç 0 dan farklı olduğuna göre test etmeye devam et. Benzer şekilde bir baytlık veriyi sıfır sayısı ile karşılaştırmak için IORLW ve IORWF komutları kullanılabilir. Örnek: PORTA daki sayının (00) 16 olup olmadığını test eden, sıfır ise ILERI adresine atlayan aksi takdirde test etmeye devam eden bir program parçasını IOR türü bir komutla yazın. TEST MOVF PORTA,W ; PortA yı W ye kopyala (yaz) IORLW h 00 ; W ile 00 arasında Lojik VEYA uygula BTFSS STATUS, 2 ; Sonuç=0 mı ( Z=1 mi?) GOTO TEST ; Değilse TEST e git GOTO ILERI ; Evetse ILERI adresine git. Program Örneği 13 : PORTA nın bütün bitleri normalde (1) iken PORTA da 0,1,2. bitlerin (RA0,RA1,RA2) hepsine basılınca PORTB ye (0F) 16 yükleyen aksi halde test etmeye devam eden bir program için akış diyagramı çizerek assembly programı yazınız. Maske: 0001 1000 [ilk 3 bit(0) PORTA da yok, son üç bit(0) test edilecek] ; PROGRAM13.ASM-------TARİH LIST P=16F84 INCLUDE P16F84.INC CLRF PORTB BSF STATUS,5 MOVLW h FF TRISA ;PortA Giriş CLRF TRISB ;PortB Çıkış BCF STATUS,5 ;Bank0 a geç TEST MOVLW b 00011000 ;Maskeyi W ye XORWF PORTA,W ;PortA ile EXOR BTFSS STATUS,2 ; Z bayrağı 1 mi? GOTO TEST ;Değilse TEST e MOVLW h 0F ;Evetse W ye 0F yaz PORTB ; PortB ye aktar 45

ÇEŞİTLİ ÖRNEKLER 1) PORTA nın 0. bitine (RA0) Lojik 0 uygulanarak enerji verilen bir PIC16F84 e daha sonra PORTA nın tamamına (FF) 16 uygulanırsa PORTB nin tüm bitleri (1) yapılacak aksi takdirde PORTA test edilmeye devam edilecektir. Akış diyagramı çizerek gerekli assembly programını yazınız. ; ORNEK1.ASM LIST P=16F84 INCLUDE P16F84.INC CLRF PORTB BSF STATUS,5 MOVLW h FF TRISA CLRF TRISB BCF STATUS,5 TEST BTFSC PORTA,0 ; RA0=0 mı? GOTO TEST ; Değilse TEST e BEKLE XORWF PORTA,W ; W ile PORTA aynı mı? BTFSS STATUS,2 ; Z bayrağı 1 mi? GOTO BEKLE ; Değilse BEKLE ye MOVLW h FF PORTB ; Aynıysa PORTB ye FF yaz ; Son 2) PORTA nın 1. bitine (RA1) 2 kere üstüste bir Lojik devreden (0) uygulandığı takdirde W Registerine (01) 16 yazıp son bulan bir program yazınız. Tuşa basılmalar arasında 10 tane NOP komutunun yaklaşık 255 defa icrası ile elde edilecektir. Gecikmeden hemen sonra ikinci (0) işareti gelmediği halde test işlemine baştan başlanacaktır. (Yani, yeniden iki (0) beklenecektir, Gecikme için Alt Program kullanılmayacaktır.) Gerekli assembly programını yazınız. ;ORNEK2.ASM LIST P=16F84 INCLUDE P16F84.INC SAYAC EQU h 0C ; SAYAC için 1 bayt yer ayır. BSF STATUS,5 ; Bank1 e geç MOVLW h FF TRISA ; PORTA yı Giriş yap BCF STATUS,5 ; Bank0 a geç TEST BTFSC PORTA,1 ; RA1=0 mı? GOTO TEST ; Değilse TEST e git MOVLW h FF ; Evetse W ye FF yükle SAYAC ; Sayaca W deki FF sayısını yaz GECIKME NOP NOP NOP. 46

.. NOP ; 10 tane NOP komutu DECFSZ SAYAC,F ; Sayacı 1 azalt GOTO GECIKME ; SAYAC sıfırdan farklıysa GECIKME ye BTFSC PORTA,1 ; SAYAC sıfırsa, tekrar RA1=0 mı? bak GOTO TEST ; Değilse TEST e git, yeniden iki 0 bekle MOVLW h 01 ; İstenen (01) sayısını W ye yükle ; Son 3) PORTA da bulunan 8 bitlik (1 baytlık) sayı 2 kere sola ötelendikten sonra ortaya çıkan sayı (6C) 16 ise PORTB ye (01) ; aksi takdirde yine PORTB ye (02) yazan bir programı assembly dilinde yazınız. NOT: Başlangıçta C bayrağı (0) yapılacaktır. ;ORNEK3.ASM LIST P=16F84 INCLUDE P16F84.INC BSF STATUS,5 MOVLW h FF TRISA ; PortA Giriş CLRF TRISB ; PortB Çıkış BCF STATUS,5 ; Bank0 a geç BCF STATUS,0 ; C Bayrağı sıfır yapıldı. RLF PORTA,F ; PortA yı 1 bit sola ötele RLF PORTA,F ; PortA yı 1 bit (kere daha) sola ötele MOVLW h FF ; W registerine FF yükle XORWF PORTA,W ; W deki (FF) ile PortA daki sayı aynı mı? BTFSS STATUS,2 ; Z bayrağı 1 ise bir satır atla. GOTO GIT ; Değilse GIT etiketine git. MOVLW h 01 YAZ PORTB ; PortB ye (01) yaz GOTO SON ; SON etiketine git. GIT MOVLW h 02 PORTB ; PortB ye (02) yaz SON KAYNAKLAR: 1- Mikroişlemciler Ders Notları 1-2 (6502), Doç. Dr. Hakan ÜNDİL 2- Mikrodenetleyiciler ve PIC Programlama, Orhan ALTINBAŞ 3- Adım Adım PIC Programlama, Yaşar BODUR 4- PIC Microcontroller Uygulama Devreleri, Gökhan DİNÇER 5- PIC16F8X, Microchip PIC Data Sheet, (www.microchip.com) 47