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