PIC ASSEMBLY VE MAKROLAR

Benzer belgeler
LCD (Liquid Crystal Display )

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

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

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

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

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

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

Hacettepe Robot Topluluğu

PIC TABANLI, 4 BASAMAKLI VE SER

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

LCD (Liquid Crystal Display)

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

Genel Programlama II

# 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

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.

HSancak Nesne Tabanlı Programlama I Ders Notları

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

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

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Hacettepe Robot Topluluğu

C++ Dersi: Nesne Tabanlı Programlama

PASCAL PROGRAMLAMA DİLİ YAPISI

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

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

1 PROGRAMLAMAYA GİRİŞ

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

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

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

NB Macro Kullanımı Hakkında Genel Bilgiler

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

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

C Programlama Dilininin Basit Yapıları

MTM 305 MĠKROĠġLEMCĠLER

HSancak Nesne Tabanlı Programlama I Ders Notları

ALGORİTMALAR. Turbo C Bilgisayarda Problem Çözme Adımları. Bilgisayarda Problem Çözme Adımları.

C++ Dersi: Nesne Tabanlı Programlama

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

Operatörlerin Aşırı Yüklenmesi

Sunum İçeriği. Programlamaya Giriş

Yrd. Doç. Dr. Caner ÖZCAN

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

Özyineleme (Recursion)

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

PROGRAMLAMAYA GİRİŞ DERS 2

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

NESNEYE YÖNELİK PROGRAMLAMA

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

C#(Sharp) Programlama Dili

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Algoritma ve Akış Diyagramları

Yrd. Doç. Dr. Caner ÖZCAN

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

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

KONTROL VE OTOMASYON KULÜBÜ

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

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Üst Düzey Programlama

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

Yrd. Doç. Dr. Caner ÖZCAN

ELN1001 BİLGİSAYAR PROGRAMLAMA I

HESAP MAKİNASI YAPIMI

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Öğr. Gör. Serkan AKSU 1

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Internet Programming II

MICROPROCESSORS ESA 86/88-3 KULLANIM KLAVUZU

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

PIC16F877A nın Genel Özellikleri

BİL-142 Bilgisayar Programlama II

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

5. PROGRAMLA DİLLERİ. 5.1 Giriş

Algoritmalar ve Programlama. Algoritma

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

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

BİLG Dr. Mustafa T. Babagil 1

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

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

BİLGİSAYAR PROGRAMLAMA MATLAB

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

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

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

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

Akış Kontrol Mekanizmaları

ALGORİTMA VE PROGRAMLAMA II

Fen ve Mühendislik Uygulamalarında MATLAB

Bilgisayarda Programlama. Temel Kavramlar

Transkript:

PIC ASSEMBLY VE MAKROLAR Abdullah UNUTMAZ Ağustos 2009

Pic Assembly ve Makrolar H U N R O B O T X M A K A L E L E R #DEFI E #DEFINE anahtar sözcüğü ile kendi tanımladığımız değişkenler, yada include dosyalarında tanımlanmış olan, adlandırılmış olan adresler kullanacağımız programı daha kolay yazıp gerek başkasının daha kolay anlaması, gerekse uzun bir sürenin ardından programa tekrar bakmamız gerektiğinde, yazdığımız kodları daha rahat anlamamız için adlarda değişiklikler yapabiliriz Örneğin ; #DEFINE INPUT PORTB,1 #DEFINE OUTPUT PORTB,2 Diyerek yeniden adlandırdığımız PORTB nin 1ve 2 bitlerini programın ilerleyen bölümlerinde kendi koyduğumuz isimlerini PORTB,1 ve PORTB,2 yerine kullanabiliriz Ayrıca böyle bir yaklaşımda mesela değişik zamanlarda belirli bir mantığa göre çalışan makineler yada robotlar yaptığımızda kullandığımız microchipin değişik pinlerini dahi input ve output olarak kullanacağımız zaman kodun birçok yerinde değişşiklik yapmak yerine sadece programımız başında tanımladığımız bu anahtar sözcüğü değiştirerek sorunu çözebiliriz #I CLUDE #INCLUDE anahtar sözcüğü programlayıcıya daha önceden yazılmış bir programı ve programında kullanacağı özel, belki evrensel, keywordleri ekleme imkanı sağlayan önemli bir koddur Örnek verecek olursak; #INCLUDE #INCLUDE <p16f876inc> <subprogramasm> CO STA T CONSTANT keywordü sayesinde programcı programın ilerleyen safhalarında değişmesini istemediği değişkenleri tanımlama imkanına sahiptir Örenk; CONSTANT CONSTANT <sabit ismi>=<sabitin sayısal değeri> DELAY=150

VARIABLE VARIABLE keywordü ile yazmış olduğumuz programda değişkenler tanımlayabilir ve bu değişkenlere göre koşul cümleleri tanımlayabiliriz VARIABLE VARIABLE <isim>=<sayısal değer> COUNTER=150 SET SET keywordü ile bir registerı mesela sayaç olarak atayabilirsiniz, ancak daha sonra aynı fonksiyonu kullanarak tutulan registerı değiştirebilirsiniz <kullanılacak isim> SET counter SET h 10 counter SET h 01 <registerın adresi> EQU EQU fonksiyonu neredeyse SET ile aynıdır, bir farkla, EQU ile atama ancak birkere yapılabilir Örnek verecek olursak; <register ismi> EQU <register adresi> register EQU h 05 ORG ORG keywordü ile programın chipin belleğinde hangi adresten itibaren kaydedildiğini belirleyebiriz Ayrıca kesme alt programının başlangıç adresini belirler ORG h 00 E D END programın bittiğini assemblerın anlamasını sağlar Kullanmak mecburidir, aksi halde hata kaçınılmaz olur Bütün kodlar bittikten sonra yazılır, yani alt programların da yazılmasından sonra eklenirörneğin; END

