Turkmaster

Turkmaster

TÜRK MASTER (TM) PAYLAŞIM FORMUNA HOŞ GELDİNİZ


    PIC Donanım ve Yazılım Tasarımı - Bilgisayar

    Paylaş
    avatar
    By.DuFy!
    SİTE KURUCUSU
    SİTE KURUCUSU

    Erkek
    Mesaj Sayısı : 5805
    Yaş : 26
    Nerden : Ankara/Keçiören
    Sitemize vereceğiniz puan: : 10
    Ne YapaK : 27.12.1991
    Tuttugunuz Takım :
    Metin Alanı : <center><font color="white"><marquee direction="left" style="background:red">Vatanını Seven Görevini En İyi Yapandı®-NeYapak ForuM.</marquee></font></center>
    ÜYE MADALYASI :
    +Rep :
    80 / 10080 / 100

    -Rep :
    1 / 1001 / 100

    Paylaşım :
    100 / 100100 / 100

    Forum Gücü :
    90 / 10090 / 100

    Milli TAkımımız :
    Kayıt tarihi : 06/02/08

    DuFy!
    Keçiören: 17

    default PIC Donanım ve Yazılım Tasarımı - Bilgisayar

    Mesaj tarafından By.DuFy! Bir Çarş. Mayıs 21, 2008 3:16 pm

    6. PIC DONANIM VE YAZILIM TASARIMI

    6.1.1. GİRİŞ
    PIC’ ler RAM, EPROM, EEPROM, PIA gibi mikroişlemci sistemlerinde bulunması gereken temel elemanları tek bir çatı altında toplayan entegrelerdir. Bütün bu elemanların tek bir entegre altında toplanması ile mikroişlemci tabanlı sistemli tabanların boyutları küçülmüş, sistem maliyetlerinde kayda değer bir azalma sağlanmış ve en önemlisi bu tip sistemlerin tasarlanması daha kolay bir hale getirilmiştir. CPU, RAM, EPROM, PIA elemanlarının birbirleri arasındaki bağlantıyı sağlayacak adres Bus, Data Bus ve Kontrol Bus sistem kartı üzerinde bulunmayacaktır. Çünkü bunların tamamı PIC üretici firma tarafından PIC entegresinin içine yerleştirilmiştir. Yukarıda sayılan önemli özelliklerinden dolayı PIC entegreleri son zamanlarda oldukça revaçta olan elektronik elemanlardır.
    Bu bölümde anlatılacak olan MICROCHIP firmasına ait olan 16FXX serisi PIC’ ler şu özelliklere sahiptirler. PIC içinde yapılan programı işleyen işlemci RISC mimarisine benzer bir mimari ile donatılmıştır.
    RISC mimarisi mikroişlemci tasarımında kullanılan ve temelde iki kısma ayrılan
    mimari tipinden biridir. Bunlar RISC ve CISC mimarileridir. RISC mimarisinde
    mikroişlemci komut seti üzerinde bulunan komutların sayısı azalmakta ve bu komutların
    hepsi tek bir saat darbesinde ( CYCLE ) tamamlanması sağlanmıştır.(Dallanma
    komutları hariç, bu komutlar iki saat darbesinde tanımlanabilmektedir.) Açıktır ki komut
    sayısının azalması ile mikroişlemcinin işlem kabiliyetinde bir azalma meydana gelecektir.
    Bu sorun, temel işlemlerin tek bir komut ile halledilmesi yerine bazı komutların ardışık
    olarak kullanılması ile giderilmektedir. Komut setinin daraltılması ile öğretilecek komut
    sayısı azalırken mikroişlemcinin programlanması biraz daha zor hale gelmektedir. Ancak
    deneyimli bir programcı için RISC mimarisine sahip mikroişlemcinin programlanması
    hiçbir sorun oluşturmayacaktır.

    6.1.2. PIC’İN GENEL ÖZELLİKLERİ
    Programlama sırasında yazdığımız komutların her biri PIC üzerinde 14 bitlik bir yer kaplamaktadır. Bu 14 bitin ilk 6 biti komutu tanıtmakta geri kalan 8 bit ise kullanılan veriyi taşımaktadır. Komut taşınan kısım 6 bit olduğundan PIC’ de en fazla 64 komut bulunacağı açıktır. Örneğin 16F877 PIC entegresinde 35 adet komut bulunmaktadır.

    Bu entegre 20 MHz saat frekansında çalışmakta ve her bir komutu 200 ns gibi kısa bir sürede işleyebilmektedir. Üzerinde 4K EPROM program belleğine, 35 adet özel donanım register’i, 192 adet genel amaçlı registerine sahiptir. Bu entegreler teorik olarak 1.000.000.defa programlanabilmekte ve üzerinde bulunan programlan 40 yıldan daha fazla bir süre kayıpsız olarak saklayabilmektedirler. PlC’ lerin diğer mikroişlemcilere olan bir diğer üstünlükleri de entegre programlanırken entegre üzerine bir koruma kilidi konulabilme özelliğidir. (CODE PROTECTION). Bu sayede tasarlanan devre bir başka kişi tarafından öyle basit bir şekilde taklit edilemeyecektir. Belki devre aynen taklit edilecek ancak PIC içinde program kopyalanamayacağından taklit edilen devre çalışmayacaktır. Burada şu uyarıyı yapmakta fayda var. Biz kendi programımızı denerken PIC PROGRAMLAYICI da CP (CODE PROTECTION) özelliğini kapalı tutmalıyız Aksi takdirde programladığımız PIC istediğimiz biçimde çalışmaz ise PIC’i atmak zorunda kalabiliriz.

    6.3. PIC NE KADAR GÜÇ HARCIYOR?
    PlC’ler yapılarının CMOS olmasından dolayı oldukça az güç harcamaktadırlar. Uygulamalarda kullanılan voltaj aralığı 2-6 Volt arasında değişmektedir. Kendi güçlerinin küçük olmasına karşın PlC'ler direkt LED sürme kabiliyetine sahiptir. Entegrebacaklarından dışarı akım verilerek LED sürülecek olursa çekilen akım 20 mA iken, entegre bacakları toprağa çekilerek LED sürülürse çekilen akım 25mA olacaktır.

    6.4. PIC KOMUT YAPISI
    PIC programlamasında kullanılan komutların isimleri ve özellikleri aşağıda anlatılmıştır. Üretici firma tarafından komutlara verilen isimlerde bazı harfler özel anlamlar taşımaktadırlar. Bu harflerin anlamlarının bilinmesi ve basit birkaç ingilizce terimin öğrenilmesi ile bu komutlar kolayca akılda tutabilirler.
    Komutlarda geçen harfler ve anlamları:
    W=W registeri (akümülatör registeri)
    F= Herhangi bir register
    L= Literal (sabit)



    Şimdi birkaç örnek üzerinde bu harflerin komutlarındaki kullanılışını inceleyelim.
    MOVLW 0X50
    W registerine 0x50 sayısını yaz. Bu komutta büyük ve kalın harflerle yazılan kısmın anlamı şöyle açıklanabilir. Önce komutun çekirdeğine bakılır. Komut MOV, yani taşıma işlemi içermektedir. Önce L harfi geldiğine göre taşınacak kısım bir sabittir. Daha sonra W geldiğine göre taşınacak yer W registeridir. Böylece komut genel açıklaması şöyle yapılır. Komutun yanında verilen sabit sayı W registerine konulacaktır.
    MOVWF toplam
    Komut çekirdeği yine MOV’dur. Yani bir değer atama işlemi yapılacaktır. Komutta bulunan diğer harflere bakılınca önce W daha sonra F harfleri görülür. Bunun anlamı şudur: W registerinin içeriğini yanda belirtilen registere (toplam ) koy. W F= Toplam
    CLRF toplam
    Komut çekirdeği bir CLR yani silme işlemi içermektedir. Komut devamında bir F harfi görülmektedir. Bunun anlamı yanında belirtilen registerin (toplam registeri ) içeriğini sil.
    SUBLW 0x05
    Komut çekirdeği SUB yani bir çıkartma işlemi içermektedir. Diğer harfler sırasıyla L ve W dir. Komut açıklaması şöyle yapılır. Komut yanında belirtilen sayıdan (L harfi önce yazılmıştır) W registerini çıkart.

    6.5. PIC PROGRAMLAMADA KAYNAK KODUN YAPISI
    PIC programlamada kaynak kod yazılırken derleyicinin bize sunduğu bazı kolaylıklardan faydalanabiliriz. PIC’in sahip olduğu özel donanım registerleri ile genel amaçlı registerler normalde registerin adresini gösteren bir sayı ile belirlenirler. (W akümülatörü hariç).
    Kodun içerisinde bir sürü karışık sayı yazmak yerine bu registerlere birer sembol isim verilerek kod içinde bu isimler kullanılabilir. Gerçekte derleme işlemi esnasında tanımladığım sembol isimler yerine gerçek sayısal değerler konmakta ve böylece *.HEX kodu üretilmektedir. Yazılan *.ASM kaynak dosyasında ise bizim tanımladığımız sembol isimler görülmektedir.
    Sembol isimler kullanarak program daha anlamlı ve daha anlaşılıır bir hale gelmektedir.

    6.6. SEMBOL İSİMLER NASIL TANIMLANIR?
    Sembol isimler program yazımı sırasında “EQU” deyimi ile tanımlanmaktadır. Örneğin 16F877 PIC entegresinde flagların bulunduğu özel amaçlı donanım registeri PIC’ in 3 no’lu adresinde bulunmaktadır. Flagların bulunduğu registeri her kullanışımızda bu 3değerini kullanmak zorundayız. Bütün bu register numaralarını ezberlemek yerine equ deyimi ile bu registere bir isim verilebilir. Bunu bu şekilde yapabiliriz.
    STATUS EQU 0x03
    Bundan sonraki program kısmında bu flagları kontrol etmek için yalnızca status ismini verdiğimiz registeri kontrol ederiz.

    Örnek :
    Program sayıcı registerini PCL olarak isimlendirelim.
    PCL EQU 0x02
    Yazılan bu equ deyimleri alt alta yazılarak bütün genel ve özel amaçlı registerler tanımlanırlar. Tablo 4.1 de görülmektedir.

    Tablo 4.1 Özel registerlerin PIC’e tanıtılması
    PCL EQU 0x02
    STATUS EQU 0x03
    PORTA EQU 0x05
    PORTB EQU 0x06
    TRISA EQU 0x85
    TRISB EQU 0x86

    Bu şekilde registerler isimlendirilerek program daha akılcı bir hale getirilebilir.
    NOT: EQU deyimi ile tanımlanmış bir register isminde büyük ve küçük harfler nasıl tanımlanmış ise tüm program boyunca aynı şekilde kullanılmalıdır.

    Örnek :
    TOPLAM equ 0x20 yazarak bir registeri tanımlayalım. Program sırasında bu tanımlanan registeri “toplam” şeklinde kullanamayız. Çünkü tanımlama sırasında büyük harfler ile tanımlama yapılmışken kod içinde küçük harfler ile “toplam” registerini kullanamayız.
    Tablo 4.2’ de kısaca açıklanan donanım registerlerinin isimleri istenirse programcı tarafından başka isimler altında da kullanılabilir. Ancak bundan sonraki kısımlarda bu özel amaçlı donanım registerleri yukarıda tanımlandığı gibi (orijinal isimleri ile ) kullanılacaktır.
    Tabloya dikkat edilirse bazı registerlerin tekrarlanmış olduğu görülmektedir. Bu ikincil registerlerin adreslerine bakılırsa bunların yüksek değerli oldukları görülür. PIC registerlerinin adreslerini iki sayfa halinde tutmaktadır. Bunlar sayfa 0 sayfa l şeklinde tanımlanmaktadır. Sayfa 0’ da bulunan registerlerin adresleri 0x80 değerinde daha düşüktür. Sayfa l’de bulunan registerlerin adresleri 0x80 ve daha üzeri olmaktadır.(Sayfa=Bank)

    TABLO 4.2. Bazı PIC Hardware (SFR) Registerleri
    TMR0 0x01 PIC zamanlayıcı interrupt registeri
    PCL 0x02 Program sayıcı registeri
    STATUS 0x03 Program durum registeri (flag registeri)
    FSR 0x04
    PORTA 0x05 PortA
    PORTB 0x06 PortB
    PORTC 0x07 PortC
    PORTD 0x08 PortD
    PORTE 0x09 PortE
    PCLATH 0x0A
    INTCON 0x0B İnterrupt Kontrol Registeri
    OPTION 0x81
    PCL 0x82 Program sayıcı
    STATUS 0x83 Durum registeri
    FSR 0x84
    TRISA 0x85 PortA bitlerini giriş - çıkış tanımlama registeri
    TRISB 0x86 PortB bitlerini giriş - çıkış tanımlama registeri
    TRISC 0x87 PortC bitlerini giriş - çıkış tanımlama registeri
    TRISD 0x88 PortD bitlerini giriş - çıkış tanımlama registeri
    TRISE 0x89 PortE bitlerini giriş - çıkış tanımlama registeri
    PCLATH 0x8A
    INTCON 0x8B İnterrupt Kontrol Registeri
    EEDATA 1x0C EEPROM’a yazılacak bilginin konulacağı register
    EEADR 1x0D EEDATA’nın yazılacağı yeri tanımlayan register
    EECON1 0x8C EEPROM Kontrol registeri
    EECON2 0x8D EEPROM Kontrol registeri

    6.7. REGİSTER İŞLEMLERİNDE SAYFA DEĞİŞİMİ
    Programlama esnasında genel olarak sayfa 0’da bulunan registerler kullanılmaktadır. Ancak sayfa l’de bulunan registerlere erişim istendiğinde önce PIC içindeki aktif sayfayı değiştirmek gerekmektedir. 16F877 entegresi için bu işlem sadece STATUS registerinin 5. bitini set etmek yeterlidir. Bu bit set edilerek sayfa l’e geçilir. Sayfa l registerleri ile işimiz bittiğinde STATUS registerinin 5. bitini reset ederek yeniden sayfa 0’a dönebiliriz. Şimdi bunu bir örnek üzerinde inceleyelim.
    Örnekte A portunu giriş olarak tanımlayan bir program parçası vardır. A portunun bitlerini tek tek bit bazında Giriş ya da Çıkış olarak tanımlayabiliriz. Bunun için sayfa l’de bulunan TRISA registeri kullanılmaktadır.
    BSF STATUS,5 STATUS’un 5. bitini set et yani sayfal’e geç
    CLRF TRISA A portunun bütün bitlerini giriş yap
    BCF STATUS,5 STATUS’ un 5. bitini reset et yani sayfa 0’ a dön.

    6.8. PIC KOMUTLARI
    ADDLW
    Genel kullanım: ADDLW k
    0<k<255
    Bu komut herhangi bir sabit ifadeyi W registerine eklemek için kullanılır, işlem
    W=W+ k( k=Sabit) şeklinde hesaplanmaktadır.
    • Etkilenen bayraklar: C, DC, Z
    Örnek :ADDLW 0x15
    Komuttan Önce W=0x10
    Komuttan Sonra W=0x25

    ADDWF
    Genel Kullanım: ADDFW f, d
    d = (0,1)
    f: Register, d: Direction
    d = 0 ise ekleme işleminin sonucu tekrar W ye konur. d = l ise ekleme işleminin sonucu f registerlerine konur.
    W registerlerinin içeriğinin bir registeri eklemek için kullanılır. Yukarıda açıklanan komut genel kullanımında görüldüğü gibi eğer d sabiti 0 ise bu durumda toplamın sonucu W registerine konulacaktır. Bu komut tablolama işlemlerinde kullanılmaktadır. Yani işlemcinin istenilen adet komutu atlaması için kullanılabilir. Daha geniş bilgi için Çeşitli Algoritmalar kısmına bakınız.
    Etkilenen Bayraklar: C, DC, Z
    Örnek :ADDWF FSR, 0
    Komuttan Önce W=0x17
    FSR=0xC2
    Komuttan Sonra W= 0x D9
    FSR=0xC2
    __________________

      Forum Saati Perş. Kas. 15, 2018 10:20 am