DEFINE osc 4
DEFINE LCD_BITS 4
define LCD_DREG PORTB ;bit de datos del LCD empezando
define LCD_DBIT 0 ;por B.0. B.1, B.2, B.3
define LCD_RSREG PORTB ;bit de registro del LCD conectar
define LCD_RSBIT 5 ;en el puerto B.5
pause 2000
define LCD_EREG PORTB ;bit de enable conectar en el
define LCD_EBIT 4 ;puerto B.4
define ADC_BITS 8 ;Fije el número de BITS del resultado (5,8,10)
define ADC_CLOCK 3 ;Fije EL CLOCK (rc=3)
define ADC_SAMPLEUS 50 ;Fije el tiempo de muestreo en Us
;ADC_SAMPLEUS es el número de microsegundos que el programa
;espera entre fijar el canal y comenzar la conversión analógica/digital
TRISA= 1 ;el puerto A es de entrada
ADCON1= %00001110 ;el puerto A.0 es conversor los demás digitales
TRISB= 0 ;el puerto b es salida da datos
dato var word ;crear variable dato para guardar
tempbaj var byte
tempalt var byte
x var byte
releF var portD.2
releC var portD.3
led var portD.4
enter var portD.5
bsubir var portD.6
bbajar var portD.7
EEPROM 0,[20,26] ;contenido inicial de la EEPROM
[B]Symbol N2400 = 4[/B]
inicio: ;3 parpadeos del led que indica que funciona
for x =1 to 3
high led
pause 200
low led
pause 200
next
READ 0,tempbaj ;lee la EEPROM 0 y lo guarda en tempbaj
read 1,tempalt ;lee la EEPROM 1 y lo guarda en tempalt
sensar:
adcin 0, dato ;lee el canal 0(A0) y guarda en dato
serout PORTB.6, N2400, [dato] ;Envía los datos por RB0
LCDOUT $FE,1,"T.mi T.actu T.ma" ;limpia el LCD y muestra el texto
dato=dato/2 ;el dato dividir para 2
LCDout $FE,$c6,dec dato,"ºC" ;muestra el decimal de dato
LCDout $FE,$c0,dec tempbaj,"ºC" ;muestra el decimal de tempbaj
LCDout $FE,$cc,dec tempalt,"ºC" ;muestra el decimal de tempalt
for x =1 to 50 ;repetir 50 veces
if enter =0 then grabarla
pause 10
next
if dato<tempbaj then calentar ;si dato es <tempbaj ir a calentar
if dato>tempalt then enfriar ;si dato es >tempalt ir a enfriar
low relec: low releF
goto sensar
enfriar:
HIGH releF: low releC
goto sensar
calentar:
HIGH releC: low releF
goto sensar
grabarla:
gosub soltar
grabar1:
LCDOUT $fe, 1,"Programar Temp."
lcdout $fe,$c0,"baja=",dec tempbaj,"ºC"
pause 100
if bbajar =0 then restar1
if bsubir =0 then sumar1
if enter =0 then grabarA
goto grabar1
restar1:
gosub soltar ;programa antirebote de tecla
if tempbaj<1 then grabar1
tempbaj=tempbaj-1
goto grabar1
sumar1:
gosub soltar
if tempbaj>40 then grabar1
tempbaj=tempbaj+1
goto grabar1
grabarA:
gosub soltar
write 0,tempbaj ;escribir en la direcciom 0 de la EEPROM
grabar2:
LCDOUT $fe, 1,"Programar Temp."
LCDOUT $fe,$c0,"alta=",dec tempalt,"ºC"
pause 100
if bbajar= 0 then restar2
if bsubir= 0 then sumar2
if enter= 0 then grabarB
goto grabar2
restar2:
gosub soltar
if tempalt<5 then grabar2
tempalt=tempalt-1
goto grabar2
sumar2:
gosub soltar
if tempalt>50 then grabar2
tempalt=tempalt+1
goto grabar2
grabarB:
gosub soltar
write 1,tempalt ;escribir en la direccion 1 de la EEPROM
goto inicio
soltar ;antirebote de tecla
HIGH led
pause 150
low led
soltar2:
if bbajar= 0 then soltar2
if bsubir= 0 then soltar2
if enter= 0 then soltar2
pause 100
return
end