Bu işlemler uzun süren işlemler sana kendi yazdığım toplama kodunu göndereyim ona bakarak bişeyler çıkar
Sola kaydırma işlemi için hazır komut var zaten sadece araya gecikme adlı alt yordamı ekleyeceksin onu da yolluyorum
16f84 ile senin işlemci aynı olması laızm
Toplama fonksiyonu 16 bitlik olarak gösterir çünkü toplam sonucu 8 biti aşabilir
;===PROG20.ASM====23706/2000=======
LIST P=16F84
INCLUDE "P16F84.INC"
CLRF PORTB ;PORTB' yi sil.
BSF STATUS,5 ;BANKl'e geç.
CLRF TRISB ;B portu tüm uçları çıkıs.
MOVLW h'FF' ;W¬h'FF'
MOVWF TRISA ;A potu tüın uçları giris.
BCF STATUS, 5 ;BANK0'a geç.
REG20 EQU 0X0C
REG21 EQU 0X0D
REG22 EQU 0X0E
REG23 EQU 0X0F
REG24 EQU 0X1A
REG25 EQU 0X1B
REG26 EQU 0X1C
REG27 EQU 0X1D
REG28 EQU 0X1E
;AL ve AH ilk sayının düşük ve yüksek biti
;BL ve BH 2. sayının düşük ve yüksek biti
;sonra alt tarafta bunlar toplanıyor
;sonucun düşük biti ilk olarak gösteriylir A1 butonuna basıldıgında yüksek bit ;gösteriliyor
AL EQU 0x3D ;AL registerinin adresi
AH EQU 0x3E ;AH registeri adresi
BL EQU 0x3F ;BL registerinin adresi
BH EQU 0x40 ;BH registerinin adresi
TOPLA ;-----------------------------------------
MOVF AL, W ;-->W¬AL
ADDWF BL, F ;-->BL=BL+W(AL), alt byte toplamı
BTFSC STATUS, 0 ;-->CARRY FLAG=1 mi ?
INCF BH, F ;-->Evet, BH=BH+1
MOVF AH, W ;-->W¬AH
ADDWF BH, F ;-->BH=BH+W(AH) , üst byte toplamı
ALT_BYTE_GOSTER1
MOVF BL, W ;-->W¬BL
MOVWF PORTB ;-->Alt byte toplamını göster
TEST_A11
BTFSC PORTA, 1 ;-->A1 butonuna basıldı mı?
GOTO TEST_A11 ;-->Hayır, tekrar test et
UST_BYTE_GOSTER1
MOVF BH, W ;-->Evet, W¬0BH
MOVWF PORTB ;-->Üst byte toplamını göster.
Diğer ödevin içinde sola veya saga öteleme komutu var tek yapmak gereken aşagıdaki gecikme altyordamını içine ekleyip çağırman
SAYAC1 EQU 0X0C
SAYAC2 EQU 0X0D
GECIKME MOVLW 0X90
MOVWF SAYAC1
DONGU1 MOVLW 0X90
MOVWF SAYAC2
DONGU2 DECFSZ SAYAC2,1
GOTO DONGU2
DECFSZ SAYAC1,1
GOTO DONGU1
RETURN
END