Pic16f84 ile Led uygulaması Ledi Yak Söndür Devresi ilk Devren Olabilir

uygulama1 Led yak söndür

PIC PROGRAMLAMA

Pic16f84 ile Led 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 progamamımızı
pic’e yükleyen programlarda 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ü.
Ardından gelenlerde 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?

Kaynak : http://www.elektromania.net/pic/?id=9

Posted in Uncategorized.

Bir cevap yazın