Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PORTB DEFINE LCD_EBIT 4 DEFINE ADC_BITS 10 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 ;ADC_SAMPLEUS Exige utilizar cristal externo XT de 4MHz Define pines del LCD B0 a B3 Empezando desde el Puerto B0 hasta el B3 Define el puerto B para conectar el bit RS en el puerto B.5 Define el puerto B para conectar el bit Enable puerto B.4 Fije nmero de BITS del resultado (5,8,10) Fije EL CLOCK (rc = 3) Fije el tiempo de muestreo en Us Es el nmero de microsegundos que el programa espera entre fijar el canal y comenzar la conversin analgica/digital. El puerto A.0 es de entrada El puerto A.0 es conversor los dems son digitales Crear variable dato para guardar Crear variable dato1 para guardar Crear variable dato2 para guardar Crear variable dato1dec para guardar Crear variable deci para guardar Crea una variable "tembaj" y asigna un tamao de 8 bits es decir de 0 a 255 Crea una variable "tempalt" y asigna un tamao de 8 bits es decir de 0 a 255 Crea una variable "x" y asigna un tamao de 8 bits es decir de 0 a 255 g constante 223 este es el ASCII de grados nombres para los pines
TRISA =%1 ADCON1 = %00001110 dato VAR WORD dato1 var word dato2 var word dato1dec var word deci var word tempbaj VAR BYTE tempalt VAR BYTE x VAR BYTE g CON 223 led VAR portD.1 optoF VAR portD.2 optoC VAR portD.3 conversor var portD.4 bbajar VAR portD.5 enter VAR portD.7 bsubir VAR portD.6 EEPROM 0,[15,24]
intro: LCDOUT $fe, 1, "Cargando" pause 400 LCDOUT $fe, 1, "Cargando." pause 400 LCDOUT $fe, 1, "Cargando.." pause 400 LCDOUT $fe, 1, "Cargando..." pause 400 LCDOUT $fe, 1, "Cargando." pause 400 LCDOUT $fe, 1, "Cargando.." pause 400 LCDOUT $fe, 1, "Cargando..." pause 400 goto inicio inicio: FOR x =1 TO 3 HIGH led PAUSE 200 LOW led PAUSE 200 NEXT READ 0,tempbaj READ 1,tempalt sensar: ADCIN 0, dato ; LCDOUT $fe, 1, "T.mi T.actu T.ma" dato = dato /128 ; LCDOUT $fe,$c6,DEC dato,g,"C" LCDOUT $fe,$c0,DEC tempbaj,g,"C" LCDOUT $fe,$cc,DEC tempalt,g,"C" FOR x = 1 TO 50 IF enter =0 THEN grabar1a if conversor=0 then transformacion PAUSE 10 NEXT IF dato < tempbaj THEN calentar IF dato > tempalt THEN enfriar LOW optoC : LOW optoF
leer el canal 0 (A0) y guarde en dato limpiar LCD y sacar texto el dato dividir para 128= C/AD de 9 bits Display el decimal de dato Display el decimal de tempbaj Display el decimal de tempalt repetir 50 veces si enter =0, ir a grabar1a si conversor =0, ir a transformacion
si dato es < tempbaj, ir a calentar si dato es < tempalt, ir a enfriar apagar los 2 opto-triac
GOTO sensar calentar: HIGH optoC : LOW optoF GOTO sensar enfriar: HIGH optoF : LOW optoC GOTO sensar transformacion: LCDOUT $fe, 1, "Convitiendo." pause 200 ; LCDOUT $fe, 1, "Convitiendo.." pause 200 LCDOUT $fe, 1, "Convitiendo..." pause 200 transformacion2: ADCIN 0, dato ADCIN 0, dato1 dato = dato /128 dato1= ((dato*9)/5)+32 dato1dec = ((dato*9)//5) deci= (dato1dec*10)/5 dato2= ((dato2/128)+273) LCDOUT $fe, 1, "Conversion en:" LCDOUT $fe,$c0,DEC dato,g,"C" LCDOUT $fe,$c5,#dato1,".",#deci,g,"F" LCDOUT $fe,$cc,DEC dato2, "K" FOR x = 1 TO 50 IF CONVERSOR =0 THEN soltarG PAUSE 10 NEXT goto transformacion2 soltarG: gosub soltar soltarF: FOR x =1 TO 2 HIGH led PAUSE 200 LOW led
continuar sensando
leer el canal 0 (A0) y guardarlo en dato leer el canal 0 (A0) y guardarlo en dato1 el dato dividir para 128= C/AD de 9 bits conversin a Fahrenheit extraccin del decimal conversion a KELVIN Display el decimal de dato Display el valor numrico de dato1 y deci Display el decimal de datp2 repetir 50 veces si conversor =0, ir a soltarG pausa de 10 milisegundos siguiente repeticin hasta que sea x = 50 ir a transformacion2
PAUSE 200 NEXT goto sensar grabar1a: GOSUB soltar grabar1: LCDOUT $fe, 1, "Programar temp." LCDOUT $fe,$c0,"baja= ",DEC tempbaj ,g,"C" PAUSE 100 IF bbajar=0 THEN restar1 IF bsubir=0 THEN sumar1 IF enter=0 THEN grabarA GOTO grabar1 restar1: GOSUB soltar 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 grabar2: LCDOUT $fe, 1, "Programar temp." ; LCDOUT $fe,$c0,"alta= ",dec tempalt ,g,"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
pausa de 200 milisegundos siguiente repeticin hasta que sea x = 2 continuar sensando
limpiar LCD y sacar texto limpiar LCD y sacar texto pausa de 100 milisegundos ir a restar1 si bbajar es 0 lgico ir a sumar1 si bsubir es 0 lgico ir a grabar1A si enter es 0 lgico ir a grabar1
limpiar LCD y sacar texto limpiar LCD y sacar texto pausa 100 milisegundos ir a restar2 si bbajar es 0 lgico ir a sumar2 si bsubir es 0 lgico ir a grabarB si enter es 0 lgico ir a grabar2
GOTO grabar2 sumar2: GOSUB soltar IF tempalt > 50 THEN grabar2 tempalt= tempalt + 1 GOTO grabar2 grabarB: GOSUB soltar WRITE 1,tempalt GOTO inicio soltar: HIGH led PAUSE 150 LOW led soltar2: IF bbajar=0 THEN soltar2 IF bsubir=0 THEN soltar2 IF enter=0 THEN soltar2 if conversor=0 then soltar2 PAUSE 100 RETURN END
ir a grabar2
programa anti rebote de tecla escribir en la direccin 1 de la EEPROM ir a grabar2 programa anti rebote de tecla encender led pausa de 150 milisegundos apagar led
ir a soltar 2 si bbajar es 0 lgico ir a soltar 2 si bsubir es 0 lgico ir a soltar 2 si enter es 0 lgico ir a soltar 2 si conversor es 0 lgico pausa de 100 milisegundos regresar al GOSUB que lo llam fin del programa