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.



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

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

# 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

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

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

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

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

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

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

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

LCD (Liquid Crystal Display)

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

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

LCD (Liquid Crystal Display )

KONFİGÜRASYON BİTLERİ

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

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

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

Hacettepe Robot Topluluğu

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

PIC TABANLI, 4 BASAMAKLI VE SER

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

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

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

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

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

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

# 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

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

Komutların İşlem Süresi

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

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

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

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

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

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

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

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

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

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

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

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

Hacettepe Robot Topluluğu

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

8 Ledli Havada Kayan Yazı

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

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

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

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

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İ

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

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

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

Mikro denetleyicili Uygulama devresi bileşenleri

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

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

PIC16F87X te ADC MODÜLÜNÜN KULLANIMI

PIC Mikrodenetleyicileri

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

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

KESME (INTERRUPT) 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.

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

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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İ

PIC16F877A nın Genel Özellikleri

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

DEVRELENDİRİLMİŞ LOJİK

PIC 16F877 nin kullanılması

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

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

PIC MCU ile UYGULAMALAR

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:

ONDOKUZ MAYIS ÜNİVERSİTESİ

PROGRAMLANABİLİR ZAMANLAYICI

Microprocessors and Programming

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

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İ

Yrd. Doç.Dr. Bülent ÇOBANOĞLU. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 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Ü

MİKRODENETLEYİCİ TABANLI KONTROL

PIC 16F84 MİKRODENETLEYİCİ TEMEL BİLGİLERİ, PROGRAMLANMASI VE UYGULAMALARI

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

Hacettepe Robot Topluluğu

BİLİŞİM TEKNOLOJİLERİ

PIC ASSEMBLY VE MAKROLAR

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

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

MPLAB IDE ve ISIS ile ASSEMBLY DİLİNDE UYGULAMA GELİŞTİRMEK

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

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

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

BÖLÜM 1: MİKRODENETLEYİCİ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:

BÖLÜM 4 4. PIC PROGRAMLAMA Herhangi bir dilde program yazarken, öncelikle kullanılacak dil ve bu dilin editörünü kullanabilmek önemlidir. Biz bu işlem için Mplab programını kullanacağız. Bu sebeple aslında öncelikle bu editörün kullanımını bilmemiz gerekir. Ancak, şu ana kadar mikroişlemcilerle ilgili olarak öncelikle temel yapıyı öğrendik. Bu bilgilerimizin kalıcı olabilmesi için, daha önce akış diyagramını verdiğimiz örneklerin programını yazarak önceki bilgilerin daha iyi anlaşılmasını sağlamaya çalışalım. Dersleriniz esnasında bu aşamadan itibaren, program editörünü kullanmayı yavaş yavaş öğreneceğiz. Bu sebeple önce Kalem kağıtla bu iş nasıl yapılır? sorusunun cevabını görelim: Assembler program yazımı: 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. Etiket Komut Parametre Açıklama Alanı Alanı Alanı Alanı Üstte görüldüğü gibi program yazma alanı 4 ayrı alandan oluşur. Bu alanların ne olduğuna bir bakalım: 1) Etiket Alanı: Program içerisinde bölüm ya da satırlara isim vermek için kullanılır. Bu isimler, ya program esnasında adı geçen bölümü çağırmak, ya o bölüme atlama yapmak, ya da değişken adı ve benzeri şekilde kullanılır. Harf adeti ya da kullanım sınırlaması pek fazla olmamasına rağmen yine de komut kelimelerini ya da standart register isimlerini etiket adı olarak kullanmamak gerekir. Ayrıca programın windows altında çalışıp çalışmayacağını düşünerek 62

