201

Deney No Deney Adı Tarih 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması …/…/201... 3.1 AMAÇ: Assembly programlama dili kullanarak mikr...
Author: Ilhami Özgen
21 downloads 0 Views 394KB Size
Deney No

Deney Adı

Tarih

3

Mikrodenetleyici Portlarının Giriş Olarak Kullanılması

…/…/201...

3.1 AMAÇ: Assembly programlama dili kullanarak mikrodenetleyici portlarını giriş olarak kullanmak. GİRİŞ: Bir portun giriş olarak mı yoksa çıkış olarak mı kullanılacağını belirten TRIS kaydedicileridir. Bir pinin giriş olarak kullanılabilmesi için ilgili TRIS kaydedicisindeki biti lojik “1” yapılır. Çıkış olarak kullanmak için ise lojik “0” yapılmalıdır. RAM belleğin yapısı düşünüldüğünde PORT kaydedicileri Bank0’da yer alırken TRIS kaydedicileri Bank1’de yer almaktadır. Assembly dili ile portun giriş/çıkış yönlendirilmesi yapılırken TRIS kaydedicilerine veri yazmadan önce mutlaka bank değiştirme işlemi yapılır. Bunun için STATUS kaydedicisinin 5 nolu bitini(RP0 biti) lojik 1 yapmak yeterlidir. PORT’lara erişim için ise tekrar Bank0’a geri dönülür. Bunun için ise STATUS kaydedicisinin 5 nolu biti lojik “0” yapılır.

Status kaydedicisi programın akışını kontrol eden en önemli kaydedicidir. RP1,RP0 : Doğrudan adreslemede bank seçimi yapar. o 00 : Bank0 o 01 : Bank1 o 10 : Bank2 o 11 : Bank3  Z - Zero bit o Sıfır Biti: Aritmetik veya lojik bir işlemin sonucu  0 ise Z = 1 değilse Z = 0  DC - Digit carry/borrow bit o Yarım Elde Biti: İlk dört haneden elde veya borç oluşursa DC = 1 oluşmazsa DC = 0  C - Carry/Borrow bit o Elde Biti: işlem sonucunda elde veya borç oluşursa C = 1 oluşmazsa C = 0 

DEVRE ŞEMASI:

Deney No

Deney Adı

Tarih

3

Mikrodenetleyici Portlarının Giriş Olarak Kullanılması

…/…/201...

UYGULAMA KODLARI

BEGIN

MAIN

LIST INCLUDE __config

P=16F877A "P16F877A.INC" 0x3FFA

ORG BSF CLRF MOVLW MOVLW BCF CLRF

20h STATUS, RP0 TRISD 0x3F TRISB STATUS, RP0 PORTD

MOVF MOVWF GOTO END

PORTB, W PORTD MAIN

Sorular: 1. Hatayı bulup, düzeltiniz. 2. ORG deyimini silip ne gibi değişiklik olduğunu gözlemleyiniz. 3. GOTO $-2 komutunu uygun satıra yerleştirip deneyiniz.

Deney No

Deney Adı

Tarih

3

Mikrodenetleyici Portlarının Giriş Olarak Kullanılması

…/…/201...

3.2 AMAÇ: Assembly programlama dili kullanarak mikrodenetleyici portlarında zaman gecikmeli olarak verinin değiştirilmesini sağlamak. GİRİŞ: Mikrodenetleyiciler program hafızasında yer alan komutları yüksek hızda işleme yeteneğine sahiptirler. PIC mikrodenetleyicisinde 4 saat darbesi (clock pals) sonucunda 1 komut işlenir. 4 Mhz kristal ile çalışan bir PIC mikrodenetleyicisi saniyede 1 milyon komut işler. Gömülü sistem programlamada bu komut işleme sayısı 1 MIPS(million instruction per second) olarak adlandırılır. Bir port üzerinde gözle görülebilir veri değişikli yapmak için iki veri yükleme komutu arasına gecikme oluşturacak kod bloğu yazılmalıdır. Aslında bu kod bloğu işlemciyi bir süre oyalamak içindir. Portlarda verinin ne kadar süre ile kalmasını istiyorsak ona göre süre arttırılıp azaltılabilir. Portlardaki verinin, yandaki şekilde verildiği gibi değiştirilebilmesi için, doğrudan porta veri yükleme(MOVLW, MOVWF) komutlarının yanı sıra, 4bit yer değiştirme(SWAPF) veya eşlenik alma(COMF) komutları da kullanılabilir.

DOĞRUDAN VERİ YÜKLEME ……………………………… MAIN MOVLW 0x0F MOVWF PORTD CALL DELAY MOVLW 0xF0 MOVWF PORTD CALL DELAY GOTO MAIN ………………………………

