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.
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
Última edición por un moderador: