Assembly Kodlama ile PIC16F877A Uygulamaları

Başlatan nuhaltinkaynak, 07 Ekim 2018, 16:23:00

nuhaltinkaynak

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