PIC Assembly Genel Komutlar

2 Ağustos 2010 Pazartesi

Bu yazımda size PIC için gereken genel komutlarımızdan bahsedeceğim.

Her PIC yazmaya başladığımızda üst tarafta hangi PIC te yazacağımızı belirtmek amacıyla LIST P= komutunu kullanırız.Örneğin biz PIC16F628A ile işlem yaptığımız için LIST P=16F628A şeklinde yazılmaktadır.

PIC'te banklar bulunmaktadır.Bu banklarda hex cinsinden adresleri vardır.Bu adreslerde de bizim atayacağımız ve önceden atanmış değişkenler vardır.(bknz:PIC16F628A RAM Memory )
Bu banklar arası geçişi yapmak içinde BANKSEL komutunu kullanırız.
Biz PIC'te bir değişkeni bir yere atamak için EQU komutunu kullanırız.Örnek kullanımı:
PORTB EQU 0x06 Burada ki "0x06" hex değerinde yazılmış adresimizdir.Biz PORTB yi Banklarımızda ki 06h'ye oturttuk.Artık orası PORTB'nindir :)

PIC'te temizleme işlemlerini CLRF ile yaparız.Örneğin;
CLRF PORTB yazdığımızda PORTB nin içeriği sıfırlanmaktadır.

Elektronikte 1 ve 0 kavramları vardır.Örneğin küçük bir Led'in yandığı duruma 1,sönük olduğu konuma da 0 deriz.Yani genellemek olursa enerji varsa 1,yoksa 0'dır.

Şimdi PIC'te bu 1 ve 0 ı kullanabileceğimiz iki komut göstereceğim.

PIC16F628A Konfigürasyon

11 Temmuz 2010 Pazar

PIC16F628A için örnek konfigürasyon ayarlarını veriyorum.Bunu kendinize göre düzenleyebilirsiniz.MPLAB kullanıyorsanız bu konfigürasyonları elle yazmamız lazım.Editörde bu konfigürasyonlar yeni bir çalışma sayfası açıldığında gelmiyor maalesef.

;===KONFIGURASYON.ASM========================================================
LIST P=16F628A

__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF

;---------------------------------------------------------------------------------------

Örnek bir konfigürasyon ayarımız.Siz isterseniz - örnek veriyorum - DATA_CP yi ON yaparak kodlarınızı okunabilir hale getirebilirsiniz [; Default olarak OFF yapılmış bu kod dizisinde.

PIC16F628A W Registeri ve MOVLW/MOVWF Komutları

26 Haziran 2010 Cumartesi

Artık yavaş yavaş komutlara geçmeyi düşünüyorum.Aslında bir sürü teorik bilgi var (pic16f628a’nin diş görünümü,pin bağlantıları,çalışması,besleme gerilimi,osilatör çeşitleri,reset uçları ve devresi – mclr resetlenmesi ,wdt resetlemesi vb. - ,bellek yapısı vs.)
Fakat bunların çoğu zaten internette olan şeyler.Blogumda Önemli noktalara yer verip,komutlarıda öğretip daha sonra da uygulamalara geçmek istiyorum.

Neyse bu kadar hikaye kısmı yeter sanırım.
Başlayalım :]

W Saklayıcısını (Register) “geçici depolama alanı” olarakta düşünebiliriz.Diğer programlama dillerinde de vardır registerlar.
PIC’te gerçekleştereceğimiz tüm işlemlerde W saklayıcısını kullanmak zorundayız.

W Registeri ilede ilk kodumuzu söyle bir diyagramda öğrenmiş olalım;

Bu iki satırlık kodda diyorki ;

W saklayıcısına “binary 11111111” verisini yükle – yada taşı -
daha sonrada bu veriyi TRISA’ya at.

Aslında kafanızda daha rahat oturması amacıyla Winrar mantığıyla düşünebilirsiniz.Bir dosyayı ilk önce sıkıştırıyorsunuz daha sonrada bu sıkıştırdığınız dosyayı dışarı çıkartıyorsunuz.


Elektronikte bildiğiniz gibi bir şeyi 1 ile aktif eder, 0 ile durdurur ya da “deaktif” ederiz ( dijital mantığı )

