;PROGRAM-16) 16 bit’lik iki sayının toplanmasına örnek program. ;h'61A3' ve h'2EE0' sayılarını toplar. Program çalıştığında ;toplamın alt bayt'ı PortB'deki LED'lerde görülür. Üst bayt'ın ;toplamını görmek için RA0 butonuna basılır. ;2 bayt'lık h'61A3' sayısına A, h'2EE0' sayısına da B dersek, ;bu sayıları 1 bayt'lık veri depolayabilen 2 tane saklayıcı ;kullanmamız gerekir. ;===PROG16.ASM====17/05/2005================================ LIST P=16F628A INCLUDE "P16F628A.INC" __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF ;----------------------------------------------------------- CBLOCK 20h AL,AH,BL,BH ;Değişken adreslerini atama bloğu ENDC ORG h'00' ;Program kodlarının başlangıcı CLRF PORTB ;PortB'yi sıfırla BANKSEL TRISB ;BANK1'e geç CLRF TRISB ;PortB'nin tüm uçları çıkış MOVLW H'FF' ; W ? h'FF' MOVWF TRISA ;PortA'nın tüm uçları giriş BANKSEL PORTB ;BANK0'a geç MOVLW h'07' ;W saklayıcıya h’07’ yükle MOVWF CMCON ;W?CMCON PORTA girişleri dijital BASLA MOVLW h'A3' ;W ? h'A3' MOVWF AL ;AL ? h'A3' MOVLW h'61' ;W ? h'61' MOVWF AH ;AH ? h'61' MOVLW h'E0' ;W ? h'E0' MOVWF BL ;BL ? h'E0' MOVLW h'2E' ;W ? h'2E' MOVWF BH ;BH ? h'2E' TOPLA MOVF AL, W ;W ? AL ADDWF BL, F ;BL=BL+W(AL), alt bayt toplamı BTFSC STATUS, 0 ;CARRY BAYRAĞI=1 mi ? INCF BH, F ;Evet, BH=BH+1 MOVF AH, W ;W ? AH ADDWF BH, F ;BH=BH+W(AH), üst bayt toplamı ALT_BAYT_GOSTER MOVF BL, W ;W ? BL MOVWF PORTB ;Alt bayt toplamını göster TEST_RA0 BTFSC PORTA, 0 ;RA0 butonuna basıldı mı? GOTO TEST_RA0 ;Hayır, tekrar test et UST_BAYT_GOSTER MOVF BH, W ;Evet, W ? BH MOVWF PORTB ;Üst bayt toplamını göster. DONGU GOTO DONGU END ;-----------------------------------------------------------