Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;*--- Pines donde ira conectado el LCD ---*
- DEFINE LCD_DREG PORTB
- DEFINE LCD_DBIT 0
- DEFINE LCD_RSREG PORTB
- DEFINE LCD_RSBIT 4
- DEFINE LCD_EREG PORTB
- DEFINE LCD_EBIT 5
- ;*-------------------------------------------------*
- ;*---Parámetros conversor Analógico/Digital---*
- DEFINE ADC_BITS 10 ;Fijar número de BITS del resultado (5,8,10)
- DEFINE ADC_CLOCK 3 ;Fijar EL CLOCK (rc = 3)
- DEFINE ADC_SAMPLEUS 50 ;Fijar el tiempo de muestreo en Us
- ;ADC_SAMPLEUS es el número de micro segundos que el programa espera
- ;entre fijar el canal y comenzar la conversión analógica/digital.
- ;*------------------------------------------------------*
- TRISA =%1 ;el puerto A.0 es de entrada
- ADCON1 = %00001110 ;el puerto A.0 es conversor los demás son Digitales
- TRISD = %11100000
- dato VAR WORD ;crear variable dato para guardar el valor de la temperatura actual
- tempMin VAR BYTE; Variable para almacenar la temperatura mínima programada
- tempMax VAR BYTE; Variable para almacenar la temperatura máxima programada
- x VAR BYTE; Variable para hacer una pausa utilizando un ciclo for
- g CON 223 ;g constante 223. Este es el ASCII de grados
- calf VAR portD.3 ;nombres para los pines
- vent VAR portD.4
- enter VAR portD.5
- botonBajar VAR portD.6
- botonSubir VAR portD.7
- EEPROM 0,[18,25] ;contenido inicial de la EEPROM. Temperatura inicial que se muestra en el LCD
- inicio:´
- READ 0,tempMin ;lee dirección 0 de la memoria EEPROM y lo guarda en tempMin
- READ 1,tempMax ;lee dirección 1 de la memoria EEPROM y lo guarda en tempMax
- sensar:
- ADCIN 0, dato ;leer el canal 0 (A0) y guarde en dato
- LCDOUT $fe, 1,$fe, 2, "T.MIN T.ACT T.MAX" ;limpiar LCD y sacar texto
- dato = dato /128 ; el dato dividir para 128= C/AD de 9 bits
- LCDOUT $fe,$c6,DEC dato,g,"C" ;Display el decimal de dato(Temp Actual)
- LCDOUT $fe,$c0,DEC tempMin,g,"C" ;Display el decimal de tempMin
- LCDOUT $fe,$cc,DEC tempMax,g,"C" ;Display el decimal de tempMax
- FOR X = 0 TO 100 ;Pausa: Esta pausa es para evitar cambios bruscos de la Temp Actual
- If enter = 1 Then grabar1a; al presionar el pulsador selec nos vamos a la subrutina grabarla.
- PAUSE 15
- Next
- IF dato < tempMin THEN calentar ;si dato es<tempMin ir a calentar
- IF dato > tempMax THEN enfriar ;si dato es>tempMax ir a enfriar
- LOW calf : LOW vent ;apagar los 2 relés
- GOTO sensar ;continuar sensando
- calentar:
- HIGH calf : LOW vent; Encendemos el calefactor
- GoTo sensar
- enfriar:
- HIGH vent: LOW calf; Encendemos el ventilador
- GoTo sensar
- grabar1a:
- GOSUB soltar; ;programa anti rebote de tecla
- grabar1:
- ; Aquí vamos a programar la temperatura Mínima
- LCDOUT $fe, 1, $fe, 2, "PROGRAMAR TEMP:"
- LCDOUT $fe,$c0,"Minima = ",DEC tempMin ,g,"C"
- PAUSE 100
- IF botonBajar=1 THEN restar1; Si presionamos el pulsador (-) nos vamos a restar
- IF botonSubir=1 THEN sumar1; Si presionamos el pulsador (+) nos vamos a sumar
- If enter = 1 Then grabarA
- GoTo grabar1
- restar1:
- GOSUB soltar ;programa antirrebote de tecla
- IF tempMin < 9 THEN grabar1 ; Limite mínimo para la temperatura mínima
- tempMin= tempMin -1 ; Restamos el valor de temMin
- GoTo grabar1
- sumar1:
- GoSub soltar
- IF tempMin > 18 THEN grabar1 ; Limite máximo para la temperatura mínima
- tempMin= tempMin + 1 ; Sumamos el valor de temMin
- GoTo grabar1
- grabarA:
- GoSub soltar
- ; Grabamos el valor de la temperatura mínima programada, en la memoria EEPROM
- WRITE 0,tempMin ;escribir en la dirección 0 de la EEPROM
- grabar2:
- ; Aquí vamos a programar la temperatura Maxima
- LCDOUT $fe, 1, $fe, 2, "PROGRAMAR TEMP:"
- LCDOUT $fe,$c0,"Maxima = ",dec tempMax ,g,"C"
- PAUSE 100
- If botonBajar = 1 Then restar2
- If botonSubir = 1 Then sumar2
- If enter = 1 Then grabarB
- GoTo grabar2
- restar2:
- GoSub soltar
- IF tempMax < 24 THEN grabar2 ; Limite mínimo para la temperatura máxima
- tempMax = tempMax - 1
- GoTo grabar2
- sumar2:
- GoSub soltar
- IF tempMax > 40 THEN grabar2 ; Limite máximo para la temperatura máxima
- tempMax = tempMax + 1
- GoTo grabar2
- grabarB:
- GoSub soltar
- ; Grabamos el valor de la temperatura mínima programada en la memoria EEPROM
- WRITE 1,tempMax;escribir en la dirección 1 de la EEPROM
- GoTo inicio
- soltar: ;programa anti rebote de tecla
- If botonBajar = 1 Then soltar
- If botonSubir = 1 Then soltar
- If enter = 1 Then soltar
- PAUSE 100
- Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement