ÖDEV1: 0x20h tan başlayan 0x25h ta biten bir tablodaki sayıları toplayıp sonucu 0x2A ya program (Tablo verileri sırasıyla; 0x02, 0x0A, 0x05, 0x0C, 0x08, 0x0E )
ÖDEV2: 16 bitlik A sayısının düşük anlamlı 8 biti 0x20h adresinde, yüksek anlamlı bitleri 0x21h adresindedir. Aynı şekilde B sayısı için düşük bitler 0x22h ve yüksek bitler 0x23h ta bulunmaktadır. İki 16 bitlik sayıyı toplayan sonucun düşük bitlerini 0x25h yüksek bitlerini 0x26h a yazan program.(Test değerleri: A=0x650F, B=0x30B2, A=0x25C8, B=0xA0DE)
Örnek: 20h de bulunan 0x07h ve 21h de bulunan 0x08h verilerini toplayıp 22h a yazan programı yazınız.
Çözüm: Veriler daha önce yazılmamışsa önce bu adreslere veri yazılması gerekmektedir.
list p=pic16f877a
#include<p16f877a.inc>
org 0x000
goto basla basla:
movlw 0x07 ; w <- 0x07 yükle movwf 0x20 ; (0x20) <- w movlw 0x08 ; w <- 0x08 yükle movwf 0x21 ; (0x21) <- w addwf 0x20,w ; w <- w + (0x20) movwf 0x22 ; (0x22) <- w end
Örnek: Farklı banklarda bulunan 20h ve A0h adresindeki verileri toplayıp 30h a yazan programı yazınız.
Çözüm: 1- 0x20h veri belleğindeki bilgi w kaydedicisine taşınır. 2 – Veri bankı değiştirilir 3 – 0xA0h veri belleğindeki bilgi w kaydedicisindeki bilginin üzerine eklenir. 4 – Veri bankı değiştirilir 5- w
kaydedicindeki toplama işleminin sonucu 0x30h veri belleğine yazılır.
list p=pic16f877a
#include<p16f877a.inc>
org 0x000 goto basla basla:
movfw 0x20
bsf STATUS,RP0 ; Bank 1'e geçildi.
addwf 0xA0,w
bcf STATUS,RP0 ; Bank 0'a geçildi.
movwf 0x30 end
Örnek: 20h tan başlayan 0x25h ta biten bir tablodaki sıfırları sayan program. (Tablo verileri program ile yüklenir)
list p=pic16f877a
#include<p16f877a.inc>
tbasi equ 0x20 tsonu equ 0x25 sayac equ 0x30
org 0x000
goto basla basla:
clrf sayac call tdoldur movlw tbasi movwf FSR geri:
movf INDF,w btfsc STATUS,Z incf sayac,f incf FSR,f movlw tsonu subwf FSR,w btfss STATUS,Z goto geri goto son tdoldur:
movlw 0x3f movwf tbasi movlw 0x00 movwf tbasi+1 movlw 0x5b movwf tbasi+2 movlw 0x00 movwf tbasi+3 movlw 0x66 movwf tbasi+4 movlw 0x00 movwf tbasi+5 return
son:
end