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



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

# 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

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

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

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

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.

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

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

LCD (Liquid Crystal Display )

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

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

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

LCD (Liquid Crystal Display)

Hacettepe Robot Topluluğu

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

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

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

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

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

PIC TABANLI, 4 BASAMAKLI VE SER

KONFİGÜRASYON BİTLERİ

Komutların İşlem Süresi

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

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

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

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

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

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

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

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

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

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

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

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

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

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

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

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

PIC16F877A nın Genel Özellikleri

# 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

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

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

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

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

8 Ledli Havada Kayan Yazı

Hacettepe Robot Topluluğu

Microprocessors and Programming

PIC MCU ile UYGULAMALAR

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

PROGRAMLANABİLİR ZAMANLAYICI

ONDOKUZ MAYIS ÜNİVERSİTESİ

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

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

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 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İKROİŞLEMCİLER VE MİKRO DENETLEYİCİLER 2 DERS NOTLARI Prof. Dr. Hakan Ündil Bahar-Final

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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 UYGULAMALARI. Öğr.Gör.Bülent Çobanoğlu

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

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

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

BİLİŞİM TEKNOLOJİLERİ

Configuration bitleri ve reset durumları hakkında kavramlar

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

Hacettepe Robot Topluluğu

Mikroişlemci Programlama Aşamaları

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

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

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Ü

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

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

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İ

1. Ders Giriş. Mikroişlemcili Sistem Uygulamaları

Hacettepe Robot Topluluğu

EasyPic 6 Deney Seti Tanıtımı

DENEY-2. 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

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

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

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

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

Mikroişlemci Nedir? Mikrodenetleyici Nedir? Mikroişlemci iç yapısı Ders Giriş. Mikroişlemcili Sistem Uygulamaları

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

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

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

Hacettepe Robot Topluluğu

PIC ASSEMBLY VE MAKROLAR

EEProm 24C08 UYGULAMA AMAÇ 24C08 MCU_VCC. e r : d e G. Sayfa - 1

Eğitim - Öğretim Yöntemleri Başlıca öğrenme faaliyetleri Kullanılan Araçlar Dinleme ve anlamlandırma

PIC Mikrodenetleyicileri

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

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

Hacettepe Robot Topluluğu

Transkript:

PIC Mikrodenetleyiciler PIC MCU= CPU + I/O pinleri+ Bellek(RAM/ROM) Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 1

PIC Mikro denetleyici Programlama Assembly programlama dili, çoğu zaman özel alanlarda geliştirilen yazılımlarda kullanılan alt seviyeli bir yazılım dili olarak tanımlanır. Bu dilin komutları, bilgisayarın doğrudan islettiği makine dili komutlarının birebir karşılığıdır. Bu nedenle bu dil için makine dili de denilebilir. Her ne kadar uzman programcıların özel alanlarda kullandığı bir dil olarak tanımlansa da, programcılar istedikleri takdirde her türlü uygulamayı bu dil ile geliştirebilirler ya da kullandıkları üst düzey dilaltından çağırabilecekleri procedurler/altprogramlar yazabilirler. Assembly diliyle yazılmış bir program(.asm) assembler derleyicisi ile makine diline (.hex) çevrilir. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 2

PIC mikro denetleyicileri assembly dili ile programlayabileceğimiz gibi C, BASIC, PASCAL gibi yüksek seviyeli bir programlama dili ile de programlamayabilirsiniz. Assembly dilinin kendine özgü komutları ve bu komutların yazılış şekilleri vardır. Kelime boyu 12 bit olan PIC' lerin farklı, 14 olanların farklı, 16 olanların farklı komut kümeleri vardır. Ortalama bir PIC mikro denetleyicisi (PIC16F84, PIC16F877 gibi) komut setinde 35 adet komut bulunmaktadır. Azaltılmış komut seti (RISC) kullanılması, komutlarının öğrenilmesinin ve program yazılmasının kolay olması yanında programın kısa sürede yazılabilmesini sağlar. Bu 35 komutun ne işe yaradığını ve PIC-Assembly yazım kurallarını bilerek PIC'ler için her çeşit programı yazabilirsiniz. Komutların büyük bir kısmı 1 saat çevrimi (tetikleme sinyali - clock/4) sırasında gerçekleştirilirken, test ve dallanma komutları 2 saat çevrimi/saykılı sırasında gerçekleştirilir. Komutların kullanımı sırasında, komutların içerisine farklı anlamlara sahip semboller / harfler yerleştirilir. Şekil 1'de, PIC MCU da kullanılan komutların içerisinde bulunan sembollerin / harflerin anlamları tablo şeklinde sunulmaktadır. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 3

