PROYECTOS » control de temperatura 

'****************************************************************

'*  Name    : UNTITLED.BAS                                      *

'*  Author  : [select VIEW...EDITOR OPTIONS]                    *

'*  Notice  : Copyright (c) 2022 [select VIEW...EDITOR OPTIONS] *

'*          : All Rights Reserved                               *

'*  Date    : 22/03/2022                                        *

'*  Version : 1.0                                               *

'*  Notes   :                                                   *

'*          :                                                   *

'****************************************************************

INCLUDE "MODEDEFS.BAS"

DEFINE  LCD_DREG        PORTD      'CONFIGURACION DE LCD

DEFINE  LCD_DBIT        4

DEFINE  LCD_RSREG       PORTD

DEFINE  LCD_RSBIT       0

DEFINE  LCD_EREG        PORTD

DEFINE  LCD_EBIT        1

TRISA = %00001111       ' PORTA.0 ... PORTA.4 ENTREDAS

TRISE = %00000011       ' PORTA B TODAS SALIDAS


'******DEFINICION DE ALIAS******

SALIDA VAR PORTC.0


'*****DEFINICION DE VARIABLES*****

T  VAR WORD : TL  VAR WORD : TH  VAR WORD

SP VAR WORD : SPL VAR WORD : SPH VAR WORD


'*****INICIO DE PROGRAMA******

INICIO:

        PAUSE 500               'ESPERA 0.5 SEG. PARA INICIAR LCD

        LCDOUT $FE, 1, " FACFYM - UNPRG " 'SALUDO INICIAL

        LCDOUT $FE,$C0,"CONTROL TEMP GE"  'SALUDO INICIAL

        PAUSE 1500              'ESPERA 1.5 SEG

        ADCON1 = $02            'SEL AN0...AN4 COMO ENTRADAS ANALOGICAS

        GOTO PRINCIPAL          'SALTO A SUBRUTINA PRINCIPAL

        END

        

'*****PROGRAMA PRINCIPAL*******

PRINCIPAL:

        GOSUB TEMPERATURA       'SALTO A SUBRUTINA TEMPERATURA

        GOSUB SETPOINT          'SALTO A SUBRUTINA SETPOINT

        GOSUB CONTROL           'SALTO A SUBRUTINA CONTROL

        LCDOUT $FE, 1, "SET POINT = ",DEC SP," C"    'VISUALIZA VALORES

        LCDOUT $FE,$C0,"TEMPERATURA = ",DEC T,"C"   'VISUALIZA VALORES

        PAUSE  250              'ESPERA 250 MILISEGUNDOS

        TOGGLE PORTB.7          'ALTERNA EL ESTADO DEL LED OPER

        GOTO PRINCIPAL          'SALTA A SUBRUTINA PRINCIPAL

        END

        

'*****SUBRUTINAS PARA LEER ADC****

TEMPERATURA:

        ADCON0 = $41   '$01000001: FOSC/8;ACTUIVA CANAL 0 ,JUST IZQU.

        GOSUB ESPERA   'SALTA A SUBRUTINA ESPERA

        TH=ADRESH*4    'DEZPLAZA EL REG ADRESH 2 BITS IZQUIERDA

        TL=ADRESL/64   'DESPLAZA EL REG ADRESL 6 BITS DERECHA

        T=TH+TL        'FORMA EL DATO TEMPERATURA DE 10 BITS

        T=T/2          'LM 0-1V ; VALOR T:0-205 :1023/5

        RETURN

        

SETPOINT:

        ADCON0 = $49   'ACTIVA CANAL 1

        GOSUB ESPERA   'SALTA A SUBRUTINA ESPERA

        SPH=ADRESH*4    'DEZPLAZA EL REG ADRESH 2 BITS IZQUIERDA

        SPL=ADRESL/64   'DESPLAZA EL REG ADRESL 6 BITS DERECHA

        SP=SPH+SPL     'FORMA EL DATO SETPOINT DE 10 BITS

        SP=SP/10       'CONVIERTE VALOR DE SETPOINT DE 0 A 100 C

        RETURN  

        

ESPERA:

        PAUSEUS 50     'ESPERA 50 MICROSEGUNDOS

        ADCON0.2 = 1   'INICIA LA CONVERSION

        PAUSEUS 50     'ESPERA PARA TERMINAR LA CONVERSION     

        RETURN

        

CONTROL:

        IF T>SP THEN

                    LOW SALIDA   'DESACTIVA SALIDA

                ELSE

                    HIGH SALIDA  'ACTIVA SALIDA

        ENDIF

        PAUSE 1000

        RETURN