İngiliz alfabesindeki harfleri kullanmak, sekiz harfi geçmeyecek isimler kullanmak uygun olur. 2) Komut Alanı: Bu alanda bir pic assembler komutu bulunur. Özel bir durumu olmamasına rağmen komutların ya tamamını büyük harfle veya tamamını küçük harfle yazmakta fayda vardır. 3) Parametre Alanı: Bazı komutlar parametre içerir, bazıları ise içermez. Parametre içeren komutların parametreleri bu alana yazılır. Parametre kelimesi, burada komutun önüne gelecek eklemeler anlamına gelmektedir. Bunların neler olabileceğini komutlar bölümünde görebiliriz. 4) Açıklama Alanı: Bu alan istenirse kullanılır, istenmezse kullanılmaz. Komutun bitiminden sonra, araya bir noktalı virgül (;) atıldıktan sonra, istenilen açıklama yazılır. Açıklama kısmı program derlenirken işleme girmez; sadece programı yazan veya yazılmış bir programı inceleyen kişiye o satırın ya da o bölümün ne iş yaptığını gösterir. Program yazan kişinin ileride aynı programı tekrar incelemesi, değişiklik ya da ekleme yapması gerektiğinde hatırlatıcı not görevi gördüğü için, özellikle büyük programlarda açıklama yazmak önemlidir. Uzun açıklamalarda ya da bölüm isimlendirmelerinde satırın en başından itibaren noktalı virgül atılarak başlanırsa, o satır olduğu gibi açıklama satırı şeklinde kullanılmış anlamına gelir. Şimdi ilk programımızı yazarak bu alanların ne olduğunu ve programımızın çalışmasını inceleyelim. Örnek 4-1: Programlama mantığı bölümünde akış diyagramı verilen birinci led yakma örneğinin programını yazalım: 63

Programı yazmadan önce port uçlarının kullanımı konusunda karar verelim. Diyelim ki; PortA nın PA0 ucuna tuş, PA1 ucuna da led bağlanacak olsun. Buna göre devrenin bağlantısı aşağıdaki gibi olacaktır: +5Volt 100nF 14 tus 10K 33pF 10K RESET R3 LED 330Ohm 4 15 18 5 MCLR Vss VDD OSC1/CLKIN RA1 PIC16F84 RA0 OSC2/CLKOUT RA2 RA3 RA4/TOCKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 17 16 1 2 3 6 7 8 9 10 11 12 13 10K Şekil 4.1. Pic16f84 kullanarak buton ile led kontrol devresi. Şimdi programımızı yazalım: list p=16f84 ;Bank 0 register tanımlamaları INDF EQU 00h ;Dolaylı adreslemede FSR ile birlikte kullanılır. TMR0 EQU 01h ;Timer sayıcı register 64

PCL EQU 02h ;Program Sayacı STATUS EQU 03h ;Durum registeri FSR EQU 04h ;Dolaylı adreslemede kullanılır. PORTA EQU 05h ;A Portu PORTB EQU 06h ;B portu EEDATA EQU 08h ;EEPROM verisini tutan reg. EEADR EQU 09h ;EEPROM verisinin adresini tutan register. PCLATH EQU 0Ah ;Program sayacının üst bitlerini tutan register. INTCON EQU 0Bh ;İnterrupt kontrol denetleme registeri. ;0Ch adresi ve sonrası kullanıcı programları için ;ayrılmıştır. ;Bank 1 registerleri tanımlamaları OPTION EQU 81h ;Bazı ayarlamaları tutan reg. TRISA EQU 85h ;PortA yönlendirme reg. TRISB EQU 86h ;PortB yönlendirme reg. EECON1 EQU 88h ;EEPROM işlemleri 1. reg. EECON2 EQU 89h ;EEPROM işlemleri 2. reg. ;Ana ayarlamaları yapalım org 0h ;Reset vektörü adresi goto basla ;Reset işl. Prg. ; Şimdi ana programa başlayalım: başla clrf PORTA ;PORTA reg. sil bsf STATUS,5 ;Bank1 e geçmek için Status registerin 5. bitini 1 yap. movlw 3Dh ;PA1 i çıkış yapmak için movwf TRISA ;trisa da ayarlandı. 65

bcf STATUS,5 ;Bank 0 a geç. tekrar bcf PORTA,1 ;Ledi söndür tus1 btfss PORTA,0 ;tuşu kontrol et goto tus1 ;tuş basılmamışsa geri git bsf PORTA,1 ;Tuş basılıdır, ledi yak tus2 btfsc PORTA,0 ;Tuşu kontrol et goto tus2 ;tuş basılı ise geri git goto tekrar ;tuş bırakılmış ise başa git end ;program sonu Örnek 4-1-b) Önceki örneğimizde tanımlamaların çok fazla yer tuttuğunu görmüştük. Bunu kısaltarak programı tekrar yazalım: Çözüm: Bu işlemde iki çözümden birini kullanmak mümkündür. Bu çözümlerden ilki kullanmadığımız registerleri tanımlama alanına yazmamaktır. Bu durumda yine de bir tanımlama alanını yazmak gerekir. İkinci metod ise microchip firmasının yazdığı pic16f84.inc dosyasını, programa eklemek yeterli olacaktır. (Bu dosyanın içeriği Ek- B de verilmiştir.) Bu işlem include komutu ile yapılır. Bu durumda program aşağıdaki gibi olur. ;Tanımlama ve ana ayarları yapalım: list p=16f84 include pic16f84.inc org 0h ;Reset vektörü adresi goto basla ;Reset işl. Prg. 66

