PIC Assembly 2 adet 8 bit değişkenin çarpımı

Açıklama;

  • Tanımladığımız iki adet ( 8 bitlik ) değişkendeki değerleri çarparak işlem sonucunu SONUCH ve SONUCL değişkenlerine atan program PIC Assembly programıdır.
  • Sonuç PORTB'ye bağlı olan 8 adet led ile gösterilecektir. İşlem sonucu 2 byte olabileceği için hangi byte ın PORTB'de gösterileceği RA0 pinine bağlı olan buton ile seçilecektir. Butona her basıldığında PORTB'deki değer SONUCH ise SONUCL, SONUCL ise SONUCH olarak değiştirilecektir.

 

Kod;

LIST P=16F877A
#include <P16F877A.INC>

__config H'3F31' 

SAYI1 EQU 0X20
SAYI2 EQU 0X21
SONUCH EQU 0X22
SONUCL EQU 0X23
HANGISI	EQU 0X24
SYC0 EQU 0X25
SYC1 EQU 0X26

ORG 0X000
GOTO PROGRAM

PROGRAM
	BANKSEL TRISB
	CLRF TRISB
	MOVLW	D'1'
	MOVWF	TRISA
	MOVLW	D'6'
	MOVWF	ADCON1
	BANKSEL PORTB
	CLRF PORTB
	CLRF PORTA
	CLRF SONUCH
	CLRF SONUCL
	CLRF HANGISI
	MOVLW	D'200'
	MOVWF	SAYI1
	MOVLW	D'5'
	MOVWF	SAYI2
	CLRW
	GOTO ISLEM


ISLEM
	ADDWF	SAYI1,W
	BTFSC	STATUS,C
	INCF	SONUCH,F
	BCF	STATUS,C
	DECFSZ SAYI2
	GOTO ISLEM
	MOVWF SONUCL
	GOTO DUGME



HIGH_GOSTER
	MOVFW	SONUCH
	MOVWF	PORTB
	RETURN


LOW_GOSTER
	MOVFW	SONUCL
	MOVWF	PORTB
	RETURN



DUGME
	BTFSC	PORTA,0
	CALL DEGISTIR
	CALL KONTROL
	GOTO	DUGME

DEGISTIR
	COMF	HANGISI,1
	CALL GECIKME
	CALL GECIKME2
	CALL GECIKME
	CALL GECIKME2
	RETURN


KONTROL
	BTFSS	HANGISI,0
	CALL	LOW_GOSTER
	BTFSC	HANGISI,0
	CALL	HIGH_GOSTER
	RETURN


GECIKME
	MOVLW 0XFF
	MOVWF SYC0
	MOVLW 0XFF
	MOVWF SYC1
	RETURN


GECIKME2
	DECFSZ SYC1,F
	GOTO GECIKME2
	DECFSZ SYC0,F
    GOTO GECIKME2
	RETURN


END