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

Benzer belgeler
PIC Mikrodenetleyiciler. Hazırlayan:Öğr.Gör.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

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

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

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

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

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.

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.

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

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

PIC ASSEMBLY VE MAKROLAR

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

LCD (Liquid Crystal Display )

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

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

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

MIKROBILGISAYARLAR ve PIC PROGRAMLAMA TEST ÇALIŞMA SORULARI

PIC TABANLI, 4 BASAMAKLI VE SER

PIC MIKRODENETLEYICILER-3: GECĠKME ve KESME PROGRAMLARI

KOMUT AÇIKLAMALARI VE ÖRNEKLERİ

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

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

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

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

PIC16F877A nın Genel Özellikleri

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu

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

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

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

KONFİGÜRASYON BİTLERİ

Hacettepe Robot Topluluğu

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

Komutların İşlem Süresi

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

LCD (Liquid Crystal Display)

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

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

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

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

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

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

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

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

PIC MCU ile UYGULAMALAR

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

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

# 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

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

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

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

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

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

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

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

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

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

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

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

ONDOKUZ MAYIS ÜNİVERSİTESİ

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

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

ELEKTRİK-ELEKTRONİK TEKNOLOJİSİ

Mikro denetleyicili Uygulama devresi bileşenleri

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

8 Ledli Havada Kayan Yazı

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

KONTROL VE OTOMASYON KULÜBÜ

Mikroişlemci Programlama Aşamaları

BİLİŞİM TEKNOLOJİLERİ

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

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

Microprocessors and Programming

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

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İKRODENETLEYİCİLER II DERS NOTLARI Prof. Dr. Hakan ÜNDİL Bahar-FİNAL KISMI

MTM 305 MĠKROĠġLEMCĠLER

Hacettepe Robot Topluluğu

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

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Ü

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

PIC PROGRAMLAMA STEP MOTOR SÜRÜCÜ VE KONTROL AMAÇ NEDİR? Unipolar Step Motorlar. Uç TESPİTİ NASIL YAPILIR?

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

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

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

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

Hacettepe Robot Topluluğu

ADC: Anolog-Digital Çevirici

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 Mikro denetleyiciler ve Programlama. Öğ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Ü

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

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İ) BİLİŞİM TEKNOLOJİLERİ MİKRODENETLEYİCİLER 1

DEVRELENDİRİLMİŞ LOJİK

BLGM423 Gömülü Sistem Tasarımı

Mikroislemci Kontrollu Prototip Trafik Lambalari ve Geri Sayici

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Ü

MPLAB IDE v7.60 PROGRAMI KULLANIMI

Transkript:

B Yrd. Doç.Dr. Bülent ÇOBANOĞLU Hazırlayan:Yrd.Doç.Dr.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 işlettiğ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 (MPASM) ile makine diline (.hex) çevrilir. PIC lerin belki de yaygın olarak kullanılmasının sebeplerinden biride Assembly haricinde C, Basic, Pascal ve Fortran dilleri ile de programlanabilmesidir. En yaygın kullanılan C derleyicileri arasında ; Hitech PIC C/XC8, CCS C, MicroC, FED C, C30 C derleyicileri sayılabilir. C Dili ile MCU programlama aşamaları 2 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

MPLAB Programı içinde tanımlanan Derleyiciler ve Farkları Örnek bir programda derleyici bellek kullanım oranları http://www.microchip.com/developmenttools/getting_started /gs_mplab3.aspx Genellikle Assembly kod satırları C den daha fazladır. Fakat daha az bellek kullanımı sağlar. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 3

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

.C den.hex uzantıya dönüşüm Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 5

.C den.hex uzantıya dönüşüm Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 6

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

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 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 isimli 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: 8 Hazırlayan:Yrd.Doç.Dr.Bül ent ÇOBANOĞLU

GENEL ASSEMBLY KOMUT FORMATI PIC Assembly komut yapısında yer alan simgeler; Komut/İşlem kodu (OpCode); Örnek: ADDWF f,d Kaydedici/Değişken (f); Örnek: ADDWF f,d Hedef (d); Örnek: ADDWF f,d İşlenen (Operand); Sabit/Literal yada etiket,örnek: ADDLW k, GOTO Don ve bit (b) Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 9

ASSEMBLY KOD 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:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 10

ASSEMBLY KOD 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) ve Direktifler İşlenen (Operand) Açıklama Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 11

