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