PIC Programlamaya Giriş
Transkript
PIC Programlamaya Giriş
Hacettepe Robot Topluluğu PIC Assembly Dersleri 1. Ders: PIC Programlamaya Giriş HUNRobotX - PIC Assembly Dersleri 1. Ders: PIC Programlamaya Giriş Yazan: Kutluhan Akman, Düzenleyen: Canol Gökel - 4 Haziran 2007 Mikroişlemci Nedir? Mikroişlemci, ön belleğine yazılan programı işleterek istenilen çıkışlara yönlendiren birimdir. Sayısal bilgisayarlar üç temel kısımdan (mikroişlemci, giriş/çıkış birimleri ve bellek) ve bunlara ek olarak bazı destek devrelerden oluşur. Her bir temel kısım en basitten en karmaşığa kadar çeşitlilik gösterir. Mikroişlemci/Merkezi Đşlem Birimi (Central Proccesing Unit - CPU): Sistemin kalbidir. Birim hesapları yapmak ve verileri idare etmek için 4, 8, 16, 32, 64 bitlik veri formatında çalışır, belki gelecekte bu sayı çok artacaktır. Giriş/Çıkış Birimi (Input/Output): Sayısal, analog ve özel fonksiyonlardan oluşur. Mikroişlemcinin dış dünya ile ilişkisini sağlar. Mikroişlemciye verilen ve işlemlerden alınan veriler bu birim üzerinden sağlanır. Bellek: Mikroişlemcinin işleyeceği komutlar ve veriler belleklerde tutulur. Bilginin işlenmesi sırasında ortaya çıkan ara değerler ve sonuçları da mutlaka belleklerde tutulmak zorundadur. Mikrodenetleyici Nedir? Mikrodenetleyici; mikroişlemci, giriş/çıkış birimleri ve bellekten oluşan bir entegredir. Mikrodenetleyiciler bir yazılım olmadan hiçbir işe yaramayan bir plastik, metal ve temizlenmiş kum yığınıdır. Kendisini kontrol eden bir yazılım olduğunda ise neredeyse sınırsız bir uygulamaya sahiptir. Mikrodenetleyicinin Avantajları Mikrodenetleyicilerin mikroişlemcilere olan avantajları oldukça fazladır. Örneğin mikroişlemcili bir sistem yapıldığında mikroişlemcinin yanısıra bellekler (RAM, ROM veya EPROM), giriş/çıkış birimi ve buna benzer birçok sistem kullanılmaktadır. Bu karışık sistemin hem tasarlanması ve yapımı zordur hem de maliyeti daha yüksektir. Mikrodenetleyicilerde bir sistemin çalıştırılabilmesi için yalnızca bir mikrodenetleyici ve osilatör devresi yeterli gelmektedir. Sistemde gerekli olan ön bellek ve G/Ç birimi mikrodenetleyici içinde bir yonga halindedir. Assembly Dili Nedir? Assembly, sadece 1'lerden ve 0'lardan oluşan makine dillerinin insanlar tarafından daha anlaşılır hale getirilmesi ihtiyacından doğmuş bir programlama dilidir. Örneğin bir mikroişlemcinin bir 1. Ders: PIC Programlamaya Giriş veriyi bir yerden başka bir yere taşıması için kullanılan 10011101 diye bir komut olduğunu düşünelim. Đşte Assembly dilinin yaptığı iş bu komutu Đngilizce taşımak anlamına gelen "move" eylemine ithafen MOV şekline dönüştürmektir. Yani programınızı yazarken siz 10011101 yerine MOV yazarsınız, daha sonra Assembly derleyicisi bunu otomatik olarak 10011101 sayısal ifadesine dönüştürür. Bu tür kelimeleri akılda tutmak sayısal ifadeleri akılda tutmaktan daha kolay olduğundan hem kolay ve hızlı bir yazım sağlanır hem de önceden yazılmış olan programların okunup anlaşılması kolaylaşır. Assembly, programlama dillerinin en ilkelidir de diyebiliriz ama programlama dillerinde ilkellik demek temellik demektir, bu da herhangi bir programlama dilinde yapmanız mümkün olmayan şeyleri de bu dille yapabilmeniz anlamına gelir. Assembly dili mikroişlemcilerin asıl dili olan 0 ve 1'lerden oluşan dile en yakın dildir. Diğer dillerde yazdığımız programlar öncelikle Assembly diline derlenirler (0 ve 1'lere) daha sonra makineye (işlemciye, denetleyiciye, bilgisayara) iletilirler. Yani diğer dillerdeki herhangi bir komut kesinlikle Assembly dili kullanılarak oluşturulabilir. Assembly dili, bu anlamda diğer dillerin yapı taşıdır, yani Assembly ile yazılamayacak program yoktur ama diğer programlama dilleri ile yazılamayacak program çeşitleri mutlaka mevcuttur. Tabii ki bu diğer diller gereksiz manasında anlaşılmamalıdır. Eğer kapsamı küçük bir donanım için bir program yazıyorsak Assembly kullanarak çok daha verimli programlar elde edebiliriz. Özellikle işlem kapasitesi küçük bir işlemci kullanıyorsak bir önceki cümle geçerliliğini arttırır (pipelining ve paralel işleme desteklemeyen işlemciler). PIC 16F84 mikrodenetleyicisi de kapasitesi az olan bir denetleyici sayılır. Fakat geniş kapasiteli bir işlemci veya denetleyici kullanıyorsak programımızı diğer dillerle yazıp sadece özel özen gerektiren yerlerde Assembly kullanmak bizi daha verimli sonuçlara ulaştırabilir. PIC Çeşitleri Günümüzde Microchip firması, standart ürettiği PIC ailelerinin dışında birçok özelleşmiş PIC aileleri de üretmektedir. Mesela USB veri alışveriş yongasının dahili olarak bulunduğu PIC'lerden tutun da RF iletişim için özelleşmiş PIC'lere kadar birçok değişik özellikte PIC üretilmektedir. Standart PIC aileleri ise kaç bitlik komutlardan oluştuklarına (merkezi işlem biriminin dahili olarak kaç bitlik veri yoluna sahip olduğuna) göre isimlendirilirler. Mesela bu komutlar 16(C/F)5xx serisi işlemcilerde 12 bit, 16(C/F)XX işlemcilerde 14 bittir. PIC programcıları program kodlarını yazarken bir komutun kaç bitlik kelime boyundan oluştuğu ile pek fazla ilgilenmezler. Seçilen bir çipi programlarken uyulması gereken kuralların ve o çiple ilgili özelliklerin bilinmesi yeterlidir. Bu özellikler PIC'in bellek miktarı, G/Ç portu sayısı, A/D dönüştürücüye sahip olup olmadığı, kesme (interrupt) fonksiyonlarının bulunup bulunmadığı, bellek tipinin ne olduğu (Flash, EPROM, EEPROM vb.) gibi bilgilerdir. HUNRobotX - PIC Assembly Dersleri Neden PIC? PIC, kaynaklarına en kolay ulaşılabilen ve amatör çalışmalar için fiyatı oldukça uygun olan bir işlemcidir. Hatta profesyonel çalışmalarda bile kullanılabilecek kadar güvenilir kod korumasına sahiptir. Mesela 16F84 tipi bir işlemci flash program hafızasına sahiptir, 1 milyondan fazla kere silinip tekrar programlanabilmesine ve diğer birçok gelişmiş özelliğine karşın fiyatı sadece 4-5 YTL civarındadır. Nasıl Programlanır? PIC'i programlamak için öncelikle yazdığımız programı HEX koduna (0 ve 1'lerden oluşan makine dilinin 16'lık sayı sisteminde yazılmış hali) çeviren derleyiciye ihtiyacımız vardır. Eğer programı yazmak için Assembly dilini kullanıyorsak herhangi bir Ascii karakter koduna göre çalışan program kullanmamız yeterlidir. Bu programlara örnek olarak Windows altında Notepad veya Linux altında Gedit, KWrite gibi programlar verilebilir. Yazdığımız programı derleyici ile derledikten sonra (Assembly dili için Mpasm adlı program kullanılır) PIC'i programlayacak olan elektronik devrenin (programlayıcı) bilgisayar arayüzü çalıştırılır. Programcının bilgisayar arayüzüne derlenen dosya'nın yani HEX dosyasının yeri gösterilir. Artık programlama işlemi yapılabilir. Sonuç olarak bir PIC'i programlamak için; program(.asm), derlenmiş program(.hex), programcı arayüzü ve programcı devresi gerekir. PIC kullanarak bir program veya çalışan bir devre yaparken izlenecek adımlar şunlardır: 1) Ne yapacağımızı tasarlamalı ve tam olarak tanımlamalıyız, 2) Donanım tasarımını tam olarak bitirmeliyiz, 3) Yapacağımız programla ilgili akış diagramı çıkartmalıyız, 4) Assembly programını bir Ascii editör programına yazmalıyız ve uzantısını .asm olarak kaydetmeliyiz, 5) Mpasm programını kullanarak bunu derlemeliyiz, 6) Programlayıcı elektronik devre yardımı ile HEX dosyasını PIC'in içine yüklemeliyiz. Not: Buradaki bilgilerden çok daha geniş kapsamlısını internetten bulabilirsiniz. Data sheet'ten okuduktan sonra deneme yanılma ile uygulama yapmak en güzel öğrenme yoludur. Bağlantılar http://robot.ee.hacettepe.edu.tr/ http://www.microchip.com/
Benzer belgeler
HUNRobotX - Makaleler - PIC ile LED Yakıp Söndüren Devre
İkinci şekilde ise; bir düğmeye basarsınız (anahtar kapanır ve hemen tekrar açılır, yani bir sinyal
gönderir) ve lamba yanar, tekrar basarsınız (yine aynı şekilde anahtar kapanır ve hemen