ASSEMBLER TALİMATLARI 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; Assembler Komutu LIST #INCLUDE ORG EQU 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 } 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. CBLOCK-ENDC 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 END Programın sonu. Programın nerede bittiği END komutu ile mutlaka belirtilmelidir. Derleyici END komutunu bulamadığı zaman programı derleyemez ve hata verir. $ Program sayıcının o anki yerini döndürür. 5 komut aşağı gitmek için $ +5, yukarı gitmek için $ -5 şeklinde de kullanılabilir. Kullanım şekli: GOTO $ RETLW komutu yerine kullanılır. RETLW komutu ilealt alta yazılan veriler, dt komutu ile yan yana yazılır. dt BANKSEL, BANKISEL Bank değiştirme komutu. Örneğin BANK1 e geçmek için BSF STATUS,5 komutu yerine Bank1 deki herhangi bir kaydedicinin 12 ismi yazılarak BANKSEL TRISB bank1 e geçilir. BANKISEL ise BANK2 ve BANK3 ü kullanmak için IRP bitini 1 yapar Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

ASSEMBLER TALİMATLARI Assembler Komutu #DEFINE #UNDEFINE fill constant, variable SET code config Açıklama Sembolik sabitlerin tanımlanmasını sağlar. C dilinde de geçerlidir. Örnek: #define LED PORTB,0 #define _XTAL_FREQ 10000000, #define position(x,y,z) (Y-(2 * Z +X)) #DEFINE ile bildirilen sembolik sabitlerin değerini program içerisinde değiştirmek için kullanılır. Örnek: #undefine LED #define LED PORTD,7 Fill komutu, program belleğinin kullanılmayan bellek alanlarını belli bir sabit veya Assembly komutu ile doldurur. Örneğin; fill (NOP), 10 gibi Sabit tanımlamak için kullanılır. Değişkenlere başlangııç değeri vermede kullanılır. Program içerisinde değeri tekrar değişecekse variable tercih edilir. EQU komutunun işlevine sahiptir. [Etiket] code [ROM bellek adresi] ORG komutuna benzer. Bellek adresini etiketler config _HS_OSC & _WDT_OFF & _LVP_OFF Konfigürasyon bitlerini ayarlar da/db/de/dw/ data Prgoram belleğinde string veya karakter saklarlar. db, de, dt, dw, data benzer işlevlere sahiptir. Örnek; da "abcdef" 13 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

ASSEMBLER TALİMATLARI Assembler Komutu Açıklama If, else if, else, endif if sayi < 50 incf speed, F else decf speed, F endif while, endw #Ifdef, #ifndef Koşul doğru olduğu sürece döngü çalışır. Koşullu karar yapısıdır. If bloğu endif ile sonlandırılır Ifdef, bir sembolik ismin bildirildiğini sorgulamaktayken, ifndef bir sembolik ismin bildirilmediğini sorgulamaktadır. Örnek Kullanım; define UsePORTB #ifndef UsePORTB MyPort equ PORTC ;Eğer UsePORTB tanımlı değilse Port C yi kullan MyTris equ TRISC #else MyPort equ PORTB ; Eğer UsePORTB tanımlı ise Port B yi kullan MyTris equ TRISB #endif macro Assembly diline özgü fonksiyon tanımlamak (makro yazmak) için kullanılır. Kullanım şekli; Etiket macro [arg1, arg2..., argn] :: endm 14 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

ASSEMBLER TALİMATLARI: macro örneği add macro num1,num2 if num1>0xff ;Eğer num1>255 ise exitm ;makrodan çık else if num2>0xff ;Eğer num2>255 ise exitm ;makrodan çık else movlw num1 ; W=num1 movwf Sonuc ;Sonuc=W movlw num2 ; W=num2 addwf Sonuc,F ;Sonuc=Sonuc+W endif endif endm ;'add' isimli MACRO yu sonlandır Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 15

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 Onaltılık (hexadecimal) sayı sistemi 23h Onaltılık (hexadecimal) sayı sistemi h'23' Onaltılık (hexadecimal) sayı sistemi d'12' Onluk(Decimal) sayı sistemi.12 Onluk(Decimal) sayı sistemi b'1011' İkili(Binary) sayı sistemi G veya A G ASCII O 574 Octal(Sekizli) sayı sistemi Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 16

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 Açıklama b 8 bitlikkaydedicinin 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:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 17