DEVRE ŞEMASI:

4 BİT YER DEĞİŞTİRME ……………………………… MAIN MOVLW 0x0F MOVWF PORTD CALL DELAY MAIN2 SWAPF PORTD, F CALL DELAY GOTO MAIN2 ………………………………

EŞLENİK ALMA ……………………………… MAIN MOVLW 0x0F MOVWF PORTD CALL DELAY MAIN2 COMF PORTD, F CALL DELAY GOTO MAIN2 ………………………………

Deney No

Deney Adı

Tarih

3

Mikrodenetleyici Portlarının Giriş Olarak Kullanılması

…/…/201...

UYGULAMA KODLARI

SAYAC1 SAYAC2

LIST INCLUDE __config EQU EQU ORG

P=16F877A "P16F877A.INC" 0x3FFA 0x21 0x22 20h

BSF CLRF BCF CLRF

STATUS,RP0 TRISD STATUS,RP0 PORTD

MOVLW MOVWF CALL MOVLW MOVWF CALL GOTO

0x0F PORTD DELAY 0xF0 PORTD DELAY MAIN

MOVLW MOVWF MOVLW MOVWF DECFSZ GOTO DECFSZ GOTO RETURN END

0xFF SAYAC1 0xFF SAYAC2 SAYAC2,F SAY2 SAYAC1,F SAY1

BEGIN

MAIN

DELAY SAY1 SAY2

Sorular: 1. Üç yöntemi uygulayınız. 2. SAYAC adresleri hangi aralıkta olabilir, değiştiriniz ve ne gibi değişiklik olduğunu gözlemleyiniz. 3. SAYAC değişkenlerine atanan değerleri değiştirerek sonuçları gözlemleyiniz.

Deney No

Deney Adı

Tarih

3

Mikrodenetleyici Portlarının Giriş Olarak Kullanılması

…/…/201...

3.3 AMAÇ: Assembly programlama dili kullanarak PORTB VE PORTC’ye bağlı anahtarlardan aldığı giriş bilgisini lojik kapı işlemlerini gerçekleştirip sonucu PORTD’ye bağlı LED’ler ile gösteren MPASM kodlarını yazınız.

LIST P=16F877A INCLUDE "P16F877A.INC" __config 0x3F3A ORG 20h BEGIN BSF STATUS,RP0 CLRF TRISD CLRF TRISA MOVLW 0xFF MOVWF TRISB MOVWF TRISC BCF STATUS,RP0 MAIN BCF STATUS, C MOVF PORTB,w XORWF PORTC,w MOVWF PORTD MOVF STATUS, w MOVWF PORTA GOTO MAIN END Sorular: 1. Tüm aritmetik ve mantıksal komutları uygulayınız bayrak durumlarını gözlemleyiniz.

Deney No

Deney Adı

Tarih

3

Mikrodenetleyici Portlarının Giriş Olarak Kullanılması

…/…/201...

3.4 AMAÇ: Assembly programlama dili kullanarak mikrodenetleyici portuna bağlı ledler üzerinde yürüyen ışık uygulaması gerçekleştirmek. GİRİŞ: Mikrodenetleyici portlarına bağlı ledler üzerinde gözle görünebilir hız aralığında değişik verilerin görüntülenebilmesi için veriler arasında gecikme blokları yer almalıdır. Ledler üzerinde yandaki animasyonun sağlanması için farklı kodlar kullanılabilir. Doğrudan veri yüklemenin yanı sıra kaydırma(RRF, RLF) komutları kullanılabilir. Ayrıca görüntülenmek istenen veriler bir hafıza bloğuna yazılıp, buradan sıra ile okunması sağlanabilir. DEVRE ŞEMASI:

UYGULAMA KODLARI

SAYAC1 SAYAC2

LIST INCLUDE __config EQU EQU ORG

P=16F877A "P16F877A.INC" 0x3FFA 0x21 0x22 20h

……… SAGA_KAY

BSF CLRF BCF BCF CLRF

STATUS, RP0 TRISD STATUS, RP0 STATUS, C PORTD

DELAY

MOVLW MOVWF

0x01 PORTD

CALL RLF BTFSS GOTO

DELAY PORTD,F PORTD,7 SOLA_KAY

BEGIN

MAIN

SAY2

SOLA_KAY

………

SAY1

CALL RRF BTFSS GOTO GOTO

DELAY PORTD,F PORTD,0 SAGA_KAY SOLA_KAY

MOVLW MOVWF MOVLW MOVWF DECFSZ GOTO DECFSZ GOTO RETURN END

0xFF SAYAC1 0xFF SAYAC2 SAYAC2,F SAY2 SAYAC1,F SAY1