PROYECTOS » terma temporizador

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

'*  Name    : UNTITLED.BAS                                      *

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

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

'*          : All Rights Reserved                               *

'*  Date    : 16/04/2022                                        *

'*  Version : 1.0                                               *

'*  Notes   :                                                   *

'*          :                                                   *

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

'DEFINICION DE REGIDTROS PARA EL LCD'

DEFINE LCD_DREG PORTA   'UTILIXAR 4 BITS DEL PUERTO A PARA TX DE DATOS'

DEFINE LCD_DBIT 0       'DESDE EL BIT A.0 AL BIT A.3

DEFINE LCD_RSREG PORTB  'SELECCION DEL PUERTO DEL REGISTRO

DEFINE LCD_RSBIT 0      'EN EL BIT B.0'

DEFINE LCD_EREG PORTB   'UTILIZAR EL ENABLE EN EL PUERTO B'

DEFINE LCD_EBIT 1         'EN EL BIT B.1'

DEFINE OSC 4

'DEFINICION DE VARIABLES'

CUENTA VAR BYTE 'VARIABLE DE CUENTA DE TIMERO'

ACTUAL VAR BYTE 'VARIABLE DE CONTADOR DE PAUSA' 

MINUTO VAR BYTE 'VARIABLE DE CONTADOR DE PAUSA' 

X VAR WORD 


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

SALIDA VAR PORTB.4

DECTIEMPO VAR PORTB.5  'BOTON INCREMENTAR HORA'

INCTIEMPO VAR PORTB.6  'BOTON INCREMENTAR HORA'

INICIAR VAR PORTB.7   'BOTON INCREMENTAR MINUTOS'

    

'VALORES INICIALES '


T VAR BYTE : T = 30 

MINUTO=0

CUENTA=0 

ACTUAL=1 

Z VAR BYTE : Z=0

'PROGRAMA PRINCIPAL'

OPTION_REG=%01010110   'CICLO RELOJ INTERNO TMR0,RATE PRESESCALER 1:128

INTCON=%10100000      'HABILITA INTERRUPCION INTERNA TMR0

TRISB=%11100011    'DIRECCION DE REG TRIS B'

ON INTERRUPT GOTO INTERRUPCION 'EXISTE INTERRU. SALTARA ETIQ INTERRUPCION'


INICIO:

      PAUSE 500               'ESPERA 0.5 SEG. PARA INICIAR LCD

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

      LCDOUT $FE,$C0,"    GRUPO E     "  'SALUDO INICIAL

      PAUSE 1000

      GOTO PROGRAMADOR          'SALTO A SUBRUTINA PROGRAMADOR

       

PROGRAMADOR:

            GOSUB TIEMPO               

            LCDOUT $FE,1,"PROGRAMAR TIEMPO"   'MENSAJE DE PRIMERA  LINEA LCD

            LCDOUT $FE,$C0,"T PROGRAMADO ",":",DEC T,"m" 'VALOR DEL TIEMPO

            PAUSE 250

            IF INICIAR=0 THEN CLIP

            GOTO PROGRAMADOR 'RETORNO A ETIQUETA TIEMPO'


         

TIEMPO:

      IF INCTIEMPO=1  then T=T+10

      PAUSE 80

      IF DECTIEMPO=1  then T=T-10

      PAUSE 80

      RETURN

 

CLIP:

     FOR X=1 TO 80

        PAUSE 10

      NEXT X

     ACTUAL=1

     IF ACTUAL=1 THEN

        LCDOUT $FE,1,"PROGRAMADO",":",DEC T,"m"    'MENSAJE DE PRIMERA  LINEA LCD

        LCDOUT $FE,$C0,"T RELATIVO ",":",DEC Z,"m" 'VALOR DEL TIEMPO

     ACTUAL=0 'PANTALLA LCD ACTUALIZADA

     ENDIF  

    GOSUB INTERRUPCION

    GOTO clip

     

DISABLE

INTERRUPCION:

        

        CUENTA=CUENTA+1

        TMR0=4

        IF CUENTA<31 THEN RESET

        CUENTA=0

        z=z+1

              IF z=T THEN

                                 'z=0

        ENDIF

        IF Z<=T THEN

            

            HIGH SALIDA  'ACTIVA SALIDA    

        ELSE

            LOW SALIDA   'DESACTIVA SALIDA

                    

        ENDIF

      ACTUAL=1      

RESET:

    INTCON.2=0

RESUME    

                          

END