sensor de temperatura con pic 16f877

hola¡
el inconveniente que tengo es que no logro que me visualize la temperatura en el lcd, lo que quiero hacer es que al mover el potenciometro me cambie la temperatura y no sucede eso,
nose que hacer, les agradeceria que me ayudaran.

Código:
	LIST	P=16F877
	INCLUDE	"P16F877.INC"
;********************************************************	
 CBLOCK 20H
 DATO
 REG2
 REG1
 REG0
 D1
 D2
 ENDC	
;********************************************************	
	ORG	00H
 	GOTO	INICIO
	ORG	05H
;***********retardo de conversion*************************	
_20uS	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	RETURN
;*****************RETARDO DEL LCD************************

;***********INICIALIZACION DE REGISTROS******************	
INI_REG	CLRF	DATO
	CLRF	REG2
	CLRF	REG1
	CLRF	REG0
;***********conversion analogo digital*******************
CONVERSION	CLRF	ADRESH
	BSF        ADCON0,2
	BTFSC	ADCON0,2
	GOTO	$-1
	MOVF	ADRESH,W
	MOVWF	DATO
	CALL	_20uS
	RETURN
;***************SUBRUTINA COMANDO DEL LCD*******************
COMANDO	BCF	PORTE,0
	BCF	PORTE,1
	BCF	PORTE,2
	
	MOVWF	PORTD
	BSF	PORTE,0
	
	CALL	DELAY
	BCF	PORTE,0
	RETURN
;*****************CONFIGURACION DEL LCD*********************
CONF_LCD	
	MOVLW	B'00000001'
	CALL	COMANDO
	MOVLW	B'00001100'
	CALL	COMANDO
	MOVLW	B'00111100'
	CALL	COMANDO
	RETURN
;***********DIVISION DE REGISTROS***************************

DIV_REG	MOVLW	.100	;W=100
	SUBWF	DATO,W	;DATO-W(DATO-10)
	BTFSS	STATUS,C	;PREGUNTAR SI C=1,(DATO>W)
	GOTO	DECENAS	;NO LO ES,IR A DECENAS
CENTENAS	
	MOVLW	.100	;SI LO ES.W=100
	SUBWF	DATO,W	;DATO-W(DATO-10)
	MOVWF	DATO	;GUARDAR RESUALTADO EN EL REGISTRO DATO
	INCF	REG2	;INCREMENTA REG2
	MOVLW	.100	;W=100
	SUBWF	DATO,W	;DATO-W(DATO-10)
	BTFSC	STATUS,C	;PREGUNTAR SI C=0,(DATO<W)
	GOTO	CENTENAS	
DECENAS	
	MOVLW	.10	;W=10
	SUBWF	DATO,W	;DATO-W(DATO-10)
	BTFSS	STATUS,C	;PREGUNTAR SI C=1,(DATO>W)
	GOTO	UNIDADES	;NO LO ES,IR A UNIDADES			
	MOVLW	.10	;SI LO ES,W=10
	SUBWF	DATO,W	;DATO-W(DATO-10)
	MOVWF	DATO	;GUARDAR RESUALTADO EN EL REGISTRO DATO
	INCF	REG1	;INCREMENTAR REG1	
	MOVLW	.10	;W=10
	SUBWF	DATO,W	;DATO-W(DATO-10)
	BTFSC	STATUS,C	;PREGUNTAR SI C=0,(DATO<W)
	GOTO	DECENAS	;NO LO ES, IR A DECENAS
UNIDADES	
	MOVF	DATO,W	;SI LO ES, MOVER DATO A W
	MOVWF	REG0	;MOVER W A REG0
	CLRF	DATO	;BORRAR DATO
	RETURN
;************************SUBRUTINA LCD************************
LCD	
	BCF	PORTE,0
	BCF	PORTE,1
	BSF	PORTE,2
	MOVWF	PORTD
	BSF	PORTE,0
	CALL	DELAY
	BCF	PORTE,0
	RETURN
;********************SUBRUTINA VISUALIZAR*********************
VISUALIZAR	
	MOVLW	B'10000011'
	CALL	COMANDO
	MOVLW	"T"
	CALL	LCD
	MOVLW	"E"
	CALL	LCD
	MOVLW	"M"
	CALL	LCD
	MOVLW	"P"
	CALL	LCD
	MOVLW	"E"
	CALL	LCD
	MOVLW	"R"
	CALL	LCD
	MOVLW	"A"
	CALL	LCD
	MOVLW	"T"
	CALL	LCD
	MOVLW	"U"
	CALL	LCD
	MOVLW	"R"
	CALL	LCD
	MOVLW	"A"
	CALL	LCD
	
	MOVLW	B'11000110'
	CALL	COMANDO
	MOVLW	H'30'
	ADDWF	REG2,W
	CALL	LCD
	MOVLW	H'30'
	ADDWF	REG1,W
	CALL	LCD
	MOVLW	H'30'
	ADDWF	REG0,W
	CALL	LCD
	MOVLW	H'DF'
	CALL	LCD
	MOVLW	"C"
	CALL	LCD
		
;******************configuracion de puertos*******************	

INICIO	CLRF	PORTB
 	CLRF	PORTC
 	CLRF	PORTD
 	BSF	STATUS,5
 	CLRF	TRISB
 	MOVLW	B'11111000'
 	MOVWF	TRISC
 	CLRF	TRISD
 	MOVLW	B'00000011'
 	MOVWF	ADCON1
 	BCF	STATUS,5
 	MOVLW	B'01000001'
 	MOVWF	ADCON0
 	CALL	CONF_LCD
 	
;************programa principal******************************	
CICLO	CALL	INI_REG	;LLAMAR SUBRUTINA INI_REG (INICIALIZACION DE REGISTROS)
	CALL	CONVERSION	;LLAMAR SUBRUTINA CONVERSION (A/D)
	CALL	DIV_REG	;LLAMAR SUBRUTINA DIV_REG(DIVISION DE REGISTRO
	CALL	VISUALIZAR	;LLAMAR SUBRUTINA VISUALIZAR
 	GOTO	CICLO
 	END
 

Adjuntos

  • Imagen1.jpg
    Imagen1.jpg
    95 KB · Visitas: 33
Última edición por un moderador:
Yo no te recomiendo para nada que uses el proteus para simular tus programas. Muchas veces el problema radica en el simulador y te indica que no anda un programa, cuando en la realidad funciona perfectamente.
Te recomiendo que armes el circuito que pretendes de forma física y ahí pruebes el funcionamiento del programa.
 
Atrás
Arriba