Kodları yazmak için herhangi bir programa ihtiyacımız yoktur. Kod yazma işlemini her türlü metin editöründe yapabiliriz. Örneğin Windows içindeki not defteri (notpad) programı bunun için uygundur. Fakat bir sonraki hafta anlatılacak olan MPLAB (http://www.microchip.com adresinden indirilebilir) programı içindeki editörün kullanılması görsel açıdan kolaylık sağlayacaktır. Çünkü MPLAB içindeki assembly editörü komutları özelliklerine göre farklı renklerde, sabitleri farklı renklerde, açıklamaları farklı renklerde vs.. yazmakta ve program içerisindeki MPASM assembler derleyicisi ile yazılan programın anında simülasyonu yapılabilmekte ve test edilebilmektedir. Aşağıda aynı programın (BTP202.ASM) hem not defteri hem de MPLAB ile yazılmış halini görüyorsunuz: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 4

YAZIM BİÇİMİ Assembly dili yazım formatı/biçimi 4 alandan oluşmaktadır, bunlar; Etiket(Label), Komut kodu (OpCode), İşlenen (Operand) ve Açıklama (Comment) alanlarıdır. Etiket ve açıklama alanları seçimliktir yani isteğe bağlıdır. Etiket Alanı Komut Kodu (OpCode) İşlenen (Operand) Açıklama DON: MOVLW h 0F ; W kaydedicisine heksadesimal 0F sayısını aktarılmıştır Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 5

ASSEMBLER TALİMATLARI Assembler Komutu LIST #INCLUDE ORG Daha önce ortalama bir PIC mikro denetleyici (PIC16F84, PIC16F877 gibi) komut setinde 35 adet komut bulunduğunu söylemiştik. Program yazarken bu komutlar haricinde bazı assembler derleyici talimatlarını da kullanmamız gerekir. Bunlar; Açıklama PIC Mikro denetleyici seçme komutudur. Program, hangi PIC için yazıldı ise programın başında LIST P=16F877 komutuyla mutlaka belirtilmelidir Normalde program yazmaya başlamadan önce program içinde tüm kaydedicileri tek tek tanıtmamız gerekir. Bunu her seferinde yapmak yerine tüm bu tanımlamaların yapıldığı ve.inc uzantısı ile kaydedilmiş dosyaları programımız içinden çağırabiliriz. Böylece her program için bu zahmetten kurtulmuş oluruz. Bu dosyalarda ayrıca kaydedicilerin bitlerinin isimleri gibi bilgiler de yer almaktadır. Dolayısıyla dosyayı programımıza ekledikten sonra bitleri numaraları ile değil, isimleri ile belirtebiliriz. Kullanım şekli: INCLUDE "P16F877.INC Hangi programın MCU belleğinde hangi adreste tutulacağını tanımlar. Origin kelimesinden türetilen ORG komutu iki amaç için kullanılır; 1.Program komutlarının hangi adresten itibaren başlayacağını belirtmek için kullanılır. Reset vektörünün 0000h adresinde olduğunu daha önce söylemiştik. { ORG 0x00; burada program başlangıcını belirledik } EQU CBLOCK-ENDC END 2. Eğer donanım kesmesi (interrupt) kullanılacaksa, ORG komutu ile donanım kesmesi ile çalıştırılacak program parçacığının adresi de belirtilmelidir. Kesme vektörü de 0004h adresinde yer alıyordu. { ORG 0x04; burada ise kesme programcığı başlangıcını belirledik}. Atama komutudur. Bu komut İngilizce EQUAL kelimesinden türetilmiştir. Assembler sabitlerini veya RAM adreslerini tanımlar. Kullanım şekli: SAYAC EQU 48h; SAYAC isimli GPR kaydedicisi 48 nolu adrese atar. Kullanıcının tanımladığı kaydedicilere adres atarken, eğer kaydedici sayısı fazla ise tek tek EQU komutu kullamak yerine CBLOCK-ENDC komutları kullanılabilir. Aşağıdaki komut satırı ile sırası ile 05,05 ve 07. adreslere SAYAC1, SAYAC2 ve SAYAC3 değişkenleri atanmıştır. CBLOCK H 05 SAYAC1, SAYAC2, SAYAC3 ENDC Programın sonu. Programın nerede bittiği END komutu ile mutlaka belirtilmelidir. Derleyici END komutunu bulamadığı zaman programı derleyemez ve hata verir. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 6

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) CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF CONFIG h 3F31 ; CONFIG b 11111100110001 Not: Program belleğinin 2007h adresinde olup 14 bittir. eriģilebilmektedir. Bu bitlere sadece PIC programlama aģamasında Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 7

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