Bu iki satırlık kodumuzda da TRISA ile PORTA nın tüm uçlarını giriş yaptık.

TRISA = PORTA’yı giriş/çıkış yapar
TRISB = PORTB’yi giriş/çıkış yapar.
PORTA = Genelde giriş olarak kullanılır ( yapısından dolayı,bknz:Schmitt Trigger(ST) yapısı )
PORTB = Genelde çıkış olarak kullanılır (yapısından dolayı,bknz:TTL yapısı)

MOVLW[boşluk][W saklayıcısına atılacak veri] şeklinde kullanılır.

MOVWF[boşluk][W saklayıcısının içerisindeki veriyi f saklayıcısına yükler] (F saklayıcısı burada PORTA,PORTB,TRISA,TRISB olabilir. Bunların içinde de birer register bulunmaktadır.Örneğin PORTA’nın içerisinde 8-bit uzunluğunda bir veri tutucu adınada PORTA registeri denmektedir.)

PIC Bellek Çeşitleri

Geçen yazılarımda PIC konusunda birkaç doküman yazacağımı söylemistim.Şuyazıda da giriş yapmıştık.

Yazıda mimarilerden bahsetmiştim.Bu yazıda da PIC’in hangi bellek çeşitlerinde üretildiğinden bahsedeceğim.

PIC’ler 3 farklı program belleğine sahip olabilirler.Bunlar;

EPROM(Eraseble Programmable Memory) : Silinebilir ve programlanabilir bellek.
FLASH-EEPROM ( Electrically Erasable Programmable Memory ) : Elektriksel olarak silinebilir ve programlanabilir bellek
ROM ( Read-Only Memory): Sadece Okunabilir bellek

Şimdi bunları başlıklar halinde açıklayayım.

Güç Kaynağı Yapalım

30 Mayıs 2010 Pazar

Merhaba arkadaşlar yaklaşık bir aydır entry giremiyordum.Yoğun bir tempo ile hayatımı sürdürmeye çalışıyorum.Bloga zaman ayıramıyorum pek.Biraz da ortalıkta dolaşan yazıları yazmaktansa sayfayı boş bırakmayı tercih ediyorum.

Evet Güç Kaynağı'da ortalıkta dolaşan yazılardan biri.Fakat verimli çalışabilen güç kaynağı ve Güç kaynağını yayınlayan kişinin deneyip-denememesi de önemli tabiki.

Bugün sizlere 1.2 - 30 V arası değişebilen 1.5 Amper çeken kısa devre korumalı bir güç kaynağı vereceğim.


Devrenin orjinali budur.

Bu Devre Buradan alınmıstır.

