Autor Tema: Falla con sensor de temperatura  (Leído 2068 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jehh

  • PIC10
  • *
  • Mensajes: 2
Falla con sensor de temperatura
« en: 01 de Abril de 2013, 00:14:46 »
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
******************************************************************


Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Falla con sensor de temperatura
« Respuesta #1 en: 01 de Abril de 2013, 10:16:03 »
Tenes que decir que sensor es y cual es el problema. Ademas te aconsejo que trates de probar si el sensor funciona y te manda la temperatura, haciendo que la muestre por ejemplo en un display de 7 segmentos, una vez que funcione, pasas a la matriz.

Desconectado hector915

  • PIC12
  • **
  • Mensajes: 78
    • Blog Personal.
Re: Falla con sensor de temperatura
« Respuesta #2 en: 03 de Abril de 2013, 00:18:20 »
Saludos puedes poner por favor tu esquema,yo estoy aprendiendo comunicacion entre pics y me gustaria ver como realizar esto. Recientemente yo realize un proyecto de un sensor de temperatura pero solo un micro 16f877a y  sensor lm35 mostrando la temperatura en 2 displays de 7 segmentos,me gustaria intentarlo  8)
if you can imagine it, you can embed it

Desconectado jehh

  • PIC10
  • *
  • Mensajes: 2
Re: Falla con sensor de temperatura
« Respuesta #3 en: 03 de Abril de 2013, 01:04:45 »
El problema es que despues de realizar la conversión bcd e ir a la rutina de mostrar se queda estancado en Tabla 1 y de alli no lo saca nadie...el sensor que utilice fue un LM35, creo que el más comun para estos casos...Con respecto al diagrama, este es bastante sencillo, los dos pics se conectan entre sí a través de los piines SDA y SCL y a cada linea le colocas una resistencia de Pull Up con una pata a 5v..(te lo explico porque no consigo como colocar una imagen =P)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Falla con sensor de temperatura
« Respuesta #4 en: 03 de Abril de 2013, 15:01:19 »
Citar
se queda estancado en Tabla 1 y de alli no lo saca nadie

¿No has mirado en el MPLAB SIM que es lo que pasa? Seguramente se te desborda porque el valor que lleva cargado en W es muy alto, la tabla tiene 13 valores mas el RETURN si es mayor que ese valor se desborda e ira a tabla 2, 3 o 4 que estan a continuacion, pero si es mayor de 28 desbordara todas las tablas e ira a INICIO y asi estara constantemente, mira aqui que numero carga en W:

DECENA
         MOVF   VAR1,W
         MOVWF   B_NUM
         
         MOVF B_NUM,W
         CALL TABLA1

¿Puede ser que el valor a convertir en la tabla sea un nibble y no el Byte entero? Si es asi tendras que aplicar mascara sobre el nibble que no quieres leer, y si es el nibble alto lo tendras que pasar al bajo con un SWAPF.