Loading...
Pic Programlama


 Forum

Uygulama1 Led Yak Söndür

Pic16f84 ile Led yakıp söndürme uygulaması;

şimdi genel bağlantı şemasına uyarak 16F84 ile 4 MHz lik bir kristal osilatörle aşağıdaki uygulamayı çalıştırın.

uygulamada portb nin 1 nolu pinine 220- 470 Ohm seri bir direnç ile led bağlayacaksınız, fakat
pic in güç girişinde regulatör devresi bağlamayı ihmal etmeyin, yanabilir.

aşağıdaki kodları not defteri gibi bir uygulamayla uzantısı asm olacak şekilde kaydedin. hazır kodlarını almak isterseniz buraya tıklayın(1_led_yak.asm).
ve mpasm programı yardımıyla derleyin,

derleme işlemi sonunda elde ettiğiniz 1_led_yak.hex dosyasını programlar bölümündeki Cardwriter programını kullanarak pic´e yükleyin.

aşağıda uygulamanın asm dosyasının içeriği görünüyor.


Şimdi kısaca açıklayalım bunları.

1) burası bizim kullandığımız pic in tanımları,
burada girdiğimiz list ile kullanacağımız pic türünü ve ardından da bu pic’e ait bir takım tanımlamaların bulunduğu include dosyasının adını giriyoruz. Bu include dosyası
zaten mapasm da mevcut, yani bu iki satırda tek yapacağımız şey pic i belirlemek, eğer bunları yapmazsanız, include dosyasının içinde ne var ne yok burada yazmalısınız, örneğin portb, trisb gibi yazmaçların tanımları bu dosyanın içinde bulunur, eğer derleme sırasında bunlarla ilgili
uyarılar alırsanız bilinki include dosyasında tanımlanmayan bir şey girmişsinizdir.

Ardından gelen __CONFIG satırı configürasyon bitleridir. Kullandığınız osilatör tipi WDT özelliği kod koruması gibi tanımlamalar var. bu özellikler programımızı pic´e yükleyen programlarda da mevcuttur oradan da ayarlayabiliriz.

Şimdilik burayı aynen alın ve geçin.

2) Bu bölüm başındaki org 0x0 başlangıç reset vektörü.
Pic çalışma esnasında  resetlersek bu konumdan program tekrar başlar.
org 0x0 Ardından gelenler de bizim kendimize ait tanımladığımız değişkenlerimiz.

3) BASLA . Bu programda herhangi bir yerde tekrar buraya dönmemizi sağlayack olan
etiketimiz.

Esas şu an için bundan sonrakiler önemli. Açıklayalım, (ve aslında en basit yeri burası)

BASLA

CLRF PORTB

Portb temizle (sıfır yükledik, çıkışlar sıfır)

CLRF SAYICI

Sayıcı olarak tanımlanmış değişkeni temizle

BSF STATUS,5
Bank 1´e geç. (TRISA ve TRISB yazmaçları ile ilgili işlem yapmak için, TRISA ve TRISB yazmacının bulunduğu bank 1 e geçmeliyiz
CLRF TRISB
Port B yi çıkış pozisyonuna getir
BCF STATUS,5
Bank 0´a geç. bunu yapmazsak BANK 1 de kalmış oluruz ve PORTA VE PORTB ile ilgili işlem yapmak için BANK 0 a geçmemiz gerekli.

SAY

SAY etiketi. Lazım olduğu yerde programın bu satırına gelebilmek için.

MOVLW B´00000001´

Working register’e binary 1 sayısını al.

Bir sayıyı önce W registere alıyoruz sonrada
kullanacağımız yerde W registerden alıp hedefe yüklüyoruz.
Yani şu an ileride kullanmak üzere w register´a atama işlemi yaptık.


Buradaki B ifadesi sayının binary (ikilik tabanda) olduğunu gösteriyor. Bunun yerine;

D’1’ yazarsak Desimal 1,

H ‘1’ yazarsak hexadecimal 1 vermiş oluruz,

Hepside aynı kapıya çıkmaktadır.

Ve birde B´00000001´ yerine B’1’ yazmamız yeterli.

MOVWF PORTB

W registerdeki sayı yı PORT B ye gönder.

w de 1 sayısı vardı, bu durumda portb nin ilk biti (led’in bağlı olduğu pin) 1 oldu
yani led şu an yandı.

CALL GECIKME

Gecikme yordamını çağır RETURN komutunun olduğu yerden geri dön.

Bunu yanma işleminden sonra LED´in bir süre yanık kalması için yaptık.

MOVLW B´00000000´

W reigstere binary 0 sayısını yükle.

W de 1 vardı silindi yerine sıfır yazıldı.

MOVWF PORTB

W registerdeki sayı yı PORT B ye gönder.

W registerde en son sıfır vardı bu değer port b
ye gitti, ve portb nin tüm
bitleri sıfırlandı yani çıkışlar LOW konumunda. Bu durumda led söndü.

CALL GECIKME

Bir süre bekle.

GOTO SAY

SAY etiketine git ve bozuluncaya kadar yada elektriğin kesilinceye kadar
aptal aptal aynı şeyleri tekrarla.


4) Gecikme bölümü,

burada birtakım döngülerle pici oyalıyoruz ve portlar bu oyalanma sırasında yeni bir işlem yapılmadığı için konumunu koruyor. Burada yapılan tek şey iç içe döngüler oluşturarak  gecikme sağlamak. Şimdilik buraya da fazla girmeyin programı bu şekilde öncelikle çalıştırın.

5) End. Programın sonu.

Eğer programı çalıştırmayı başardıysanız çayınızı kahvenizi yada biranızı yudumlayıp yeni şeyler yapmaya başlayabilirsiniz,

Mesela 3 nolu bölüm de 1, 10,100,1000,10000,100000,1000000,10000000
diye sayı saydırın, bu ne oluyor?

Black Lighting flash.
(Kara şimşeğin Türkingilizcesi...)

Kolay gelsin…
pregnancy stages open where to get an abortion pill

Etiketler : kodlar, pic komutları, led yakma, assembler kodları, pic uygulama, devre, led, mikroişlemci
Yazan : mania  |
19 Nis 2005 Sal   
|  38.051 defa Okundu.
Yorumlar

(Toplam yorum : 2113 )
Emir Yoldaş (Misafir)
22 May 2012 Sal
ben çok yeniyim bu işte bana bunun şemasını verir misiniz 
spy calling go spy apps for android free download
pregnancy stages define dilation and curettage where to get an abortion pill
Yorum Yaz
isim soyisim
Email
Anonim olarak mesaj yazıyorsunuz, Üye iseniz giriş yapınız.