SAYILARIN GÖSTERİMİ Yazım formatında bir önemli konu da sayıların gösterim şeklidir. Assembly içinde aksi belirtilmedikçe her sayı onaltılık tabanda kabul edilir. Aşağıdaki tabloda hangi tabandaki sayının nasıl gösterildiği yer almaktadır Kullanım Sayı Tabanı 23 Onaltılık (hexadecimal) sayı sistemi 0x23 23h h'23' d'12' Onaltılık (hexadecimal) sayı sistemi Onaltılık (hexadecimal) sayı sistemi Onaltılık (hexadecimal) sayı sistemi Onluk(Decimal) sayı sistemi.12 Onluk(Decimal) sayı sistemi b'1011' G veya A G O 574 İkili(Binary) sayı sistemi ASCII Octal(Sekizli) sayı sistemi Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 9

PIC16F84 / PIC16F877 KOMUT SETİ Ortalama bir PIC mikro denetleyicisi (PIC16F84/PIC16F877 gibi) komut setinde 35 adet komut bulunmaktadır. PIC komutlarını 3 ayrı başlık altında inceleyebiliriz; Byte yönlendirmeli komutlar Bit yönlendirmeli komutlar Sabit (direkt veri) işleyen komutlar ve kontrol komutları Komutların yazılış biçimlerini açıklarken bazı tanımlama harfleri kullanacağız, bunların anlamı; Sembol b Açıklama 8 bitlik kaydedicinin ilgili bitini gösteren tanımlayıcı d Hedef seçici; d = 0 veya W ise Sonuç W kaydedicisinde tutulur d = 1 veya F ise Sonuç f kaydedicisinde tutulur Varsayılan değer d = 1 dir. f k W PC Kaydedici (file register) {örneğin PORTB, STATUS gibi} Sabit bir sayı veya etiket W kaydedicisi (akümülatör) Program Sayıcı (Program Counter) Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 10

.Sabit (direkt veri) işleyen komutlar ve kontrol komutları: Bit yönlendirmeli komutlar: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 11

.Byte yönlendirmeli komutlar: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 12

PIC16F84 / PIC16F877 KOMUT SETİ Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 13

Aritmetiksel-Mantıksal Ġşlemler Soru: W kaydedicisi içerisindeki h 0A sayısı ile h 13 sayısını toplayıp, sonucu B portunda gösteren program parçasını yazınız? Çözüm: MOVLW h 0A ADDLW h 13 MOVWF PORTB S4. W kaydedicisinin ilk 4 bitini (LSB tarafını) sıfırlayan fakat son 4 bitini (MSB tarafını ) olduğu gibi bırakan komut satırını yazınız. Çözüm: MOVLW h 37 ANDLW h F0 Soru: Çözüm: W=W*3 işlemini PIC Assembly komutları ile gerçekleştiriniz? MOVLW d 03 ; W kaydedicisine bir değer aktardık. W=03 MOVWF PORTB BCF STATUS, C RLF PORTB, F ; W içeriği PORTB ye aktarıldı. PORTB=03 ; Öncesinde elde bayrağı(c biti) sıfırkandı ; PORTB içeriği C ile birlikte bir bit sola kaydırıldı. PORTB=03*2 ADDWF PORTB,W ; PORTB ile W kaydedicisinin içeriğini topla sonucu W kaydedicisine ; aktar. W= 03*2 + 03 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 14

