Mikrodenetleyici ile LED yakma #4

Herkese Merhaba Dostlar

Hatırlarsanız bir önceki yazımızda PIC16F84 programlamak için bilgiler vermiştik ve hazırlık yapmıştık.O konuya da buraya tıklayarak ulaşabilirsiniz. Şimdi hatırlatma olması amacıyla son not defterini buraya koyalım.

 

Görmüş olduğunuz gibi hazırlık aşamasını bitirmiştik. Bu yazımızda PORTB’de bulunan 8 pine led bağlayarak yakalım. Yani mikrodenetleyicimize enerji verdiğimizde 8 led direk yanacaktır. Basit ama bir sonraki projelerimizi daha iyi anlayabilmek için çok önemlidir.

Tabiki programlamaya başlamadan önce her zaman hazırlık aşamasını yazmalıyız. Hadi başlayalım ;

LIST P=16F84                          > Derleyici programı için
INCLUDE “P16F84.INC”       > Derleyici programı için
BSF STATUS,5                         > Statusun 5 bitini 1 yap ( bank değiştirme için )
BCF STATUS,6                         > Statusun 6 bitini 0 yap ( bank değiştirme için )
CLRF TRISB                             > TRISB bütün pinleri çıkış yap
BCF STATUS,5                         > Statusun 5 bitini 0 yap ( bank değiştirme için )

Devam etmeden önce bir bilgi vermem gerekiyor. Göndereceğimiz bilgiyi direk PORTB’ye yazamıyoruz. Bütün hepsini sıfır yapmak için direk CLRF ifadesini kullanmıştık ama diğer kodlamalarda bu şekilde yapamıyoruz. Yani demek istediğim elimizde “11111111” bilgisi var ve biz bunu PORB göndermek istiyoruz. Bunu yapmak için ilk önce bu bilgiyi mikrodenetleyicimizin Akümülatör dediğimiz hafıza birimine yollamamız gerekiyor. Daha sonra oradan bu bilgiyi alıp PORTB’ye göndermemiz gerekiyor. Aşağıdaki örnekte daha iyi anlayacaksınız.

MOVLW b’11111111′    >  Burada 11111111 bilgisini ilk önce akümülatöre yolladık.

MOVWF PORTB         > Burada ise akümülatörden aldığımız bilgiyi PORTB ye yolladık.

Eğer kullanacağınız veri binary ise verimizin başına b ifadesini ekliyoruz. Eğer hexadecimal sayı sistemi kullanacaksak. h ifadesini kullanabiliriz. Onuda bir örnekte açıklayalım; 

MOVLW h’FF’    >  Burada FF bilgisini ilk önce akümülatöre yolladık.

MOVWF PORTB         > Burada ise akümülatörden aldığımız bilgiyi PORTB ye yolladık.

FF yazmamızdaki neden şudur “11111111” binary sayısının hexadecimal sayı sistemindeki karşılığı “FF” dir. Gelecekte sayı sistemleri ile ilgili bir yazı yazacağım. Şimdi programımızı yazmayı bitirelim

Programı yazmadan önce küçük ama hayat kurtarıcı bir bilgi daha vermek istiyorum.Kullandığımız mikrodenetleyici daha önce kullanılmış olabilir bu yüzden programımızın hazırlık kısmına CLRF PORTA ve CLRF PORTB ifadelerini eklersek içinde daha önceden yüklenmiş bir veri varsa temizlemiş oluruz.

LIST P=16F84                       > Derleyici programı için
INCLUDE “P16F84.INC”     > Derleyici programı için
CLRF PORTA                        > PORTA pinlerinin hepsine 0 sinyali yolla.( TEMİZLİK )
CLRF PORTB                        > PORTB pinlerinin hepsine 0 sinyali yolla.( TEMİZLİK )
BSF STATUS,5                     > Statusun 5 bitini 1 yap ( bank değiştirme için )
BCF STATUS,6                     > Statusun 6 bitini 0 yap ( bank değiştirme için )
CLRF TRISB                         > TRISB bütün pinleri çıkış yap
BCF STATUS,5                     > Statusun 5 bitini 0 yap ( bank değiştirme için )
MOVLW b’11111111′       > Verimizi akümülatör içerisine attık
MOVWF PORTB                   > Akümülatör içerisine attığımız veriyi PORTB yolladık.
END                                    > Programın bittiğini belirttik. Koyulmaz ise hata verir.

Not defterimizden de bir görüntü koyalım.

Elimden geldiğince kolay ve basit anlatmaya çalıştım umarım işinize yarar bir yazı olmuştur.Okuduğunuz için teşekker ederim.

Not : Burada verdiğimiz bilgiler yüzeysel bilgilerdir tabiki eksiklerimiz olacaktır. Ben bildiklerimi aktarmaya çalıştım.Bilgi paylaştıkça çoğalır. Kolay Gelsin iyi çalışmalar.

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir