Transcript ders7
DERS 7 PIC 16F84 PROGRAMLAMA İÇERİK PIC 16F84 örnek programlar Dallanma komutları Sonsuz döngü Ders 7, Slayt 2 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 3 PIC16F84 işlemcisinin A portunun farklı bitlerini GİRİŞ veya ÇIKIŞ olarak programlayalım: Ders 7, Slayt 5 BSF STATUS, 5 MOVLW b’00111100’ MOVWF TRISA Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 4 PIC16F84 işlemcisinin GİRİŞ olarak programlanmış A portundan bilgi okuyup W register’ına yazalım: Ders 7, Slayt 6 BSF STATUS, 5 MOVLW b’11111111’ MOVWF TRISA BCF STATUS, 5 MOVF PORTA, W Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 6 PIC16F84 işlemcisinin A portundan okunan bilgiyi B portuna gönderelim. Ders 7, Slayt 8 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 6 CLRF BSF CLRF MOVLW MOVWF BCF MOVF MOVWF Ders 7, Slayt 9 PORTB STATUS, 5 TRISB b’11111111’ TRISA STATUS, 5 PORTA, 0 PORTB Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 KOMUTLAR Assembly programlarımızın işlem kapasitesini arttıralım: Yeni komutlar Ders 7, Slayt 10 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 KOMUTLAR Programlamada iki önemli kavramdan bir diğeri ise verilerin işlenmesini sağlayan komutlardır. Bunlar sınıflandırılacak olursa; 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ı I. Ders 7, Slayt 11 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 KOMUTLAR Dersin bu bölümünde III. Diğer İşlem Komutlarının neler olduklarına bakalım… Ders 7, Slayt 12 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 SICRA komut M komut M+1 Ders 7, Slayt 13 komut M-1 SICRA komut M komut M+1 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 alt_prog komut M komut M+1 Ders 7, Slayt 15 komut M-1 alt_prog komut M komut M+1 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 KOMUTLAR (dallanma) Program akışı bir etiket ile belirlenen bir alt_programa dallanır. 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 alt_prog Ders 7, Slayt 17 komut N komut M alt_prog komut N RETURN RETURN komut K komut K Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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. Ders 7, Slayt 18 Dolayısıyla CALL komutu ile Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 KOMUTLAR (dallanma) 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. RETLW k : k sabit değeri W akümülatörüne aktarılarak ana programa geri taşınır. Ders 7, Slayt 19 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 7 PIC16F84 işlemcisi oluşturalım: ile sonsuz döngü DONGU GOTO Ders 7, Slayt 21 DONGU Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 8 CLRF BSF CLRF MOVLW MOVWF BCF MOVF MOVWF PORTB STATUS, 5 TRISB b’11111111’ TRISA STATUS, 5 PORTA, W PORTB GOTO END DONGU DONGU Ders 7, Slayt 23 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 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 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 PROGRAM 9 CLRF BSF CLRF MOVLW MOVWF BCF MOVF MOVWF ????????? Ders 7, Slayt 25 PORTB STATUS, 5 TRISB b’11111111’ TRISA STATUS, 5 PORTA, W PORTB Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 Program 9 ile kullanılabilecek deneme devresi, Mikrodenetleyiciler ve PIC Prog., sayfa 77 Ders 7, Slayt 26 Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 DERS 7 MİKROİŞLEMCİ PROGRAMLAMA - SON -Kaynak: -Mikrodenetleyiciler ve PIC Prog., Orhan ALTINBAŞAK, ISBN 975-883-409-6