Hola que tal necesito hacer un programa con lcd y lm35 cuando la temperatura sea igual o menor a 14° diga dia nublado y cuando sea mayor a 18° diga dia soleado independiente a eso debe mostrar otros mensajes si pudieran orientarme seria de gran ayuda gracias
;********************************************* ;PIC:16F628A
;PROG:"LCD"
;FRECUENCIA DE RELOJ: 4MHz
;**********************************************************
__CONFIG 0X3F58
CBLOCK 0X020
NUM1
NUM2
NUM3
ENDC
STATUS EQU 0X03
PORTB EQU 0x06
PORTA EQU 0X05
TRISA EQU 0X85
TRISB EQU 0X86
CMCON EQU 0X1F
CBLOCK 0X020
NUM1
NUM2
NUM3
ENDC
#DEFINE RS PORTA,0
#DEFINE EN PORTA,1
LIMPIAR EQU B'00000001' ;LIMPIA TODA LA PANTALLA
RENGLON1 EQU B'10000000' ;COLOCA EN EL RENGLON 1
RENGLON2 EQU B'11000000' ;COLOCA EN EL RENGLON2
DISON EQU B'00001100' ;ENCIENDE EL DISPLAY
HOME EQU B'00000010' ;VA A LA DIRECCION 0
SHIFTDL EQU B'00011100' ;ROTA EL LCD A LA IZQUIERDA
SHIFTDR EQU B'00011000' ;ROTA EL LCD A LA DERECHA
SHIFTCL EQU B'00010100' ;ROTA EL CURSOR A LA IZQUIERDA
SHIFTCR EQU B'00010000' ;ROTA EL CURSOR A LA DERECHA
PORTLCD EQU PORTB
;ORIGEN DEL PROGRAMA
ORG 0X00
;CONFIGURACION DE PUERTOS----------------------------------------------------------
CONFI
MOVLW 0X07
MOVWF 0X1F
BSF STATUS,5
CLRF TRISB
BCF RS
BCF EN
BCF TRISA,7
BCF TRISA,5
BSF TRISA,3
BCF STATUS,5
;PROGRAMA PRINCIPAL----------------------------------------------------------------
BSF PORTA,7
CALL RETARDO1
CALL INILCD
START
MOVLW LIMPIAR
CALL CMD
MOVLW HOME
CALL CMD
MOVLW RENGLON1
CALL CMD
BTFSS PORTA,3
GOTO START
GOTO MENSAJE
GOTO MENSAJE
MENSAJE
MOVLW "E"
CALL DATO
CALL RETARDO1
MOVLW "X"
CALL DATO
CALL RETARDO1
MOVLW "I"
CALL DATO
CALL RETARDO1
MOVLW "T"
CALL DATO
CALL RETARDO1
MOVLW "O"
CALL DATO
CALL RETARDO1
;CAMBIO DE RENGLON
MOVLW RENGLON2
CALL CMD
CALL RETARDO1
MOVLW "M"
CALL DATO
CALL RETARDO1
MOVLW "I"
CALL DATO
CALL RETARDO1
MOVLW "C"
CALL DATO
CALL RETARDO1
MOVLW "R"
CALL DATO
CALL RETARDO1
MOVLW "O"
CALL DATO
CALL RETARDO1
MOVLW "E"
CALL DATO
CALL RETARDO1
MOVLW "L"
CALL DATO
CALL RETARDO1
MOVLW "E"
CALL DATO
CALL RETARDO1
MOVLW "C"
CALL DATO
CALL RETARDO1
MOVLW "T"
CALL DATO
CALL RETARDO1
MOVLW "R"
CALL DATO
CALL RETARDO1
MOVLW "O"
CALL DATO
CALL RETARDO1
MOVLW "N"
CALL DATO
CALL RETARDO1
MOVLW "I"
CALL DATO
CALL RETARDO1
MOVLW "C"
CALL DATO
CALL RETARDO1
MOVLW "A"
CALL DATO
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL RETARDO1
CALL LIMPIAR
CLRF PORTB
MOVLW RENGLON1
CALL CMD
CALL RETARDO
MENSAJITO2
MOVLW "L"
CALL DATO
CALL RETARDO1
MOVLW "I"
CALL DATO
CALL RETARDO1
MOVLW "Z"
CALL DATO
CALL RETARDO1
MOVLW " "
CALL DATO
CALL RETARDO1
MOVLW "V"
CALL DATO
CALL RETARDO1
MOVLW "I"
CALL DATO
CALL RETARDO1
MOVLW "C"
CALL DATO
CALL RETARDO1
MOVLW "T"
CALL DATO
CALL RETARDO1
MOVLW "O"
CALL DATO
CALL RETARDO1
MOVLW "R"
CALL DATO
CALL RETARDO1
MOVLW " "
CALL DATO
CALL RETARDO1
MOVLW "S"
CALL DATO
CALL RETARDO1
MOVLW "A"
CALL DATO
CALL RETARDO1
MOVLW "M"
CALL DATO
CALL RETARDO1
MOVLW "A"
CALL DATO
CALL RETARDO1
MOVLW " "
CALL DATO
CALL RETARDO1
MOVLW RENGLON2
CALL CMD
CALL RETARDO1
MOVLW "V"
CALL DATO
CALL RETARDO1
MOVLW "E"
CALL DATO
CALL RETARDO1
MOVLW "R"
CALL DATO
CALL RETARDO1
MOVLW "O"
CALL DATO
CALL RETARDO1
;--------------------------------------------------------------------------------
GOTO START
;SUBRUTINAS-------------------------------------------------------------------------
DATO
MOVWF PORTLCD
BSF RS
NOP
NOP
NOP
BSF EN
CALL RETARDO
BCF EN
RETURN
;*********************************************************
CMD
MOVWF PORTLCD
BCF RS
NOP
NOP
NOP
BSF EN
CALL RETARDO
BCF EN
RETURN
;I N I C I A L I Z A C I O N L C D------------------------------------------------
INILCD
MOVLW B'00110000' ;1
CALL CMD
MOVLW B'00110000' ;2
CALL CMD
MOVLW B'00110000' ;3
CALL CMD
MOVLW B'00111100' ;4 ;N(BIT3)=1(2LINEAS),0(1LINEA): F(BIT2)=1(5X10),0(5X7)
CALL CMD ;LOS PRIMEROS DOS BITS NO IMPORTAN
MOVLW B'00001000' ;5
CALL CMD
MOVLW B'00000001' ;6
CALL CMD
MOVLW B'00000110' ;7 ;S(BIT0)=0(NOT SHIFTED),1(SHIFTED)
CALL CMD ;I/D(BIT1)=0(DECREMENTAL),1(INCREMENTAL)
;DONDE EL LCD TIENE SU DIRECCION 0 EN EL EXTREMO IZQUIERDO
MOVLW DISON ;8
CALL CMD
MOVLW HOME
CALL CMD
MOVLW LIMPIAR
CALL CMD
RETURN
;----------------------------------------------------------------------------
RETARDO ;RETURN ;RETARDO QUE DURA 5 MILISEGUNDOS
MOVLW D'1'
MOVWF NUM3
WAIT3
MOVLW D'10'
MOVWF NUM2
WAIT2
MOVLW D'166'
MOVWF NUM1
WAIT
DECFSZ NUM1,1
GOTO WAIT
DECFSZ NUM2,1
GOTO WAIT2
DECFSZ NUM3,1
GOTO WAIT3
RETURN
;-------------------------------------
RETARDO1 ;RETURN ;RETARDO QUE DURA 1.64 MILISEGUNDOS
MOVLW D'3'
MOVWF NUM3
WAIT6
MOVLW D'200'
MOVWF NUM2
WAIT5
MOVLW D'166'
MOVWF NUM1
WAIT4
DECFSZ NUM1,1
GOTO WAIT4
DECFSZ NUM2,1
GOTO WAIT5
DECFSZ NUM3,1
GOTO WAIT6
RETURN
;FIN DEL PROGRAMA
END