Assembly kodlamaya yeni başlayanlar için pekiştirme mahiyetinde led, 7 seven segment display vs üzerinde çalışmalar yapmaya olanak sağlayan örnekleri bu başlık altında paylaşabiliriz. Yararı olur umarım.
İlk örneğimiz çarpma işleminin sonucunu PORTB'ye bağlı ledlerde göstermek
Deger1(4) sayısı ile Deger(3) sayısını çarpıp sonucu B portunda gösteren uygulama;
#include <P16F877A.INC>
Deger1 EQU 0X21 ;Değişkenlerimizi hexa 20. adresten itibirane yazıyoruz.
Deger2 EQU 0X22
ORG 0x00
SETUP
BSF STATUS, RP0 ;BANK1'e geçildi. Aynı işlemi BANKSEL TRISB komutuyla da yapılabilir.
CLRF TRISB ;TRISB nin tüm uçları 0 yapıldı. Yani PORTB çıkış olarak ayarlandı.
BCF STATUS, RP0 ;BANK0'a geçildi. BANKSEL PORTB ile de yapılabilir.
CLRF PORTB
MOVLW 0x04 ;W kaydedicisine 4 sayısını atıldı.
MOVWF Deger1 ;W'deki sayı Deger1'e atıldı.
MOVLW 0x03
MOVWF Deger2
CLRW ;W'yi sıfırlıyoruz çünkü sonucu W'de saklayacaz ve lede yansıtacaz.
MAIN
ADDWF Deger1,W ;W ile Deger1'i topla sonucu W'ye yaz.
DECFSZ Deger2,F ;Deger2'yi bir azaltır, 0 ise bir satırı işlemeden geçer, değilse devam eder.
GOTO MAIN
MOVWF PORTB
END
Karaşimşek uygulaması(Yanan ışığın sol köşeye gidip geri gelmesi ve bunu sonsuz kere tekrarlaması)
#include <P16F877A.INC>
Sayac1 EQU 0X21
Sayac2 EQU 0X22
ORG 0x00
SETUP
BANKSEL TRISB
MOVLW B'00000000'
MOVWF TRISB
BANKSEL PORTB
CLRF PORTB
MOVLW 0x01
MOVWF PORTB
SOLA
CALL GECIKME
RLF PORTB
BTFSS PORTB,7
GOTO SOLA
GOTO SAGA
SAGA
CALL GECIKME
RRF PORTB
BTFSS PORTB,0
GOTO SAGA
GOTO SOLA
GECIKME
MOVLW 0X80
MOVLW Sayac1
TEKRAR1
MOVLW 0XFF
MOVWF Sayac2
TEKRAR2
DECFSZ Sayac2
GOTO TEKRAR2
DECFSZ Sayac1
GOTO TEKRAR1
RETURN
END