;PROGRAM-19) 16-bit’lik sayıların çıkarılmasına örnek program ; ;(büyük sayıdan küçük sayıyı çıkarma). h'0004' sayısından h'0001' ;sayısını çıkaran program. Program çalıştığında çıkarma sonucunun ;alt bayt'ı PortB'deki LED'lerde görülür. Üst bayt'ı görmek için RA0 butonuna basılır. ;===PROG19.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ıç adresi 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'04' ;W ? h'04' MOVWF AL ;AL ? h'04' MOVLW h'00' ;W ? h'00' MOVWF AH ;AH ? h'00' MOVLW h'01' ;W ? h'01' MOVWF BL ;BL ? h'01' MOVLW h'00' ;W ? h'00' MOVWF BH ;BH ? h'00' CIKAR MOVF BL, W ;W ? BL SUBWF AL, F ;AL=AL-W(BL), alt bayt sonucu BTFSS STATUS, 0 ;CARRY BAYRAĞI=0 mı ? DECF AH, F ;Evet, AH=AH-1 MOVF BH, W ;Hayır, W ? BH SUBWF AH, F ;AH=AH-W(BH), üst bayt sonucu ALT_BAYT_GOSTER MOVF AL, W ;W ? AL MOVWF PORTB ;Alt bayt sonucunu göster TEST_RA0 BTFSC PORTA, 0 ;RA0 butonuna basıldı mı? GOTO TEST_RA0 ;Hayır, tekrar test et MOVF AH, W ;Evet, W ? AH MOVWF PORTB ;Üst bayt sonucunu göster. DONGU GOTO DONGU END ;-----------------------------------------------------------