Devre Elemanları
1000uF/63V C1
1uF C2
1,8 K R1
LED
5K POT ( P1)
220 ohm R2
1N4001 D1
LM317
1uF/40V C3
27 K R3
10 K POT ( P2)
1mA Voltmetre ( istege bağlı )
24 V Trafo
1 Amper Sigorta
1 Adet Anahtar
--
LM317'ye bir soğutucu bağlamalısınız.
1.2-30 V arası voltu P1 ( 5K'lık) ile değiştirebilirsiniz.
P2 ise voltmetre kullanacaksanız onun için gerekli.
LED1 güç kaynağı ON konumundayken yanacaktır.
sigorta'yı 1 amper olarak almanızı öneririm.
--
LM317'nin bacak sırası şöyledir.

Yani ADJ OUT IN şeklinde.( Yazılı yüzü size bakacak )

Bu Devrenin Baskı Devreleri
Bu Kendi çizimimdir ( dikdörtgen bir plakete kurabilirsiniz.Bunda 4 adet 1n4001 kullanılarak köprü tipi elde edilmistir.)
http://rapidshare.com/files/393273119/devre_son_hali.LYT
Bu da Kare bir plakete kurulabilecek devredir.Bir arkadaşımdan rica etmistim saolsun çizdi.( Bu devrede köprü diyot kullanılmıstır.
http://rapidshare.com/files/393273474/kare_devre.LYT

Bu devreleri proteus 7.1 ile açabilirsiniz.PC'nizde yüklü değil ise size bitmap tarzında da vereyim.
Kare baskı devre


Dikdörtgen




Devre'den görüntüler
Minimum Voltaj Değeri

Maximuma yakın bir voltaj değeri



Plaketten bir görüntü

El çizimidir,ütüleme yapmadım :D
Genel bir görüntü:


Hadi bakalım kolay gelsin..

Mikroİşlemci ve MikroDenetleyici Arasındaki Fark

1 Mart 2010 Pazartesi

Eveet merhaba arkadaşlar,eskisi kadar güncel yazı yazamıyorum.Bunun sebebi de lanet olası okulum,dersanem ve diğer dış reel sorunlar.
Kısa bir giriş yaptıktan sonra küçük bir dipnot ekleyelim
Bu yazıyı yazmamdaki amaç PIC'e zemin hazırlamak aslında.Artık Blogumdan PIC komutları ve görevleri,küçük kod parçacıkları paylaşmayı düşünüyorum.Takipte kalın :)

Asıl konumuza şimdi geldik.
Mikroişlemci çoğunuzun bildiği gibi CPU (central processing unit) olarak ta biliriz.Bu mikroişlemciye bağlı giriş çıkış üniteleri,memory üniteleri (ram-rom).
Birden fazla işlemi aynı anda yapabilirsiniz.

Mikrodenetleyiciler ise bu mikroişlemcinin dışarıdan gereksinim duydugu ram,rom,I/O(giriş-çıkış üniteleri) gibi bileşenleri tek bir paket içinde barındırıyor.
Sadece bir işlem yapabilirsiniz.


Şimdi birazda Mimarilerden bahsedelim

Von-Neuman Mimarisi
Bu mimari de kodlar,veriler aynı bellek bloğu içerisindedir.
İşlem Hızı düşüktür.
Çok fazla sayıda komut vardır
Çok fazla sayıda dahili saat çevrimi.

Bu mimari pentiumX lerde kullanılmakta ayrıca ilk apple macintoshlardada kullanılmıstır.

Bu mimari Mikroişlemci lerde kullanılan yapıdır.
Size birde blok diyagram çizeyim dedim.


Harvard Mimarisi
Bu mimaride de program kodları ve veriler farklı bellek bloklarındadır.Bu sebeplede işlem hızı yüksektir.
Az sayıda komut vardır.(von-neuman yapısında 100 komut varsa harvard'da 50 komut vardır yaklaşık veya daha az)
Güç tüketimi az dır.
Veri belleğinde 8 bitlik register'lar vardır.
Program belleği de 12/14/16-bit'tir.


Bu mimari genelde mikrodenetleyicilerde kullanılır.

İlk gördüğümüz mimari biraz samanlıkta iğne aramaya benziyor :).Çünkü program kodları ve veriler aynı bellek bloğu içerisinde olduğu işlem hızını düşürüyor.

Daha detaylı yazılabilir RISC,CISC işlemciler vs. girilebilir ama kısa kesmek istedim.

Sağlıcakla Kalın...

FM Transmitter(FM Verici)

3 Ocak 2010 Pazar

Merhaba arkadaşlar 2010 yılımızın ilk devresini veriyorum.

Devremiz basit ve kullanışlı bir devre.Devre açık alanda 300 metrede yayın yapabiliyor.kapalı alandada sanırım 50 metre.(88-108 MHz frekans aralığında çalışmaktadır.)
Devrede kullanılan bobin 0.8 mm'lik emaye bakır telden 5mm çapında 6 sipir olacak şekilde sarılmalıdır.
Bobini sarmak için potansiyometrenin ucunu kullanabilirsiniz.
Anten olarakta 20-25 cm bir bakır tel kullanılabilir.
Pil olarak ta 3V'luk bir pil yeterlidir.
Trimmerin rengide kahverengi olmalıdır.(elektronikçilerde katalog vardır,ordan da bakabilirsiniz.Trimmerlar pF cinsine göre renklendirilmişlerdir.Sarı,kahverengi,beyaz vb.)
Kendi yaptığım devreden bir görüntü:

( Devremde trimmer eksiktir. :D )
Hadi bakalım iyi yayınlar!