Örnek 1: PORB nin 7. bitine bağlı ledi yakıp söndüren program C1 1nF C2 1nF X1 1Mhz +5V 16 15 4 U1 OSC1/CLKIN RA0 OSC2/CLKOUT RA1 RA2 MCLR RA3 RA4/T0CKI PIC16F84A RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 17 18 1 2 3 6 7 8 9 10 11 12 13 ;==LED.ASM === LIST P=16F84 #INCLUDE<P16F84.INC> BSF STATUS,5 yüklendi DON: R CLRF TRISB BCF STATUS,5 CLRF PORTB BSF PORTB,7 BCF PORTB,7 GOTO DON END ; PORTB nin tüm uçları çıkış yapıldı ; PORTB ye b 0000 0000 değeri ; PORTB nin 7.bitini yak ; PORTB nin 7. bitini söndür // C dilinde gerçekleştirimi #include <pic.h> #include <delay.c> main(void) { TRISB = 0; // PORTB bitleri cikis yap for(;;) //sonsuz dongu { RB7 = 0; // LED OFF DelayMs(250); //250ms bekle RB7 = 1; //LED ON DelayMs(250); //250ms bekle } } Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 15

Örnek2: Tek bir buton ile led yakıp söndüren program parçası BASLA BTFSC PORTA,0 ;Butona basıldı mı GOTO BASLA BSF PORTB,0 ; LED i yak. BUTON_OFF BTFSS PORTA,0 ;Butonu serbest bırak. GOTO BUTON_OFF BCF PORTB,0 ; LED i söndür GOTO BASLA END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 16

Örnek 2: PORTB ye bağlı 8 ledi dörtlü olarak (ilk önce LSB tarafı daha sonra MSB tarafı olacak şekilde) yakıp, söndüren söndüren bir flashör devresi ve programı: +5V C1 1nF C2 1nF X1 1Mhz 16 15 4 U1 OSC1/CLKIN RA0 OSC2/CLKOUT RA1 RA2 MCLR RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC16F84A 17 18 1 2 3 6 7 8 9 10 11 12 13 R7 R6 R5 R4 R3 R2 R1 R0 Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 17

ÖRNEK 3. YURUYEN IġIK UYGULAMASI Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 18

Artır Azalt +5V +5V C1 1nF C2 1nF X1 1Mhz +5V 16 15 4 U1 OSC1/CLKIN RA0 OSC2/CLKOUT RA1 RA2 MCLR RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC16F84A 17 18 1 2 3 6 7 8 9 10 11 12 13 R8 R7 R9 R6 R5 R4 R3 R2 R1 R0 Örnek 4: PORTB ye bağlı ledler üzerinde binary (ikili) saydırma işlemi yapan PORTA nın RA0 ucuna bağlı butona basıldığında azaltacak, RA1 ucuna bağlı butona basıldığında artıracak program: don: LIST P=16F84 #INCLUDE<P16F84.INC> sayac1 equ h'09' sayac2 equ h'08' CLRF PORTA ;PORTA temizlenir CLRF PORTB ;PORTB temizlenir BSF STATUS, 5 ;BANK1 e geçilir 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 BTFSS PORTA, 0 ;PORTA 0. bitini test et INCF PORTB, 1 ;Artır butonu basılı ise PORTB yi bir artır CALL Bekle ;Bekle isimli gecikme programını çağır BTFSS PORTA, 1 ;PORTA 1. bitini test et DECF PORTB, 1 ;Azalt butonu basılı ise PORTB yi bir azalt GOTO don ;Başa dön Bekle ;Gecikme alt programı Loop1: decfsz sayac1,1 goto Loop1 decfsz sayac2,1 goto Loop1 return END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 19

Örnek 5: PORTA nın 0.bitine bağlı butona basınca (PORTB nin 0 bitine bağlı) ledi yakan/söndüren program LIST P=16F84 ; kullandığımız pic'i tanıttık. #INCLUDE<P16F84.INC> ; mplab da bulunan 16f84 dosyalarını çagırdık BSF STATUS,5 ; bank 1'e gec MOVLW 0XFF ; w<--< 0xff yükledik MOVWF TRISA ; portanın hepsi giriş CLRF TRISB ; portbnin hepsi çıkış BCF STATUS,5 ; bank 0'a geç CLRF PORTB ; portb yi sıfırla BUTON BTFSC PORTA,0 ; portanın 0'ıncı pini 0' mı? GOTO BUTON ; hayırsa tekrar kontrol et BUTON1 BTFSS PORTA,0 ; portanın 0'ıncı pini 1' mi? GOTO BUTON1 ; hayırsa tekrar kontrol et BTFSC PORTB,0 ; led sönükmü? GOTO SON ; hayırsa sön'git BSF PORTB,0 ; evetse ledi yak GOTO BUTON ; tekrar butonu kontrol et SON BCF PORTB,0 ; ledi söndür GOTO BUTON ; tekrar butonu kontrol et END ; programı bitir Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU 20

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

Örnek 7: 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 22