conversion analogo digital con lm35
espero que te sirva y
LIST P=16F873A
#INCLUDE<P16F873A.INC>
;DECLARACION DE VARIABLES
;CONVERSOR ANALOGO DIGITAL DE CUATRO DIGITOS
;FARENTHEIT
TIMER0 EQU 01
PCL EQU 02
STATUS EQU 03
PORTA EQU 05
PORTB EQU 06
ADCON0 EQU 1F
ADCON1 EQU 9F
ADRESL EQU 9E
ADRESH EQU 1E
INTCON EQU 0B
AVE_LOW EQU 20
AVE_HIG EQU 21
JAI_LOW EQU 22
JAI_HIG EQU 23
COS_LOW EQU 24
COS_HIG EQU 25
SUC_LOW EQU 26
SUC_HIG EQU 27
REG1 EQU 28
REG2 EQU 29
REG3 EQU 2A
COVEÑAS EQU 2B
VALLEN EQU 2C
UNO EQU 2D
DOS EQU 2E
CERO EQU 2F
UNI_GRADOS EQU 30
DEC_GRADOS EQU 31
CENT_GRADOS EQU 32
COCIENTE EQU 39
COLOMB EQU 3A
RESULTADO EQU 3B
RFARE_L EQU 3C
RFARE_H EQU 3D
RESULT_L EQU 3E
RESULT_H EQU 3F
CENTENAS EQU 40
DECENAS EQU 41
UNIDAD EQU 42
CONTA EQU 43
MENS EQU 44
;BITS CONVERSOR
ADIF EQU 6
GODONE EQU 2
ADON EQU 0
ADFM EQU 7
C EQU 0
;BITS LCD
RS EQU 1
E EQU 2
ORG 00
GOTO INICIO
TEMPO MOVLW .80
MOVWF REG1
DEC6 MOVLW .21
MOVWF REG2
DEC5 MOVLW .20
MOVWF REG3
DEC4 DECFSZ REG3,1
GOTO DEC4
DECFSZ REG2,1
GOTO DEC5
DECFSZ REG1,1
GOTO DEC6
RETURN
DATOS
BSF PORTA,RS
BSF PORTA,E
MOVWF PORTB
CALL RETARDO
BCF PORTA,E
CALL RETARDO
RETURN
RETARDO
MOVLW .40
MOVWF REG1
DEC3 MOVLW .30
MOVWF REG2
DEC2 MOVLW .20
MOVWF REG3
DEC1 DECFSZ REG3,1
GOTO DEC1
DECFSZ REG2,1
GOTO DEC2
DECFSZ REG1,1
GOTO DEC3
RETURN
INSTRUC
BCF PORTA,RS ;COLOCA EN CERO RAO
BSF PORTA,E
MOVWF PORTB
CALL RETARDO
BCF PORTA,E
CALL RETARDO
RETURN
TABLA ADDWF PCL,1
RETLW "0"
RETLW "1"
RETLW "2"
RETLW "3"
RETLW "4"
RETLW "5"
RETLW "6"
RETLW "7"
RETLW "8"
RETLW "9"
TABLA1 ADDWF PCL,1
RETLW "T"
RETLW "E"
RETLW "M"
RETLW "P"
RETLW "E"
RETLW "R"
RETLW "A"
RETLW "T"
RETLW "U"
RETLW "R"
RETLW "A"
RETLW "C"
RETLW "L"
RETLW "A"
RETLW "S"
RETLW "E"
RETLW " "
RETLW "D"
RETLW "I"
RETLW "G"
RETLW "I"
RETLW "T"
RETLW "A"
RETLW "L"
RETLW " "
RETLW "0"
RETLW "5"
RETARD MOVLW .100
MOVWF REG1
nop
nop
nop
nop
DEC9 DECFSZ REG1,1
GOTO DEC9
RETURN
INICIO
BSF STATUS,5
BCF STATUS,6
CLRF PORTB
MOVLW B"00000001"
MOVWF PORTA
BCF STATUS,5
LCDINI MOVLW B"00111000" ;INTERFACE DE 8BITS 2 LINEAS
CALL INSTRUC
MOVLW B"00000110" ;DIRECCION A LA DERECHA
CALL INSTRUC
MOVLW B"00001101" ;PRENDE PANTALLA
CALL INSTRUC
MOVLW B"00000001" ;LIMPIA PANTALLA
CALL INSTRUC
LCD MOVLW B"10000000" ;EL PUNTERO SE UBICA EN LA PRIMERA
LINEA
CALL INSTRUC
CLRF MENS
RE MOVF MENS,0
CALL TABLA1
CALL DATOS
INCF MENS,1
MOVF MENS,0
XORLW .11
BTFSS STATUS,2
GOTO RE
MOVLW B"11000000"
CALL INSTRUC
RESS MOVF MENS,0
CALL TABLA1
CALL DATOS
INCF MENS,1
MOVF MENS,0
XORLW .27
BTFSS STATUS,2
GOTO RESS
BSF STATUS,5
COROSO CALL CONVERSIONANALOGODIGITAL
CALL MULTIPLICACION
CALL B2BCD
CALL VISUALIZACION
GOTO COROSO
CONVERSIONANALOGODIGITAL
BSF STATUS,5
MOVLW B"10001110" ;RA0 ANALOGO JUSTIFICACION LOS OCHO PRIMEROS BITS
DE ADRESL Y DOS BITS DE ADRESH
MOVWF ADCON1
BCF STATUS,5
EEE MOVLW B"10000001"
MOVWF ADCON0
CALL RETARD
BCF PIR1,ADIF
BSF ADCON0,GODONE
CALL RETARD
EL BTFSS PIR1,ADIF
GOTO EL
BSF STATUS,5
MOVF ADRESL,0 ;LOW PARTE
BCF STATUS,5
MOVWF JAI_LOW
MOVF ADRESH,0 ;HIG PARTE
MOVWF JAI_HIG ;RA1 Y RA2 ADRESH
MOVLW .232
MOVWF AVE_LOW
MOVLW .1
MOVWF AVE_HIG
CLRF UNI_GRADOS
CLRF DEC_GRADOS
CLRF CENT_GRADOS
RETURN
MULTIPLICACION ;RUTINA MULTIPLICACION ENTRE DOS NUMEROS DE 16 BITS
MOVLW .16 ;LOS NUMEROS SON AVE Y JAI .EL RESULTADO QUEDA EN COS Y SUC
.
MOVWF COVEÑAS ;JAI PIERDE EL NUMERO QUE TRAIA Y AVE QUEDA INTACTO.
CLRF SUC_HIG
CLRF SUC_LOW
CLRF COS_HIG
CLRF COS_LOW
MAR RRF JAI_HIG,1
RRF JAI_LOW,1
BTFSC STATUS,0
CALL SUMA
RRF COS_HIG,1
RRF COS_LOW,1
RRF SUC_HIG,1
RRF SUC_LOW,1
DECFSZ COVEÑAS,1
GOTO MAR
RETURN
SUMA MOVF AVE_LOW,0
ADDWF COS_LOW,1
BTFSC STATUS,0
INCF COS_HIG,1
MOVF AVE_HIG,0
ADDWF COS_HIG,1
RETURN
B2BCD BCF STATUS,0
MOVLW D"24"
MOVWF VALLEN
CLRF CERO
CLRF UNO
CLRF DOS
OP16 RLF SUC_LOW,1
RLF SUC_HIG,1
RLF COS_LOW,1
RLF DOS,1
RLF UNO,1
RLF CERO,1
DECFSZ VALLEN,1
GOTO A_DEC
RETURN
A_DEC MOVLW DOS
MOVWF FSR
CALL A_BCD
MOVLW UNO
MOVWF FSR
CALL A_BCD
MOVLW CERO
MOVWF FSR
CALL A_BCD
GOTO OP16 ;.............
A_BCD MOVLW .3
ADDWF INDF,0
MOVWF COVEÑAS
BTFSC COVEÑAS,3
MOVWF INDF
MOVLW 30
ADDWF INDF,0
MOVWF COVEÑAS
BTFSC COVEÑAS,7
MOVWF INDF
RETURN
VISUALIZACION
BCF STATUS,5
BCF STATUS,6
SWAPF CERO,W
ANDLW 0F
MOVWF CENT_GRADOS
MOVF CERO,0
ANDLW 0F
MOVWF DEC_GRADOS
SWAPF UNO,W
ANDLW 0F
MOVWF UNI_GRADOS
MOVLW B"10001100"
CALL INSTRUC
MOVLW B"00001100" ;DESACTIVO EL CURSOR
CALL INSTRUC
MOVF CENT_GRADOS,0
CALL TABLA
CALL DATOS
MOVF DEC_GRADOS,0
CALL TABLA
CALL DATOS
MOVF UNI_GRADOS,0
CALL TABLA
CALL DATOS
RETURN
END