Que mas estimados!, estoy desarrollando un sensor de temperatura pero me esta matando ya con el final, estoy usando dos pics 16f887 los cuales se comunican entre si a través del i2c y la información de la temperatura se muestra a través de manera rotativa a través de una matrix 5x7 y como complemente la temperatura debe mostrarse en las tres escalas (Celsius/Kelvin/Farenheit). Aca les pongo lo que desarrolle y espero que me puedan ayudar. Es largo pero por favor ayuda!!!
PIC MASTER
LIST P=16f887
INCLUDE<P16F887.INC>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF &_INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
CBLOCK 20h
DATO
BANDERA
VALORH
CONTADOR
RESULCONVER
ENDC
ORG .0
;*** CAPTURA DE LA TEMPERATURA POR EL PUERTO A E INICIO DE LA CONVERSION ANALOGICO/DIGITAL ***
CONVERSOR
BANKSEL ADCON1 ;
MOVLW B'00000000' ;JUSTIFICO A LA IZQUIERDA
MOVWF ADCON1 ;Vdd and Vss as Vref
BANKSEL TRISA ;
MOVLW 0XFF ;
MOVWF TRISA ;CONFIGURO PUERTOA COMO ENTRADA
BANKSEL ANSEL ;
BSF ANSEL,0 ;CONFIGURO RA0 COMO ANALOGICO
BANKSEL ADCON0 ;
GOTO INICIO
;**********CONVERSION************
MEDICION
MOVLW B'11000001' ;ADC Frc clock,
MOVWF ADCON0 ;AN0, On
MOVLW 0X20
MOVWF CONTADOR
DECFSZ CONTADOR,F
GOTO $-1
BSF ADCON0,GO ;Start conversion
BTFSC ADCON0,GO ;Is conversion done?
GOTO $-1 ;No, test again
BANKSEL ADRESH
MOVF ADRESH
MOVWF RESULCONVER
RETURN
;*********TRANSMISION I2C*********
I2C_INI
BANKSEL TRISC
MOVLW B'00011000'
MOVWF TRISC
;IORWF TRISC,F
MOVLW .1
MOVWF SSPADD
MOVLW B'10000000'
MOVWF SSPSTAT
BANKSEL SSPCON
MOVLW B'00101000'
MOVWF SSPCON
CLRF PIR1
CALL I2C_LIB
RETURN
I2C_LIB
BANKSEL SSPSTAT
BTFSC SSPSTAT,R_W
GOTO $-1
MOVLW 01FH
ANDWF SSPCON2,W
BTFSS STATUS,Z
GOTO $-3
BANKSEL SSPCON
RETURN
;**********************************CONFIGURACION COMO MAESTRO***********************
INTERRUPCIONES
I2C_S ;I2C START
CALL I2C_LIB
BANKSEL SSPCON2
BSF SSPCON2,SEN
BTFSC SSPCON2,SEN
GOTO $-1
BANKSEL PIR1
BTFSS PIR1,SSPIF
GOTO $-1
BCF PIR1,SSPIF
RETURN
I2C_RES ;I2C RESTART
BANKSEL SSPCON2
BSF SSPCON2,RSEN
BTFSC SSPCON2,RSEN
GOTO $-1
BANKSEL SSPCON
RETURN
I2CREAD ;I2C LEER
CALL I2C_LIB
BANKSEL SSPCON2
BSF SSPCON2,RCEN
BTFSC SSPCON,RCEN
GOTO $-1
BTFSS SSPSTAT,BF
GOTO $-1
BANKSEL SSPBUF
MOVF RESULCONVER,W
MOVWF SSPBUF
MOVF SSPBUF,W
MOVWF DATO
BCF SSPSTAT,BF
BANKSEL PORTA
RETURN
I2C_WRITE ;I2C ESCRIBIR
BCF BANDERA,0
CALL I2C_LIB
MOVF DATO,W
MOVWF SSPBUF
BANKSEL SSPSTAT
BTFSC SSPSTAT,2
GOTO $-1
BTFSS SSPCON2,ACKSTAT
GOTO RECIVE ;VA A RECIBIR
BSF SSPCON2,PEN
BANKSEL SSPCON
RETURN
RECIVE
BANKSEL SSPCON
BTFSS PIR1,SSPIF
GOTO $-1
BCF PIR1,SSPIF
BSF BANDERA,0
RETURN
I2C_SEND_ACK
BANKSEL SSPCON2
BCF SSPCON2,ACKDT
BSF SSPCON2,ACKEN
BANKSEL SSPCON
RETURN
I2C_SEND_NACK
BANKSEL SSPCON2
BSF SSPCON2,ACKDT
BSF SSPCON2,ACKEN
BANKSEL SSPCON
RETURN
I2CSTOP
BANKSEL SSPCON2
BSF SSPCON2,PEN
BANKSEL SSPCON
RETURN
WRITE_DATO
CALL I2C_S
MOVLW .120
MOVWF DATO
CALL I2C_WRITE
BTFSS BANDERA,0
RETURN
MOVLW 0X07
MOVWF DATO
CALL I2C_WRITE
BTFSS BANDERA,0
RETURN
CALL I2CSTOP
RETURN
INICIO
CALL MEDICION
CALL I2C_INI
CALL WRITE_DATO
GOTO INICIO
END
*****************************************************************
PIC SLAVE
LIST P=16F887
INCLUDE <P16F887.inc>
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
CBLOCK 20h
VAR
VAR1
VAR2
VAR3
TIEMPO
TIEMPO2
TIEMPO3
MATRIX0
MATRIX1
MATRIX2
MATRIX3
MATRIX4
RESPAL0
RESPAL1
RESPAL2
RESPAL3
RESPAL_0
RESPAL_1
RESPAL_2
RESPAL_3
RESPAL_4
COLU0
COLU1
COLU2
COLU3
B_NUM
RESPALDOW
CONVER
RESPALDOSTATUS
BOTON
ENDC
ORG .0
GOTO INICIO
ORG .4
GOTO RUTINA_SERVICIO
;_____RUTINA DE RETARDO MILI____
RETARDO
MOVLW .10
MOVWF TIEMPO
DECFSZ TIEMPO,F
GOTO $-1
RETURN
TABLA1
ADDWF PCL ;LLAMAMOS PCL Y LE AUMENTAMOS UNO
RETLW 0x0E ;0
RETLW 012H ;1
RETLW 012H ;2
RETLW 011H ;3
RETLW 007H ;4
RETLW 017H ;5
RETLW 00EH ;6
RETLW 011H ;7
RETLW 00AH ;8
RETLW 002H ;9
RETLW 01FH ;C
RETLW 01FH ;F
RETLW 01FH ;K
RETURN
TABLA2
ADDWF PCL ;LLAMAMOS PCL Y LE AUMENTAMOS UNO
RETLW 011H ;0
RETLW 01FH ;1
RETLW 019H ;2
RETLW 015H ;3
RETLW 004H ;4
RETLW 015H ;5
RETLW 015H ;6
RETLW 019H ;7
RETLW 015H ;8
RETLW 005H ;9
RETLW 011H ;C
RETLW 005H ;F
RETLW 004H ;K
RETURN
TABLA3
ADDWF PCL ;LLAMAMOS PCL Y LE AUMENTAMOS UNO
RETLW 011H ;0
RETLW 010H ;1
RETLW 015H ;2
RETLW 015H ;3
RETLW 01FH ;4
RETLW 015H ;5
RETLW 015H ;6
RETLW 005H ;7
RETLW 015H ;8
RETLW 005H ;9
RETLW 011H ;C
RETLW 005H ;F
RETLW 00AH ;K
RETURN
TABLA4
ADDWF PCL ;LLAMAMOS PCL Y LE AUMENTAMOS UNO
RETLW 00EH ;0
RETLW 010H ;1
RETLW 012H ;2
RETLW 00AH ;3
RETLW 004H ;4
RETLW 009H ;5
RETLW 008H ;6
RETLW 003H ;7
RETLW 00AH ;8
RETLW 01EH ;9
RETLW 011H ;C
RETLW 001H ;F
RETLW 011H ;K
RETURN
INICIO
BSF STATUS, RP0
BSF STATUS, RP1 ;BANK3
MOVLW B'00000010'
MOVWF ANSEL
CLRF ANSELH
BCF STATUS, RP1 ;BANK1
CLRF TRISB
MOVLW 0X18
MOVWF TRISC
CLRF TRISD
MOVLW 0XFF
MOVWF TRISE
BSF PIE1,SSPIE
BSF INTCON,PEIE
BSF INTCON,GIE
MOVLW .120
MOVWF SSPADD
MOVLW 0X80
MOVWF SSPSTAT
BCF STATUS, RP0 ;BANK0
MOVLW 0X26
MOVWF SSPCON
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF BOTON
MOVLW .13
MOVWF TIEMPO2
;PULSADOR BTFSC PORTE,0
; GOTO INCREMENTO
; GOTO $-2
;INCREMENTO INCF BOTON,F
; MOVLW 0X01
; SUBWF BOTON,W
; BTFSS STATUS,Z
; GOTO INCREMENTO2
; GOTO CELSIO
;INCREMENTO2 MOVLW 0X02
; SUBWF BOTON,W
; BTFSS STATUS,Z
; GOTO INCREMENTO3
; GOTO KELVIN
;INCREMENTO3 MOVLW 0X03
; SUBWF BOTON,W
; BTFSS STATUS,Z
; GOTO INCREMENTO4
; GOTO FAREN
;INCREMENTO4 CLRF BOTON
; GOTO PULSADOR
P1 BTFSC PORTE,0
GOTO P3
GOTO P2
P2 BTFSC PORTE,1
GOTO KELVIN
GOTO CELSIO
P3 BTFSC PORTE,1
GOTO P1
GOTO FAREN
CELSIO
CALL CONVERSIONCELSIUS
CALL BINBCD2
GOTO MOSTRAR
KELVIN CALL CONVERSIONKELVIN
CALL BINBCD2
GOTO MOSTRAR
FAREN CALL CONVERSIONFARENHEIT
CALL BINBCD2
GOTO MOSTRAR
;################### AQUI COMIENZA LA RUTINA DE LA MARQUESINA ################################################
MOSTRAR
MOVF UNIMIL
MOVWF VAR ;VARIABLE DONDE ENTRAN LOS NUMEROS A MOSTRAR
MOVF CEN
MOVWF VAR1
MOVF DECI
MOVWF VAR2
MOVF LETRA
MOVWF VAR3
;*****************RUTINA PARA MOSTAR EL VALOR DE LA CENTENA*****************************
CENTENA
MOVF VAR,W
MOVWF B_NUM
MOVF B_NUM,W
CALL TABLA1
MOVWF MATRIX0
MOVF B_NUM,W
CALL TABLA2
MOVWF MATRIX1
MOVF B_NUM,W
CALL TABLA3
MOVWF MATRIX2
MOVF B_NUM,W
CALL TABLA4
MOVWF MATRIX3
CLRF MATRIX4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
CLRF PORTB
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX1,W
MOVWF PORTD
MOVWF RESPAL1
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH ;;;;;;;;;;;
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX2,W
MOVWF PORTD
MOVWF RESPAL2
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.39
;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX3,W
MOVWF PORTD
MOVWF RESPAL3
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
MOVWF RESPAL_0
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
MOVWF RESPAL_1
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
MOVWF RESPAL_2
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL3,W
MOVWF RESPAL_3
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
MOVWF RESPAL_4
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.42
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.33
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INCF VAR,F
DECFSZ TIEMPO2,F
GOTO DECENA
;*****************RUTINA PARA MOSTRAR EL VALOR DE LA DECENA***********************
DECENA
MOVF VAR1,W
MOVWF B_NUM
MOVF B_NUM,W
CALL TABLA1
MOVWF MATRIX0
MOVF B_NUM,W
CALL TABLA2
MOVWF MATRIX1
MOVF B_NUM,W
CALL TABLA3
MOVWF MATRIX2
MOVF B_NUM,W
CALL TABLA4
MOVWF MATRIX3
CLRF MATRIX4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
CLRF PORTB
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX1,W
MOVWF PORTD
MOVWF RESPAL1
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH ;;;;;;;;;;;
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX2,W
MOVWF PORTD
MOVWF RESPAL2
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.39
;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX3,W
MOVWF PORTD
MOVWF RESPAL3
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
MOVWF RESPAL_0
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
MOVWF RESPAL_1
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
MOVWF RESPAL_2
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL3,W
MOVWF RESPAL_3
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
MOVWF RESPAL_4
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.42
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.33
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INCF VAR,F
DECFSZ TIEMPO2,F
GOTO UNIDAD
;********************RUTINA PARA MOSTRAR EL VALOR DE LAS UNIDADES****************************
UNIDAD
MOVF VAR2,W
MOVWF B_NUM
MOVF B_NUM,W
CALL TABLA1
MOVWF MATRIX0
MOVF B_NUM,W
CALL TABLA2
MOVWF MATRIX1
MOVF B_NUM,W
CALL TABLA3
MOVWF MATRIX2
MOVF B_NUM,W
CALL TABLA4
MOVWF MATRIX3
CLRF MATRIX4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
CLRF PORTB
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX1,W
MOVWF PORTD
MOVWF RESPAL1
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH ;;;;;;;;;;;
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX2,W
MOVWF PORTD
MOVWF RESPAL2
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.39
;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX3,W
MOVWF PORTD
MOVWF RESPAL3
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
MOVWF RESPAL_0
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
MOVWF RESPAL_1
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
MOVWF RESPAL_2
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL3,W
MOVWF RESPAL_3
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
MOVWF RESPAL_4
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.42
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.33
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INCF VAR,F
DECFSZ TIEMPO2,F
GOTO LETRA
;****************************RUTINA PARA MOSTRAR LA LETRA DE LA CONVERSION MOSTRADA*******************************************
LETRA
MOVF VAR3,W
MOVWF B_NUM
MOVF B_NUM,W
CALL TABLA1
MOVWF MATRIX0
MOVF B_NUM,W
CALL TABLA2
MOVWF MATRIX1
MOVF B_NUM,W
CALL TABLA3
MOVWF MATRIX2
MOVF B_NUM,W
CALL TABLA4
MOVWF MATRIX3
CLRF MATRIX4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
CLRF PORTB
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX1,W
MOVWF PORTD
MOVWF RESPAL1
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH ;;;;;;;;;;;
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX2,W
MOVWF PORTD
MOVWF RESPAL2
CALL RETARDO
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.39
;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX3,W
MOVWF PORTD
MOVWF RESPAL3
CALL RETARDO
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.38
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 03FH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL0,W
MOVWF PORTD
MOVWF RESPAL_0
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL1,W
MOVWF PORTD
MOVWF RESPAL_1
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL2,W
MOVWF PORTD
MOVWF RESPAL_2
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL3,W
MOVWF RESPAL_3
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX4,W
MOVWF PORTD
MOVWF RESPAL_4
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.42
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVLW .100
MOVWF TIEMPO3
CLRF PORTD
MOVLW 05FH
MOVWF PORTB
MOVF RESPAL_0,W
MOVWF PORTD
CALL RETARDO
MOVLW 06FH
MOVWF PORTB
MOVF RESPAL_1,W
MOVWF PORTD
CALL RETARDO
MOVLW 0F7H
MOVWF PORTB
MOVF RESPAL_2,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FBH
MOVWF PORTB
MOVF RESPAL_3,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FDH
MOVWF PORTB
MOVF RESPAL_4,W
MOVWF PORTD
CALL RETARDO
MOVLW 0FEH
MOVWF PORTB
MOVF MATRIX0,W
MOVWF PORTD
MOVWF RESPAL0
CALL RETARDO
DECFSZ TIEMPO3,F
GOTO $-.33
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INCF VAR,F
DECFSZ TIEMPO2,F
GOTO CENTENA
INCLUDE <CELSIUS.INC>
INCLUDE <BINBCD2.INC>
INCLUDE <FARENHEIT.INC>
INCLUDE <KELVIN.INC>
RUTINA_SERVICIO
MOVWF RESPALDOW
MOVF STATUS,W
MOVWF RESPALDOSTATUS
BANKSEL SSPBUF
MOVF SSPBUF,W
MOVWF CONVER
BCF SSPCON,SSPOV
BANKSEL SSPSTAT
BCF SSPSTAT,BF
BANKSEL PIR1
BCF PIR1,SSPIF
SALIDA
MOVF RESPALDOSTATUS,W
MOVWF STATUS
MOVF RESPALDOW,W
RETFIE
END
**********************************************************
Rutinas de conversión
**********************************************************
CELSIUS
CBLOCK
;AUXL
;AUXH
CONT1
ENDC
CONVERSIONCELSIUS
CLRF AUXL
CLRF AUXH
MOVLW .6
MOVWF CONT1
MOVF CONVER,W ;mueve el valor que se encuentra en la parte alta al registro w
ADDWF AUXL,F ;suma lo que tiene el valor de w con lo que esta guardado en el registro adresh y el resultado lo guardo en adresh
BTFSS STATUS,C ;pregunta si hay carry
GOTO TOPESUMA ;no hay carry me voy a limite
INCF AUXH,F ;si hay carry incrementa el valor alto
TOPESUMA
DECFSZ CONT1,F ;decrementa la variable CONT1 y guardo el resultado en la variable y verifico si la bandera z es cero
GOTO $-5 ;si no es cero me devuelvo cinco pasos antes.
RETURN
************************************************************
KELVIN
CBLOCK
AXL
AXH
ENDC
CONVERSIONKELVIN
MOVF AUXL,W
MOVWF AXL
MOVF AUXH,W
MOVWF AXH
MOVLW 0XAA
ADDWF AXL,F ;suma lo que tiene el valor de w con lo que esta guardado en el registro adresh y el resultado lo guardo en adresh
BTFSS STATUS,C ;pregunta si hay carry
GOTO SUMAPARTEALTA ;no hay carry me voy a limite
MOVLW 0X0B ;si hay carry incrementa el valor alto
SUMAPARTEALTA
MOVLW 0X0A ;decrementa la variable CONT1 y guardo el resultado en la variable y verifico si la bandera z es cero
ADDWF AXH,F ;si no es cero me devuelvo cinco pasos antes.
RETURN
MOVF AXL ;LUEGO DE LA SUMA, SUSTITUYO LOS VALORES DE AUXL Y AUXH
MOVWF AUXL ;CON LOS VALORES OBTENIDOS EN LA SUMA EN LAS VARIABLES
MOVF AXH ;AXL Y AXH PARA HACER LA CONVERSION A BCD
MOVWF AUXH ;Y LUEGO HAGO EL LLAMADO A LA RUTINA DE MOSTRAR EN PANTALLA
RETURN
**************************************************************
FARENHEIT
CBLOCK
AFL
AFH
FARH
FARL
CONT
ENDC
CONVERSIONFARENHEIT
CLRF AFL ;LAS VARIABLES AFL Y AFH SON DONDE SE GUARDA EL RESULTADO DE LA CONVERSION PARA
CLRF AFH ;PODER ENVIARLO AL CONVERSOR BCD
MOVF AUXH,W ;EL VALOR DE AUXH QUE OBTUVE EN LA CONVERSIONCELSIUS SE LO ASIGNO A FARH
MOVWF FARH
INCF FARH,F
MOVF AUXL,W ;EL VALOR DE AUXL QUE OBTUVE EN LA CONVERSIONCELSIUS SE LO ASIGNO A FARL
MOVWF FARL
MOVLW .5
DIVIDE
SUBWF FARL,F
BTFSC STATUS,C
GOTO DIVISION
DECFSZ FARH,F
GOTO DIVISION
GOTO MULTIPLICA
DIVISION
INCFSZ AFL,F
GOTO DIVIDE
INCF AFH
GOTO DIVIDE
MULTIPLICA
MOVLW .8
MOVWF CONT
MOVF AFH,W
MOVWF FARH
MOVF AFL,W
MOVWF FARL
MOVF FARL,W
ADDWF AFL,F
BTFSS STATUS,C
GOTO MULTIPLICA2
INCF FARH,W
MULTIPLICA1
ADDWF AFH,F
DECFSZ CONT,F
GOTO $-7
GOTO SUMA
MULTIPLICA2
MOVF FARH,W
GOTO MULTIPLICA1
SUMA
MOVLW 40H
ADDWF AFL,F
BTFSS STATUS,C
GOTO $+2
INCF AFH,F
MOVLW 01H
ADDWF AFH,F
RETURN
MOVF AFL
MOVWF AUXL
MOVF AFH
MOVWF AUXH
RETURN
**********************************************************
CONVERSION BCD
;EN EL PROGRAMA PRINCIPAL DEBEN HABER DOS REGISTROS CON EL NOMBRE AUXH Y AUXL
;AUXH CONTIENE LOS 8 BITS MAS SIGNIFICATIVOS DEL NUMERO Y AUXL, LOS MAS BAJOS
CBLOCK
NUMH
NUML
RESH
RESL
DECMIL
UNIMIL
CEN
DECI
UNI
AUXH
AUXL
ENDC
;EL NUMERO MAS ALTO QUE SE PUEDE FORMAR CON 16 BITS ES EL 65535. PARA DESCOMPONER UN VALOR EN SUS CIFRAS DECIMALES
;SE PROCEDE PRIMERO A DIVIDIR EL NUMERO ENTRE 10000, QUE EN HEXADECIMAL ES 2710H
BINBCD2
CLRF DECMIL
CLRF UNIMIL ;CENTENAS
CLRF CEN ;DECENAS
CLRF DECI ;UNIDADES
CLRF UNI
;MUEVO PRIMERO LOS VALORES DE LOS PUERTOS A Y B A NUML Y NUMH, RESPECTIVAMENTE
MOVF AUXH,W
MOVWF NUMH
MOVF AUXL,W
MOVWF NUML
BINBCD
;EL PROCESO DE CONVERSION COMIENZA OBTENIENDO LAS DECENAS DE MIL, PARA ELLO, SE RESTARA AL NUMERO COMPLETO DE 16 BITS
;POR 0X2710 (EN DECIMAL, 10000). PARA HACER ESTO PRIMERO COMPROBAMOS QUE EL NUMERO A RESTAR SEA MAYOR QUE 10000, SI NO
;ES MAYOR, ENTONCES SE PROCEDERA A LA SIGUIENTE COMPROBACION.
MOVLW 0X10
SUBWF NUML,W
BTFSS STATUS,C
GOTO ALTER1 ;DEPENDIENDO SI EL RESULTADO DE LA RESTA ES POSITIVO O NEGATIVO, A LOS BITS DE LA PARTE ALTA SE
MOVWF RESL ;LE RESTARAN 0X27 Ó 0X28
MOVLW 0X27
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NODIEZMIL
INCF DECMIL,F
GOTO FINCOMP
ALTER1
MOVWF RESL
MOVLW 0X28
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NODIEZMIL
INCF DECMIL,F
GOTO FINCOMP
NODIEZMIL
MOVLW 0XE8
SUBWF NUML,W
BTFSS STATUS,C
GOTO ALTER2 ;DEPENDIENDO SI EL RESULTADO DE LA RESTA ES POSITIVO O NEGATIVO, A LOS BITS DE LA PARTE ALTA SE
MOVWF RESL ;LE RESTARAN 0X27 Ó 0X28
MOVLW 0X03
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NOUNMIL
INCF UNIMIL,F
GOTO FINCOMP
ALTER2
MOVWF RESL
MOVLW 0X04
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NOUNMIL
INCF UNIMIL,F
GOTO FINCOMP
NOUNMIL
MOVLW 0X64
SUBWF NUML,W
BTFSS STATUS,C
GOTO ALTER3 ;DEPENDIENDO SI EL RESULTADO DE LA RESTA ES POSITIVO O NEGATIVO, A LOS BITS DE LA PARTE ALTA SE
MOVWF RESL ;LE RESTARAN 0X27 Ó 0X28
MOVLW 0X00
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NOCIEN
INCF CEN,F
GOTO FINCOMP
ALTER3
MOVWF RESL
MOVLW 0X01
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NOCIEN
INCF CEN,F
GOTO FINCOMP
NOCIEN
MOVLW 0X0A
SUBWF NUML,W
BTFSS STATUS,C
GOTO ALTER4 ;DEPENDIENDO SI EL RESULTADO DE LA RESTA ES POSITIVO O NEGATIVO, A LOS BITS DE LA PARTE ALTA SE
MOVWF RESL ;LE RESTARAN 0X27 Ó 0X28
MOVLW 0X00
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NODIEZ
INCF DECI,F
GOTO FINCOMP
ALTER4
MOVWF RESL
MOVLW 0X01
SUBWF NUMH,W
BTFSS STATUS,C
GOTO NODIEZ
INCF DECI,F
GOTO FINCOMP
NODIEZ
MOVLW 0X01
SUBWF NUML,W
BTFSS STATUS,C
GOTO ALTER5 ;DEPENDIENDO SI EL RESULTADO DE LA RESTA ES POSITIVO O NEGATIVO, A LOS BITS DE LA PARTE ALTA SE
MOVWF RESL ;LE RESTARAN 0X27 Ó 0X28
MOVLW 0X00
SUBWF NUMH,W
BTFSS STATUS,C
RETURN
INCF UNI,F
GOTO FINCOMP
ALTER5
MOVWF RESL
MOVLW 0X01
SUBWF NUMH,W
BTFSS STATUS,C
RETURN
INCF UNI,F
GOTO FINCOMP
FINCOMP
MOVWF RESH
MOVWF NUMH
MOVF RESL,W
MOVWF NUML
GOTO BINBCD
******************************************************************