IF-E DIF Koşul Đfadeleri IF,eğer, ifadesi bir değişkenin değerine, belki net olarak bilinmesi durumunda bir portun değerine göre işlem yapmak için kullanılabilir Örneğin; IF COUNTER<100 INCF COUNTER,F GOTO START ELSE GOTO FINISH ENDIF Yukarıdaki örnekte ELSE ifadesi de dikkati çekiyor, ELSE ise IF ile araştırılan koşulun sağlanmadığı her durumda işlevlik kazanarak execution oluyor NOT : #DEFINE INPUT PORTB,1 ;şeklinde bir tanımlama yapınca IF INPUT==1 ;derleme esnasında hata verir ; illegal character (,) WHILE-E DW WHILE ifadesinden sonra sağlanması gereken şart yazılır, mesela; WHILE a<10 dediğimizde, a 10 dan küçük olduğu sürece ifadesini bilgisayarın anlayabileceği bir dile çevirmiş oluruz Kullanımı; WHILE <condition> WHILE A<50 A=A+1 ENDW ENDW IFDEF-E DIF DEFINE ile oluşturulan koşul ifadelerini test ederken kullanmak için geliştirilmiştir #define condition a==1 Đfdef Endif condition

IF DEF-E DIF IFNDEF, if not defined, ifadesini kullanarak da şart cümlesi oluşturabiliriz Bu ifdef in tam tersi şekilde çalışır Yani #DEFINE aracılığıyla tanımlanan koşul ifadesi #UNDEFINE keywordü ile silinmiş ise yada öyle bir koşul ifadesi hiçbir zaman oluşturulmamışsa IFNDEF koşul ifadesi sağlanır, yani true olur, ifndef-endif bloğu içinde kalan koda göre işlem yapılır #define input portb,1 #define inputcondition input==1 #undefine inputcondition Đfndef inputcondition Else Endif CBLOCK-E DC (Constants Block) CBLOCK ifadesi parametreye belirli bir sabit değer atadıktan sonra devam eden her parametreye bir öncesinin bir fazlası değer atayan bir nevi sabit dizisi elde etme yöntemidir CBLOCK h 01 bir, iki, uc ;bir=h 01 ENDC ; iki=h 02,uc=h 03 DB (Defining One Byte Data) Bellekte belirtilen adreslere verileri sırasıyla yazmaya yarayan fonksiyondur DB T,h 12, a, b,h 0f

DE (Defining the EEPROM) EEPROM hafızasına belirtilen adresten itibaren veri yazmak için kullanılırđlk defa tanımlanırken sadece EEPROM hedefli olarak yazılan bu fonksiyon istenilen bellek türünün istenilen adresine veri kaydı için kullanılabilir ORG h 2100 DE data,0 DT ( Data Table ) DT fonksiyonu ile oluşturulan tablo her işlenilişinde W,workin register a, 8086 ve 8085 gibi dillerde A, yani accumulator ın yerini tutar, kaldığı parametrenin değerini aktarır DT bir,iki,uc Makrolar Makrolar daha yüksek seviyeli programlama dillerindeki, mesela c gibi, fonksiyonların işlevini assemblyde görmektedir Makrolar programcıya bir kodu sadece bir kere makro olarak ifade ettikten sonra sadece o makroyu çağırarak istediği yerde kullanabilme olanağı ve,mesela, aradan uzun bir süre geçtiğinde unuttuğu programı daha kolay okumasını,eğer b,r grup olarak proje yapılıyorsa diğer üyeler için kodun okunma kolaylığını sağlar Nasıl ifade edildiklerine gelince ; <makro ismi> MACRO [<argüman1>,<argüman2>,<argüman3>,,<argümann>] ;argüman sayısı ihtiyaca bağlı olarak değişicektir hiçbir argüman kullanılmayabilir de ENDM Makroların kod içinde ifade edildikleri yere gelince, öncelikle unutulmamalıdır ki, daha ileri düzey programlama dilleriyle çalışmış kişiler Main fonksiyonunun dışında fonksiyonların tanımlanmalarıyla makroların tanımlanmasını karıştırmamalıdır, END ifadesinden sonra yazılan kodlar assembler tarafından algılanmayacaktır, dolayısıyla oluşturulan makrolar mutlaka bu ifadeden önce yer almalıdır Ayrıca makrolar asıl program dosyamızın dışında başka bir asm uzantılı program dosyasında ifade edildikten sonra bu makro dosyasını #INCLUDE komutuyla programımıza eklememizle de kullanıma açılmış olur Bu kullanımı normalde assembly komutları içerisinde yer almayan çarpma işlemi için kendi yazacağımız bir makroyu kullanmak için gözlemlyebiliriz ;

; -------------carpmaasm-----------------; toplam set 0xC0 carpma macro sayi, defa ; carpma isimli makromuzu ; toplam = sayi x defa işlemi için tanımlıyoruz movfw 0xc0 CarpimDongu addwf toplam,f decfsz defa goto CarpimDongu endm end ----------------------------------------------------------------------------------------------------------------- #INCLUDE carpmaasm carpma 3,5 end Gibi bir program güzel bir örnek olacaktır Bağlantılar http://roboteehacettepeedutr/