1 / 22

PIC Mikrodenetleyiciler

PIC Mikrodenetleyiciler. PIC MCU= CPU + I/O pinleri+ Bellek(RAM/ROM). PIC Mikro denetleyici Programlama.

syshe
Download Presentation

PIC Mikrodenetleyiciler

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PIC Mikrodenetleyiciler PIC MCU= CPU + I/O pinleri+ Bellek(RAM/ROM) Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  2. PIC Mikro denetleyici Programlama Assembly programlama dili, çoğu zaman özel alanlarda geliştirilen yazılımlarda kullanılan alt seviyeli bir yazılım dili olarak tanımlanır. Bu dilin komutları, bilgisayarın doğrudan islettiği makine dili komutlarının birebir karşılığıdır. Bu nedenle bu dil için makine dili de denilebilir. Her ne kadar uzman programcıların özel alanlarda kullandığı bir dil olarak tanımlansa da, programcılar istedikleri takdirde her türlü uygulamayı bu dil ile geliştirebilirler ya da kullandıkları üst düzey dilaltından çağırabilecekleri procedurler/altprogramlar yazabilirler. Assembly diliyle yazılmış bir program( .asm) assembler derleyicisi ile makine diline (.hex) çevrilir. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  3. PIC mikro denetleyicileri assembly dili ile programlayabileceğimiz gibi C, BASIC, PASCAL gibi yüksek seviyeli bir programlama dili ile de programlamayabilirsiniz. Assembly dilinin kendine özgü komutları ve bu komutların yazılış şekilleri vardır. Kelime boyu 12 bit olan PIC' lerin farklı, 14 olanların farklı, 16 olanların farklı komut kümeleri vardır. Ortalama bir PIC mikro denetleyicisi (PIC16F84, PIC16F877 gibi) komut setinde 35 adet komut bulunmaktadır. Azaltılmış komut seti (RISC) kullanılması, komutlarının öğrenilmesinin ve program yazılmasının kolay olması yanında programın kısa sürede yazılabilmesini sağlar. Bu 35 komutun ne işe yaradığını ve PIC-Assembly yazım kurallarını bilerek PIC'ler için her çeşit programı yazabilirsiniz. Komutların büyük bir kısmı 1 saat çevrimi (tetikleme sinyali - clock/4) sırasında gerçekleştirilirken, test ve dallanma komutları 2 saat çevrimi/saykılı sırasında gerçekleştirilir. Komutların kullanımı sırasında, komutların içerisine farklı anlamlara sahip semboller / harfler yerleştirilir. Şekil 1'de, PIC MCU’da kullanılan komutların içerisinde bulunan sembollerin / harflerin anlamları tablo şeklinde sunulmaktadır. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  4. Kodları yazmak için herhangi bir programa ihtiyacımız yoktur. Kod yazma işlemini her türlü metin editöründe yapabiliriz. Örneğin Windows içindeki not defteri (notpad) programı bunun için uygundur. Fakat bir sonraki hafta anlatılacak olan MPLAB (http://www.microchip.com adresinden indirilebilir) programı içindeki editörün kullanılması görsel açıdan kolaylık sağlayacaktır. Çünkü MPLAB içindeki assembly editörü komutları özelliklerine göre farklı renklerde, sabitleri farklı renklerde, açıklamaları farklı renklerde vs.. yazmakta ve program içerisindeki MPASM assembler derleyicisi ile yazılan programın anında simülasyonu yapılabilmekte ve test edilebilmektedir. Aşağıda aynı programın (BTP202.ASM) hem not defteri hem de MPLAB ile yazılmış halini görüyorsunuz: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  5. YAZIM BİÇİMİ Assembly dili yazım formatı/biçimi 4 alandan oluşmaktadır, bunlar; Etiket(Label), Komut kodu (OpCode), İşlenen (Operand) ve Açıklama (Comment) alanlarıdır. Etiket ve açıklama alanları seçimliktir yani isteğe bağlıdır. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  6. ASSEMBLER TALİMATLARI Daha önce ortalama bir PIC mikro denetleyici (PIC16F84, PIC16F877 gibi) komut setinde 35 adet komut bulunduğunu söylemiştik. Program yazarken bu komutlar haricinde bazı assembler derleyici talimatlarını da kullanmamız gerekir. Bunlar; Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  7. Konfigürasyon bitleri ve işlevleri • Power-up timer (PWRTE) • Osilatör start-up timer • BOR (Brown Out Reset) • Yonga içindeki bir RC osilatör devresi ile belirli bir frekansta çalışması denetlenen WDT (Watch Dog Timer) • Kesmeler • Kod koruma güvenliği • Id yerleşimleri • Güç harcamasının azaltılması istendiği durumlar için uyku (sleep) modu • İsteğe bağlı osilatör seçenekleri: RC/ XT/ HS/ LS • Devre içi seri programlama (iki pin ile seri olarak programlanabilme) • Devre içi düşük gerilimle programlama • Devre içi hata arayıcı (Debugger) __CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF __CONFIG h’3F31’;__CONFIG b’11111100110001’ Not: Program belleğinin 2007h adresinde olup 14 bittir. Bu bitlere sadece PIC programlama aşamasında erişilebilmektedir. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  8. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  9. SAYILARIN GÖSTERİMİ Yazım formatında bir önemli konu da sayıların gösterim şeklidir. Assembly içinde aksi belirtilmedikçe her sayı onaltılık tabanda kabul edilir. Aşağıdaki tabloda hangi tabandaki sayının nasıl gösterildiği yer almaktadır Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  10. PIC16F84 / PIC16F877 KOMUT SETİ • Ortalama bir PIC mikro denetleyicisi (PIC16F84/PIC16F877 gibi) komut setinde 35 adet komut bulunmaktadır. PIC komutlarını 3 ayrı başlık altında inceleyebiliriz; • Byte yönlendirmeli komutlar • Bit yönlendirmeli komutlar • Sabit (direkt veri) işleyen komutlar ve kontrol komutları • Komutların yazılış biçimlerini açıklarken bazı tanımlama harfleri kullanacağız, bunların anlamı; Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  11. .Sabit (direkt veri) işleyen komutlar ve kontrol komutları: • Bit yönlendirmeli komutlar: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  12. .Byte yönlendirmeli komutlar: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  13. PIC16F84 / PIC16F877 KOMUT SETİ Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  14. Aritmetiksel-Mantıksal İşlemler Soru: W kaydedicisi  içerisindeki h’0A’ sayısı  ile h’13’ sayısını  toplayıp, sonucu B portunda  gösteren program parçasını yazınız?  Çözüm:  MOVLW h’0A’  ADDLW h’13’  MOVWF PORTB  S4. W  kaydedicisinin  ilk  4  bitini  (LSB  tarafını)  sıfırlayan  fakat  son  4  bitini  (MSB  tarafını) olduğu gibi bırakan komut satırını yazınız.  Çözüm: MOVLW h’37’ ANDLW h’F0’ Soru:  W=W*3 işlemini PIC Assembly komutları ile gerçekleştiriniz?  Çözüm:  MOVLW d’03’  ; W kaydedicisine bir değer aktardık. W=03  MOVWF PORTB  ; W içeriği PORTB’ ye aktarıldı. PORTB=03  BCF STATUS, C ; Öncesinde elde bayrağı(C biti) sıfırkandı RLF PORTB, F  ; PORTB içeriği C ile birlikte bir bit sola kaydırıldı. PORTB=03*2  ADDWF PORTB,W ; PORTB ile W kaydedicisinin içeriğini topla sonucu W kaydedicisine  ; aktar. W= 03*2 + 03  Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  15. Örnek 1: PORB nin 7. bitine bağlı ledi yakıp söndüren program ;==LED.ASM === LIST P=16F84 #INCLUDE<P16F84.INC> BSF STATUS,5 CLRF TRISB ; PORTB nin tüm uçları çıkış yapıldı BCF STATUS,5 CLRF PORTB ; PORTB’ ye b’0000 0000’ değeri yüklendi DON: BSF PORTB,7 ; PORTB nin 7.bitini yak BCF PORTB,7 ; PORTB nin 7. bitini söndür GOTO DON END // C dilinde gerçekleştirimi #include <pic.h>  #include <delay.c>  main(void)  {  TRISB = 0;          // PORTB bitleri cikis yap  for(;;)             //sonsuz dongu {  RB7 = 0;        // LED OFF  DelayMs(250);       //250ms bekle  RB7 = 1;        //LED ON  DelayMs(250);       //250ms bekle  }  }  Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  16. Örnek2: Tek bir buton ile led yakıp söndüren program parçası BASLA BTFSC PORTA,0 ;Butona basıldı mı GOTO BASLA BSF PORTB,0 ; LED i yak. BUTON_OFF BTFSS PORTA,0 ;Butonu serbest bırak. GOTO BUTON_OFF BCF PORTB,0 ; LED i söndür GOTO BASLA END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  17. Örnek 2: PORTB ‘ye bağlı 8 ledi dörtlü olarak (ilk önce LSB tarafı daha sonra MSB tarafı olacak şekilde) yakıp, söndüren söndüren bir flashör devresi ve programı: Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  18. ÖRNEK 3. YURUYEN IŞIK UYGULAMASI Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  19. Örnek 4: PORTB ye bağlı ledler üzerinde binary (ikili) saydırma işlemi yapan PORTA nın RA0 ucuna bağlı butona basıldığında azaltacak, RA1 ucuna bağlı butona basıldığında artıracak program: LIST P=16F84 #INCLUDE<P16F84.INC> sayac1 equ h'09' sayac2 equ h'08' CLRF PORTA ;PORTA temizlenir CLRF PORTB ;PORTB temizlenir BSF STATUS, 5 ;BANK1’e geçilir MOVLW h'0F' MOVWF TRISA ;PORTA nın tüm uçları giriş CLRF TRISB ;PORTB nin tüm uçları çıkış olacaktır BCF STATUS, 5 ;BANK0’a geçilir don: BTFSS PORTA, 0 ;PORTA 0. bitini test et INCF PORTB, 1 ;Artır butonu basılı ise PORTB’yi bir artır CALL Bekle ;Bekle isimli gecikme programını çağır BTFSS PORTA, 1 ;PORTA 1. bitini test et DECF PORTB, 1 ;Azalt butonu basılı ise PORTB’yi bir azalt GOTO don ;Başa dön Bekle ;Gecikme alt programı Loop1: decfsz sayac1,1 goto Loop1 decfsz sayac2,1 goto Loop1 return END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  20. Örnek 5: PORTA ‘nın 0.bitine bağlı butona basınca (PORTB nin 0 bitine bağlı) ledi yakan/söndüren program LIST P=16F84 ; kullandığımız pic'i tanıttık. #INCLUDE<P16F84.INC> ; mplab da bulunan 16f84 dosyalarını çagırdık BSF STATUS,5 ; bank 1'e gec MOVLW 0XFF ; w<--< 0xff yükledik MOVWF TRISA ; portanın hepsi giriş CLRF TRISB ; portbnin hepsi çıkış BCF STATUS,5 ; bank 0'a geç CLRF PORTB ; portb yi sıfırla BUTON BTFSC PORTA,0 ; portanın 0'ıncı pini 0' mı? GOTO BUTON ; hayırsa tekrar kontrol et BUTON1 BTFSS PORTA,0 ; portanın 0'ıncı pini 1' mi? GOTO BUTON1 ; hayırsa tekrar kontrol et BTFSC PORTB,0 ; led sönükmü? GOTO SON ; hayırsa sön'git BSF PORTB,0 ; evetse ledi yak GOTO BUTON ; tekrar butonu kontrol et SON BCF PORTB,0 ; ledi söndür GOTO BUTON ; tekrar butonu kontrol et END ; programı bitir Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  21. Örnek 6: 7 segmentdisplay de 5 sayısını gösteren programı yazınız. Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

  22. Örnek 7: 0 dan 9 kadar olan sayıları PORB uçlarına bağlı 7 segmentdisplay’de gösteren programı gerçekleştiriniz. LIST P=16F84A #INCLUDE <P16F84A.INC> SAYAC1 EQU h'0D' BSF STATUS,5 ;BANK1 e geçiş yap CLRF TRISB ;PORTB nin tüm uçları çıkış seçildi BCF STATUS,5 ;BANK0 a geçiş yap CLRF PORTB ;PORTB yi temizle Basla MOVLW h'00' ;W kaydedicisine h'00' değerini yükle MOVWF SAYAC1 DON MOVF SAYAC1,W CALL DIZI MOVWF PORTB ; W içeriğini PORTB ye aktar INCF SAYAC1,F ; SAYAC1 değerini artır GOTO DON DIZI ADDWF PCL, F ;W içeriğini PCL ye aktar RETLW b'00111111' ;W ya 0 değeri yüklendi RETLW b'00000110' ;W ya 1 değeri yüklendi RETLW b'01011011' ;W ya 2 değeri yüklendi RETLW b'01001111' ;W ya 3 değeri yüklendi RETLW b'01100110' ;W ya 4 değeri yüklendi RETLW b'01101101' ;W ya 5 değeri yüklendi RETLW b'01111101' ;W ya 6 değeri yüklendi RETLW b'00000111' ;W ya 7 değeri yüklendi RETLW b'01111111' ;W ya 8 değeri yüklendi RETLW b'01101111' ;W ya 9 değeri yüklendi END Hazırlayan:Öğr.Gör.Bülent ÇOBANOĞLU

More Related