TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: joliva68 en 23 de Abril de 2010, 17:04:42
-
Hola amigos:
Imaginemos un lm35 marcando la temperatura en ascenso y cuando deje de subir pare el programa o realice un evento como encender un led he probado esto y como que no, me marca bien la temperatura en lcd pero de encender el led nada de nada. De antemano Gracias.
INCLUDE "modedefs.bas"
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 2
DEFINE OSC 4
; PARÁMETROS DEL ADC
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
; VARIABLES
RES VAR WORD
VAL var word
led var portb.3
bajo var word
TEMP1 VAR byte 'variable de 256
TRISA = 1 'puerto a como entrada
TRISB = 0 'puerto b como salida
PAUSE 500 ' creo 0,5 seg para el lcd esta bien
ADCON1 = %10001110
ADCON0 = %11000001
LCDOUT $FE, 1
INICIO:
; INICIAR CONVERSIÓN
ADCIN 0, RES ; LEER EL CANAL A
TEMP1 = 488 * RES ; 1024*488=499712;
VAL = div32 10
LCDOUT $FE,1,"TEMP = ",DEC VAL DIG 3,DEC VAL DIG 2,".",DEC VAL DIG 1, DEC VAL DIG 0,$DF,"C" ; MOSTRAR RESULTADO
PAUSE 500 ; PAUSA 0.5 SEGUNDOS
SEROUT PORTb.0,n2400,[#VAL]
Bajo = val
Pause 2000
If bajo < val then goto rojo
GOTO INICIO
rojo:
high led
pause 10000
low led
GOTO INICIO
END
-
lo que pasa es que como tienes el programa, al hacer la comparación entre " bajo" y "VAL" estos valores son siempre iguales. Deberías asignarle a "bajo" el valor de "VAL" antes de realizar la siguiente conversión.
-
lo que pasa es que como tienes el programa, al hacer la comparación entre " bajo" y "VAL" estos valores son siempre iguales. Deberías asignarle a "bajo" el valor de "VAL" antes de realizar la siguiente conversión.
Pablo muchisimas gracias efectivamente tenía que ponerlo antes de la conversión, ahora si que se funciona me guardaré en la cabeza esto para proximos proyectos.
Un saludo.