Assembly Komutları Hazırlayan: Y.Doç.Dr.Bülent ÇOBANOĞLU 18

Byte yönlendirmeli komutlar: Sembol Tanımlamaları : f - Register File Adress: kayıtçı adı veya adresi (0x00 ile 0x7F) w - Akümülatör, çalışma kayıtçısı b - Bit tanımlayıcısı; 8 bitlik kayıtçının 0~7 arasındaki bir biti veya etiket. (EQU komutu ile adresi tanımlanmış olması gerekir) d - Destination : Gönderilecek yer; komutun çalıştırılmasından sonra sonucun nereye yazılacağını belirler. d = 0 - W kayıtçısına, d = 1 - dosya kayıtçısına k - Sabit bir sayı (0x0C veya 0CH, 00001100B, 10D) veya adres etiketi x - 0 yada 1 önemli değil TO - Zaman aşımı biti (Time-out bit) 19 PD - Güç kesimi biti (Power-down)

BİT İŞLEM KOMUTLARI Sabit (Direkt Veri) İşleyen Komutlar Ve Kontrol Komutları: Sembol Tanımlamaları : f - Register File Adress: kayıtçı adı veya adresi (0x00 ile 0x7F) w - Akümülatör, çalışma kayıtçısı b - Bit tanımlayıcısı; 8 bitlik kayıtçının 0~7 arasındaki bir biti veya etiket. (EQU komutu ile adresi tanımlanmış olması gerekir) d - Destination : Gönderilecek yer; komutun çalıştırılmasından sonra sonucun nereye yazılacağını belirler. d = 0 - W kayıtçısına, d = 1 - dosya kayıtçısına k - Sabit bir sayı (0x0C veya 0CH, 00001100B, 10D) veya adres etiketi x - 0 yada 1 önemli değil TO - Zaman aşımı biti (Time-out bit) PD - Güç kesimi biti (Power-down) 20

Mantıksal Komutlar RLF, sayıyı 2 ile çarpmada RRF, sayıyı 2 ye bölmede Kullanılabilir. Elde bitinin işleme katıldığını unutmayalım. 21 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Aritmetiksel-Mantıksal İşlem Örnekleri (3/3) S7. k=i+j+20 işlemini Assembly dili ile gerçekleştiriniz. C Dili Assembly Karşılığı Açıklama 22 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Çalışma Sorusu: Dereceyi- Fahrenayta çeviren programı yazınız. Formül: 1 e Tümleyen 2 ye Tümleyen Aritmetiği (1s Complement & 2s Complement) Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 23