; Şimdi ana programa başlayalım: başla clrf PORTA ;PORTA reg. sil bsf STATUS,5 ;Bank1 e geçmek için Status registerin 5. bitini 1 yap. movlw 3Dh ;PA1 i çıkış yapmak için movwf TRISA ;trisa da ayarlandı. bcf STATUS,5 ;Bank 0 a geç. tekrar bcf PORTA,1 ;Ledi söndür tus1 btfss PORTA,0 ;tuşu kontrol et goto tus1 ;tuş basılmamışsa geri git bsf PORTA,1 ;Tuş basılıdır, ledi yak tus2 btfsc PORTA,0 ;Tuşu kontrol et goto tus2 ;tuş basılı ise geri git goto tekrar ;tuş bırakılmış ise başa git end ;program sonu Örnek 4-2: Akış diyagramlarında verilen ikinci örneğin programını yazalım. Çözüm : Hatırlama açısından algoritmasını tekrar yazalım: Algoritma: 1) Başlangıç ayarlamalarını yap. 2) Ledi söndür. 3) Butonun basılı olup olmadığını kontrol et. 4) Buton basılı değilse 3. adıma dön. 5) Buton basılı ise ledi yak. 67

6) Butonun basılı olup olmadığını kontrol et. 7) Buton basılı ise 6. adıma dön. 8) Butonun basılı olup olmadığını kontrol et. 9) Buton basılı değilse 8. adıma dön. 10) Buton basılı ise ledi söndür. 11) Butonun basılı olup olmadığını kontrol et. 12) Buton basılı ise 11. adıma dön. 13) Buton basılı değilse 3. adıma dön. Şimdi de programımızı yazalım: ;Tanımlama ve ana ayarları yapalım: list p=16f84 include pic16f84.inc org 0h ;Reset vektörü adresi goto basla ;Reset işl. Prg. ; Şimdi ana programa başlayalım: başla clrf PORTA ;PORTA reg. sil bsf STATUS,5 ;Bank1 e geçmek için Status ün 5. bitini 1 yap. movlw 3Dh ;PA1 i çıkış yapmak için movwf TRISA ;trisa da ayarlandı. bcf STATUS,5 ;Bank 0 a geç. tekrar bcf PORTA,1 ;Ledi söndür tus1 btfss PORTA,0 ;tuşu kontrol et goto tus1 ;tuş basılmamışsa geri git bsf PORTA,1 ;Tuş basılıdır, ledi yak 68

tus2 btfsc PORTA,0 ;Tuşu kontrol et goto tus2 ;tuş basılı ise geri git ;tus bırakılana kadar bekle tus3 btfss PORTA,0 ;tuşu kontrol et goto tus3 ;tuş basılmamışsa geri git bcf PORTA,1 ;Tuş basılıdır, ledi söndür tus2 btfsc PORTA,0 ;Tuşu kontrol et goto tus2 ;tuş basılı ise geri git goto tekrar ;tuş bırakılmış ise başa git end ;program sonu Örnek 4-3 : Akış diyagramlarında verilen üçüncü örneğin programını yazalım. Çözüm : Hatırlama açısından algoritmasını tekrar yazalım: Algoritma: 1) Başlangıç ayarlamalarını yap. 2) Ledi söndür. 3) Butonun basılı olup olmadığını kontrol et. 4) Buton basılı değilse 3. adıma dön. 5) Butonun basılı olup olmadığını kontrol et. 6) Buton basılı ise 5. adıma dön. 7) Ledi yak. (Buton bırakılmıştır.) 8) Butonun basılı olup olmadığını kontrol et. 9) Buton basılı değilse 8. adıma dön. 10) Buton basılı ise ledi söndür. 11) Butonun basılı olup olmadığını kontrol et. 69

