PROYECTOS » alarma con teclado keypat
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2022 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 8/03/2022 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEFINE OSC 4
''DEFINICION DE ALIAS''
CONTAR VAR PORTA.3 'PIN DE PULSOS PARA CONTAR'
RESET VAR PORTA.2 'PIN DE TECLA DE RESET'
VISUAL VAR PORTA.1 'PIN TECLA PARA VISUALIZACION'
BUZZER VAR PORTA.0 'PIN DE ACTIVAR BUZZER'
'DEFINICION DE VARIABLES'
UNID VAR BYTE 'VARIABLE DE UNIDADES '
DECE VAR BYTE 'VARIABLE DE DECENAS'
CENT VAR BYTE 'VARIABLES DE CENTENAS'
MILE VAR BYTE 'VARIABLES DE MILLARES'
SETUNID VAR BYTE'VARIABLES DE SETEO UNIDADES'
SETDECE VAR BYTE'VARIABLES DE SETEO DECENAS'
SETCENT VAR BYTE'VARIABLES DE SETEO CENTENAS'
SETMILE VAR BYTE'VARIABLES DE SETEO MILLARES'
ACTIVAR VAR BIT 'BANDERA DE TECLA CONTAR'
'ESTADOS INICIALES'
SETUNID=0 '# UNIDAD OPCIONAL PARA ACTIVAR AVISO
SETDECE=1 '# DECENA OPCIONAL PARA ACTIVAR AVISO'
SETCENT=0 '# CENTENA OPCIONAL PARA ACTIVAR AVISO'
SETMILE=0 '# MILLAR OPCIONAL PARA ACTIVAR AVISO'
TRISB=0 'CONF. TODO PUERTO B COMO SALIDA
TRISA=14 'CONF. PA.1,PA.2 Y PA.3 ENTRADAS
'PROGRAMA PRINCIPAL'
HIGH BuZZER 'ACTIVAMOS BUZER 200 MS.
pAUSE 200
RESETEO:
UNID=0 'CARGA VALOR UNID A O'
DECE=0 'CARGA VALOR DECE A O'
CENT=0 'CARGA VALOR CENTE A 0'
MILE=0 'CARGA VALOR MILE A 0'
LOW BUZZER
DISPLAY:
PORTB=224+UNID '11100000, ACTIVA UNIDADES
PAUSE 80
PORTB=208+DECE '11010000, ACTIVA DECENAS
PAUSE 80
PORTB=176+CENT '10110000, ACTIVA CENTENAS
PAUSE 80
PORTB=112+MILE '01110000, ACTIVA MILLARES
PAUSE 80
GOSUB TECLAS 'SALTO A REVISION DE PULSADORES
GOTO DISPLAY
TECLAS:
IF CONTAR=0 THEN SUMAR 'SI PRESIONAS, SALTO A SUMAR
IF RESET=0 THEN RESETEO 'SI PRESIONAS, SALTO A RESETEO
IF VISUAL=0 THEN VISUALIZAR 'SI PRESIONAS, SALTO A VISUALIZAR
ACTIVAR=1 'BANDERA DE SUMA, EVITA REBOTES DE CUENTA
RETURN
SUMAR:
IF ACTIVAR=0 THEN RETURN 'REVISA BANDERA CUENTA
ACTIVAR=0 'RESETEA BANDERA
UNID=UNID+1 'SUMA 1 A UNIDADES
IF UNID<10 THEN COMPARAR 'SI UNID<10 SALTO A COMPARAR
UNID=0 'HACE 0 LAS UNIDADES
DECE=DECE+1 'SUMA 1 A DECENAS
IF DECE<10 THEN COMPARAR 'SI UNID<10 SALTO A COMPARAR
DECE=0 'HACE 0 LAS DESENAS
CENT=CENT+1 'SUMA 1 A CENTENAS
IF CENT<10 THEN COMPARAR 'SI UNID<10 SALTO A COMPARAR
CENT=0 'HACE 0 LAS CENTENAS
MILE=MILE+1 'SUMA 1 A LOS MILLARES
IF MILE<10 THEN COMPARAR 'SI UNID<10 SALTO A COMPARAR
MILE=0 'HACE 0 LOS MILLARES
RETURN
VISUALIZAR:
PORTB=224+SETUNID 'ACTIVA UNIDADES Y VE VALOR SETUNID
PAUSE 80
PORTB=208+SETDECE 'ACTIVA UNIDADES Y VE VALOR SETDECE
PAUSE 80
PORTB=176+SETCENT 'ACTIVA UNIDADES Y VE VALOR SETCENT
PAUSE 10
PORTB=112+SETMILE 'ACTIVA Y VE VALOR SETMILE
PAUSE 10
IF VISUAL=0 THEN VISUALIZAR
HIGH BuZZER
RETURN
COMPARAR:
IF UNID!=SETUNID THEN RETURN 'UNID DIFERENTE SETUNI? RETORNA;
IF DECE!=SETDECE THEN RETURN 'SI UNID=SETUNID, SALTA A COMPARAR
IF CENT!=SETCENT THEN RETURN 'SI DECE DIFERENTE SETDECE Y ASI
IF MILE!=SETMILE THEN RETURN 'CONTINUA CON CENT Y MILE
HIGH BUZZER 'ACTIVA BUZZER
RETURN
END