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