12) Buton basılı ise 11. adıma dön. 13) Buton basılı değilse 3. adıma dön. Şimdi de programımızı yazalım: ;Tanımlama ve ana ayarları yapalım: list p=16f84 include pic16f84.inc org 0h ;Reset vektörü adresi goto basla ;Reset işl. Prg. ; Şimdi ana programa başlayalım: başla clrf PORTA ;PORTA reg. sil bsf STATUS,5 ;Bank1 e geçmek için Status reg. in 5. bitini 1 yap. movlw 3Dh ;PA1 i çıkış yapmak için movwf TRISA ;trisa da ayarlandı. bcf STATUS,5 ;Bank 0 a geç. tekrar bcf PORTA,1 ;Ledi söndür tus1 btfss PORTA,0 ;tuşu kontrol et goto tus1 ;tuş basılmamışsa geri git tus2 btfsc PORTA,0 ;Tuşu kontrol et goto tus2 ;tuş basılı ise geri git tus bırakılana kadar bekle bsf PORTA,1 ;Ledi yak tus3 btfss PORTA,0 ;tuşu kontrol et goto tus3 ;tuş basılmamışsa geri git 70

bcf PORTA,1 ;ledi söndür. tus4 btfsc PORTA,0 ;Tuşu kontrol et goto tus4 ;tuş basılı ise geri git ;tus bırakılana kadar bekle goto tekrar ;tuş bırakılmış ise başa git end ;program sonu Buraya kadar verdiğimiz örneklerle hem assembler program yazmayı hem de komutların bir kısmının kullanım tekniğini öğrendik. Ayrıca en önemlisi program yaparken nasıl düşünmemiz gerektiğini öğrendik. Şimdi çeşitli örneklerle programlama tekniğini öğrenmeye devam edelim. Problem 4.1: Bir gökdelenin 4 katlık bir bölümündeki yangın kontrol ve söndürme sisteminin şu şekilde çalışması isteniyor. Herhangi bir kattan yangın algılandığında o kata ait yangın söndürme fıskiyeleri devreye giriyor ve yangın devam ettiği sürece çalışıyorlar. Yangın bittiğinde ise kapanıyorlar. Ayrıca sistemin ortak su tankını kontrol eden bir bölümü ise depodaki su deponun yarısına düştüğünde 1 motor ile depoya su pompalıyor. Yangın algılayan sensörler kendi içinde duman ve ısı algılayarak çalışıyor ve sisteme yangın varken 1, yangın yokken 0, bilgisi veriyorlar. Bu işlem için gerekli devrenin prensip şemasını çiziniz ve programını yazınız. Çözüm: Bu sistemde öğrenci mantığı ile düşünüldüğünde, her bir kattaki sensör bir buton olarak düşünülüp tek tek buton kontrollu çıkış gibi algılanabilir. Ancak daha basit mantıkla, sensörden gelecek bilginin aynısının kendisi ile ilgili çıkışa gönderilebileceğini görürüz. Bu mantıkla düşünülünce yangın söndürme kısmı 71

sadece bir oku-yaz programı olur. Depo için ise 2 sensör gerekir ki; birisi deponun yarı seviyesini gösterecek, diğeri ise dolu olduğunu gösterir. Buna göre depo kısmı için seviye yarının altında ise doldurma motorunu çalıştır, depo doldu ise motoru durdur mantığı şeklinde düşünülür. ;RA0,RA1,RA2,RA3 ucları her kattaki yangın algılayıcılar ;RB0, RB1,RB2, RB3 ucları katlardaki yangın fıskiyeleri ;RB4 Su seviyesi yarım sensörü ;RB5 Su dolu sensörü ;RB6 motor çıkışı ;RB7 boş çıkış LIST P=16F84 STATUS EQU 3h PORTB EQU 6h TRISB EQU 6h PORTA EQU 5h TRISA EQU 5h yedek equ 11h X1 org 0h ; Power on goto START ; 0000 START bsf STATUS,5 movlw b'00110000' ;RB7,RB6,RB3,RB2,RB1,RB0 çıkış movwf TRISB movlw 0Fh ;A portu giriş movwf TRISA bcf STATUS,5 deger clrf PORTB clrf yedek 72

devam movf PORTA,w andlw 0Fh iorwf yedek,w movwf PORTB bos btfsc PORTB,4 goto dolu bsf PORTB,6 bsf yedek,6 dolu btfss PORTB,5 goto devam bcf PORTB,6 bcf yedek,6 goto devam END 73