XC8 derleyici için MicroC için asm { //birden fazla Assembly komutu } asm tek bir asm komutu Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 24

Aritmetiksel-Mantıksal İşlem Örnekleri (1/3) S1: 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 S2. 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 S3: W=W*3 işlemini PIC Assembly komutları ile gerçekleştiriniz? Çözüm: 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ırlandı ;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 25 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Aritmetiksel-Mantıksal İşlem Örnekleri (2/3) S4: PORTB ye bağlı ledleri sürekli yakıp- söndüren program parçasını yazınız. Çözüm: S5. Sürekli bir şekilde PORTB deki verileri PORTC ye gönderen programı yazınız. Çözüm: S6. Farzedelim ki odanın içerisindeki lambayı RB5 ile odanın dışındaki lambayı ise RB2 ile kontrol ediyoruz. Odanın dışındaki lamba açıkken odanın içerisindeki lambayı söndüren programı yazınız. Çözüm: 26 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Assembly Kod Şablonu LIST P=16F877 #INCLUDE "P16F877.INC" ORG 0X00 GOTO BASLA BASLA BANKSEL TRISB CLRF TRISB BANKSEL PORTB MOVLW 0X0A ADDLW 0X13 MOVWF PORTB GOTO $ END Tanımlamalar, Başlık/Kütüphane dosya tanımlamaları Ana program Program Sonu Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 27

Önce Proje dosyası oluşturulur. Bunun için Project Project Wizard seçilir Gelen «Welcome» penceresi «Next-İleri» butonuna basılarak geçilir. Bir sonraki pencereden «Select Device» kullanacağımız PIC seçilir. Kullanacağımız C veya Assembly derleyicisini seçiyoruz. Assembly için MPASM seçilir. Bir sonraki pencereden Proje klasörü seçilir ve projeye isim verilir. İsim vermede değişken ismi tanımlama kurallarına dikkat edilir. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 28

Proje klasörünün oluştuğu solda gelen.mcp uzantılı dosya ile Görülür. «.asm» uzantılı kaynak dosyasını yazmak için File New File Seçilir. Artık programımızı yazıp File Save As menüsünden.asm uzantılı olarak kaydediyoruz. Bu.asm uzantılı dosyayı Projemize eklemek için Source File üzerinde iken mouse ile Sağ Click Add Files seçilir. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 29

S4 de sorulan PORTB ye bağlı ledleri sürekli yakıp- söndüren programın tamamını yazıp MPLAB SIM ile simülasyonunu yapalım. MPLAB SIM, Debugger menüsünden seçilir. Step into simgesi ile adım adım çalıştırılır. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 30

S4 de sorulan PORTB ye bağlı ledleri sürekli yakıp- söndüren programın tamamını yazıp MPLAB SIM ile simülasyonunu yapalım. Değişken ve kaydedici içeriklerini görmek İçin ya MPLAB da View den Watch seçilerek yada Proteus ile simülasyon yapılır. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 31

Assembly LED ve Buton Uygulamaları Örnek 2: PORD nin 0. bitine bağlı ledi yakan/söndüren program MicroC XC8 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 32

Örnek 3: PORTB ye bağlı 8 ledi dörtlü olarak (ilk önce MSB tarafı daha sonra LSB tarafı olacak şekilde) yakıp, söndüren bir flaşör devresi ve programı: C kodu #include <xc.h> #define _XTAL_FREQ 4000000 void main(void) { TRISB = 0; PORTB = 0b11110000; while(1) { delay_ms(100); //çift alt tire asm ("SWAPF _PORTB,F"); delay_ms(100); } } Assembly kodu 33 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Örnek4: Tek bir buton ile led yakıp söndüren program parçası 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 D1 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU R1 4k7 ;Assembly Kodu 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 //C Kodu while(1){ if (RA0==0) RB0=0x01; else RB0=0; 34 }

LED ve Buton Uygulamaları Örnek 4: PORD nin 0. bitine bağlı buton basılı olduğu sürece RB0 a bağlı Ledi yakan programın Assembly kodu C kodu; 35 Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Örnek 5: PORTA nın 0.bitine (RA0) bağlı butona basınca PORTC ilk iki bitini yakan, 1. bitine (RA1) bağlı butona basılınca ise bu iki ledi söndüren programı yazınız. LIST P=16F877A INCLUDE <P16F877A.INC> ORG 0X00 GOTO BASLA BASLA BANKSEL TRISC ;BANK1'E GEC MOVLW 0X07 MOVWF TRISA ;PORTA GIRIS MOVWF ADCON1 ;PORTA VE PORTE DIGITAL CLRF TRISC ;PORTC CIKIS BANKSEL PORTC ;BANK0'A GEÇ CLRF PORTC BUTON1 BTFSC PORTA,0 ;RA0==0 mı? GOTO BUTON1 BUTON2 BTFSC PORTA,1 ;RA1==0 mi? GOTO LEDYAK CLRF PORTC GOTO BUTON1 LEDYAK MOVLW 0XFF MOVWF PORTC GOTO 36 BUTON2 END Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Örnek 6. Yürüyen Işık (Kara Şimşek)Uygulaması Assembly Kodu Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 37 C Kodu #include<xc.h> void main() { PORTB=0; TRISB=0; PORTB=1; STATUS=0; #asm SOL NOP RLF PORTB,F BTFSS PORTB,7 GOTO SOL SAG NOP RRF PORTB,F BTFSS PORTB,0 GOTO SAG GOTO SOL #endasm }

Çalışma Soruları 1. RA0 a bağlı butona basınca PORTBye bağlı ledlerin ilk dördü, RA1 e bağlı butona basınca son dördünü yakan programı yazınız. 2. 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ı yazınız. 3. PORTB ye bağlı ledler üzerinde PORTA nın RA0 ucuna bağlı butona basıldığında tek sayıları, RA1 ucuna bağlı butona basıldığında çift sayıları saydıracak programı yazınız. 4. Örnek 6 da verilen yürüyen ışık uygulamasını tamamen C komutları ile (1 sn lik gecikme) yazınız. Hazırlayan:Yrd.Doç.Dr.Bülent ÇOBANOĞLU 38