Академический Документы
Профессиональный Документы
Культура Документы
; MICROCONTROLADORES
; Nombre: Edison Naranjo
; Curso: Sexto " B" DEE
;********************************************************************
;********************************************************************
; Ejercicio 1.- Resta de 2 nmeros de 16 bits
; EBEB - 1111 = DADA
; Los nmeros se encuentran cargados en el PIC
;********************************************************************
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
DATOA_H EQU
DATOA_L EQU
DATOB_H EQU
DATOB_L EQU
RESULTADO_H
RESULTADO_L
0X11
DATOB_L; DATOB_L=0X11
0X11
DATOB_H; DATOB_H=0X11
0XEB
DATOA_L ; DATOA_L=0XEB
0XEB
DATOA_H ; DATOA_H=0X11
movwf PORTC
goto INICIO
COMP1
comf DATOB_L,0 ; complemento a 1 de DATOB_L
movwf COMP1_L
comf DATOB_H,0 ; complemento a 1 de DATOB_H
movwf COMP1_H
return
RESTA_L
movf DATOA_L,0
addwf COMP1_L,0 ; W=DATOA_L + COMP1_l
movwf RESULTADO_L
return
RESTA_H1
movf DATOA_H,0
addwf COMP1_H,0 ; W=DATOA_H + COMP1_H
movwf RESULTADO_H
return
RESTA_H2
movf DATOA_H,0
addlw 0X01
addwf COMP1_H,0 ; W=DATOA_H + COMP1_H + 1
movwf RESULTADO_H
return
MAS
; En esta subrutina, si existe carry al sumar el numero A
; con el complemento a 1 del nmero B, este se debe
sumarse
; al resultado final
movf RESULTADO_L,0
addlw 0X01
movwf RESULTADO_L
btfsc STATUS,C
movlw 0X01
movlw 0X00
addwf RESULTADO_H,1
return
CAMBIO
; En esta subrutina, si no hay carry al sumar el numero A
; con el complemento a 1 del nmero B, se debe efectuar el
; complemento a 1 del resultado final
comf RESULTADO_L,1
comf RESULTADO_H,1
return
end