DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü Ders 7, Slayt 2 1
PROGRAM 1 RAM bellekte 0x0C ve 0x0D hücrelerinde tutulan iki 8-bit sayının toplamını hesaplayıp sonucu 0x0E hücresine kaydeden PIC16F84 işlemcisi assembler programını hazırlayalım:??????????? Ders 7, Slayt 3 PROGRAM 2 RAM bellekte 0x0C ve 0x0D hücrelerinde tutulan iki 8-bit sayının toplamını hesaplayıp sonucu 0x0E hücresine kaydeden PIC16F84 işlemcisi assembler programını hazırlayalım:??????? Ders 7, Slayt 4 2
PROGRAM 3 PIC16F84 işlemcisinin A portunun farklı bitlerini GİRİŞ veya ÇIKIŞ olarak programlayalım: BSF STATUS, 5 MOVLW MOVWF b 00111100 TRISA Ders 7, Slayt 5 PROGRAM 4 PIC16F84 işlemcisinin GİRİŞ olarak programlanmış A portundan bilgi okuyup W register ına yazalım: BSF STATUS, 5 MOVLW b 11111111 MOVWF TRISA BCF STATUS, 5 MOVF PORTA, W Ders 7, Slayt 6 3
PROGRAM 5 PIC16F84 işlemcisinin ÇIKIŞ olarak programlanmış B portuna W register ında tutulan bilgiyi yazalım: BSF STATUS, 5 BSF STATUS, 5 MOVLW b 00000000 CLRF TRISB MOVWF TRISB BCF STATUS, 5 BCF STATUS, 5 MOWF PORTB MOWF PORTB Ders 7, Slayt 7 PROGRAM 6 PIC16F84 işlemcisinin A portundan okunan bilgiyi B portuna gönderelim. Ders 7, Slayt 8 4
PROGRAM 6 CLRF PORTB BSF STATUS, 5 CLRF TRISB MOVLW b 11111111 MOVWF TRISA BCF STATUS, 5 MOVF PORTA, 0 MOVWF PORTB Ders 7, Slayt 9 KOMUTLAR Assembly programlarımızın işlem kapasitesini arttıralım: Yeni komutlar Ders 7, Slayt 10 5
KOMUTLAR Programlamada iki önemli kavramdan bir diğeri ise verilerin işlenmesini sağlayan komutlardır. Bunlar sınıflandırılacak olursa; I. Aritmetik ve Atama işlem komutları a. Yükleme İşlemi: Değişken (register) değerini belirleme (=) b. Aritmetik İşlem: Toplama, Çıkarma c. Mantıksal İşlem: AND, OR, XOR d. İçerik Değiştirme İşlemi: Değişken değerini değiştirme içerik temizle, arttır, azalt, eşlenik al e. Bit İşlemleri: Değişken bitini 0 veya 1 yap f. Kaydırma İşlemleri: Değişken bitlerini sağa veya sola kaydır II. Karar verme işlem komutları a. Koşullu Dallanma: Değişken sıfır herhangi biti 0/1 ise dallan III. Diğer işlem komutları a. Program Akış Komutları: Dallanma b. Mikrodenetleyici Kontrol Komutları Ders 7, Slayt 11 KOMUTLAR Dersin bu bölümünde III. Diğer İşlem Komutlarının neler olduklarına bakalım Ders 7, Slayt 12 6
KOMUTLAR (dallanma) GOTO : Program akışında bir etiket ile belirlenen komut satırına dallanma. komut N komut N GOTO SICRA GOTO SICRA komut M-1 komut M-1 SICRA komut M SICRA komut M komut M+1 komut M+1 Ders 7, Slayt 13 KOMUTLAR (dallanma) Program akışı bir etiket ile belirlenen bir komut satırına dallanır. GOTO k : programın işletilecek sıradaki komutu k etiketi ile işaretlenmiş komut satırı olarak yürütülür. Ders 7, Slayt 14 7
KOMUTLAR (dallanma) CALL: Program akışı bir etiket ile belirlenen bir alt_programa dallanır. komut N komut N CALL alt_prog CALL alt_prog komut M-1 komut M-1 alt_prog komut M alt_prog komut M komut M+1 komut M+1 Ders 7, Slayt 15 Program akışı bir etiket ile belirlenen bir alt_programa dallanır. KOMUTLAR (dallanma) CALL k : programın sıradaki komutu k etiketi ile işaretlenmiş alt_program ın başlangıç satırından itibaren yürütülür. CALL komutun GOTO komutundan farkı, dallanılan alt programdan ana programa geri dönmenin de mümkün olabilmesidir. Yani GOTO ile sadece bir başka program bölümüne dallanılırken CALL ile geri dönülmek üzere yine bir başka program bölümüne dallanılır. Ders 7, Slayt 16 8
KOMUTLAR (dallanma) RETURN: Alt_programın işletilmesi sona erdiğinde ana programda sıçramanın yapıldığı komut (CALL) sonrasına geri dönülür. CALL alt_prog CALL alt_prog komut M komut M alt_prog komut N alt_prog komut N RETURN RETURN komut K komut K Ders 7, Slayt 17 KOMUTLAR (dallanma) Alt_programın işletilmesi sona erdiğinde ana programda sıçramanın yapıldığı komut (CALL) sonrasına geri dönülür. RETURN : Alt programın işletilmesi sona erdiğinde CALL komutunun olduğu satır sonrasına geri dönmeyi mümkün kılar. kullanılır. Dolayısıyla CALL komutu ile Ders 7, Slayt 18 9
RETLW: Alt_programın işletilmesi sona erdiğinde yine ana programda sıçramanın yapıldığı komut (CALL) sonrasına geri dönülür. Ancak bu işlem yapılırken istenilen bir sabit değer W akümülatörü vasıtasıyla ana programa geri taşınır. KOMUTLAR (dallanma) RETLW k : k sabit değeri W akümülatörüne aktarılarak ana programa geri taşınır. Ders 7, Slayt 19 KOMUTLAR (dallanma) RETFIE: Interrupt alt_programı sona erdirilerek ana programa geri dönülür. RETFIE : Interrupt programını sona erdirip, ana programa kalınan yerden devam edilir. Ders 7, Slayt 20 10
PIC16F84 işlemcisi ile sonsuz döngü oluşturalım: PROGRAM 7 DONGU GOTO DONGU Ders 7, Slayt 21 PROGRAM 8 Program 6 ve Program 7 yi birleştirelim: PIC16F84 işlemcisinin A portundan okunan bilgiyi B portuna gönderelim ve program sonunda işlemcinin duraklatma komutu olmadığı için bu işlevi yerine getirecek bir sonsuz döngü ekleyelim. Ders 7, Slayt 22 11
DONGU CLRF PROGRAM 8 PORTB BSF STATUS, 5 CLRF TRISB MOVLW b 11111111 MOVWF TRISA BCF STATUS, 5 MOVF PORTA, W MOVWF PORTB GOTO DONGU END Ders 7, Slayt 23 PROGRAM 9 Bu program çalıştırıldığında A portundan okunan bilgiyi B portuna gönderilir. Ancak bu işlem yinelenmek istenirse işlemcinin resetlenmesi gerekir. Peki işlemcinin RESETLEMESİNE GEREK KALMAKSIZIN aynı işlem nasıl yapılır? Ders 7, Slayt 24 12
PROGRAM 9 CLRF PORTB BSF STATUS, 5 CLRF TRISB MOVLW b 11111111 MOVWF TRISA BCF STATUS, 5 MOVF PORTA, W MOVWF PORTB????????? Ders 7, Slayt 25 Program 9 ile kullanılabilecek deneme devresi, Mikrodenetleyiciler ve PIC Prog., sayfa 77 Ders 7, Slayt 26 13
DERS 7 MİKROİŞLEMCİ PROGRAMLAMA - SON - -Kaynak: -Mikrodenetleyiciler ve PIC Prog., Orhan ALTINBAŞAK, ISBN 975-883-409-6 14