PROYECTOS » interrupción PB

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

'*  Name    : UNTITLED.BAS                                      *

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

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

'*          : All Rights Reserved                               *

'*  Date    : 10/03/2022                                        *

'*  Version : 1.0                                               *

'*  Notes   :                                                   *

'*          :                                                   *

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

CMCON=7 ;cambiar a digital el puerto A

NUMERO VAR BYTE ;variable número para almacenar

;la tecla pulsada

R VAR BYTE ;variable r para hacer

;repeticiones

BIP VAR PORTA.0 ;el portA.1 Bip

;(conectar chicharra activa)

LED VAR PORTA.1 ;el portA.2 se llamará led

DOOR VAR PORTA.2 ;el portA.3 conectar relé

;para la cerradura

A VAR PORTB.0 ;nombres para los pines de las

               

B VAR PORTB.1     ;filas

C VAR PORTB.2

D VAR PORTB.3

UNO VAR PORTB.4 ;nombres para los pines de

;las columnas

DOS VAR PORTB.5

TRES VAR PORTB.6

CUATRO VAR PORTB.7

INICIANDO: ;programa del led para

;saber si está funcionando

HIGH LED : HIGH BIP

PAUSE 500

LOW LED : LOW BIP

GOTO TECLAUNO ;ir a comparar claves

BARRIDO:

LOW A ;sensar la fila A

IF UNO = 0 THEN NUMERO =1 :RETURN

;tecla pulsada retorne con

;variable cargada con 1

IF DOS = 0 THEN NUMERO =2:RETURN

;tecla pulsada retorne con

;variable cargada con 2

IF TRES = 0 THEN NUMERO =3:RETURN

;tecla pulsada retorne con

;variable cargada con 3

IF CUATRO = 0 THEN NUMERO =10:RETURN

;tecla pulsada retorne con

;variable cargada con 10

HIGH A

LOW B ;sensar la fila B

IF UNO = 0 THEN NUMERO =4 :RETURN

IF DOS = 0 THEN NUMERO =5 :RETURN

IF TRES = 0 THEN NUMERO =6 :RETURN

IF CUATRO = 0 THEN NUMERO =11:RETURN

HIGH B

LOW C ;sensar la fila C

IF UNO = 0 THEN NUMERO =7 :RETURN

IF DOS = 0 THEN NUMERO =8 :RETURN

IF TRES = 0 THEN NUMERO =9 :RETURN

IF CUATRO = 0 THEN NUMERO =12:RETURN

HIGH C

LOW D ;sensar la fila D

IF UNO = 0 THEN NUMERO =14:RETURN

IF DOS = 0 THEN NUMERO =0 :RETURN

IF TRES = 0 THEN NUMERO =15:RETURN

IF CUATRO = 0 THEN NUMERO =13:RETURN

HIGH D

PAUSE 10

GOTO BARRIDO

;********Programa de antirrebote de teclas *********

PTECLA:

HIGH LED : HIGH BIP ;genera sonido cada que

;se pulsa tecla


PAUSE 100 ;duración 100 milisegundos

LOW LED : LOW BIP ;apagar sonido y led

ESPACIO: ;programa de antirrebote

;de teclas

IF UNO = 0 THEN ESPACIO

;si la tecla sigue pulsada

;ir espacio

IF DOS = 0 THEN ESPACIO

;si la tecla sigue pulsada

;ir espacio

IF TRES = 0 THEN ESPACIO

;si la tecla sigue pulsada

;ir espacio

IF CUATRO = 0 THEN ESPACIO

;si la tecla sigue pulsada

;ir espacio

PAUSE 25

RETURN ;retorna si se suelta las teclas

; ********comparación de claves *************

TECLAUNO:

GOSUB BARRIDO ;ir a barrido y retorna.

;con un valor

GOSUB PTECLA ;envía a un programa

;antirrebote

IF NUMERO = 5 THEN TECLADOS

;si el número es igual a 1

;ir teclados

GOTO FALSO ;caso contrario ir a lazo

;falso

TECLADOS:

GOSUB BARRIDO :GOSUB PTECLA

;ir a barrido y retornar

;con un valor

IF NUMERO = 2 THEN TECLATRES

;si el número es igual a 2

;ir tecla tres.

GOTO FALSO1 ;caso contrario ir a lazo

;falso

TECLATRES:


GOSUB BARRIDO :GOSUB PTECLA

;ir a barrido y retornar

;con un valor

IF NUMERO = 6 THEN TECLACUATRO

;si el número es igual a 3

;ir tecla cuatro

GOTO FALSO2 ;caso contrario ir a lazo

;falso

TECLACUATRO:

GOSUB BARRIDO :GOSUB PTECLA

;ir a barrido y retornar

;con un valor

IF NUMERO = 9 THEN OPENGE

;si el número es igual a

;4 conectar relé

GOTO FALSO3 ;caso contrario ir a lazo

;falso

OPENGE:

FOR R = 1 TO 2 ;2 pitos indica clave

;correcta

PAUSE 5000

HIGH LED : HIGH BIP

PAUSE 100

LOW LED : LOW BIP

NEXT

HIGH DOOR ;se conecta el relé

PAUSE 3000 ;esperar 1 segundo

LOW DOOR ;desconectar relé

GOTO TECLAUNO ;ir nuevamente a comparar

;las claves

; ********* lazos falsos teclas erróneas **********

FALSO:

GOSUB BARRIDO :GOSUB PTECLA

; estas teclas no comparan

;ninguna

FALSO1: ;clave solo espera

GOSUB BARRIDO :GOSUB PTECLA

;pulsar las 4 teclas y no

;hace nada

FALSO2:

GOSUB BARRIDO :GOSUB PTECLA

FALSO3:

FOR R = 1 TO 3 ;3 pitos indica clave

;incorrecta

PAUSE 100

HIGH LED : HIGH BIP

PAUSE 100

LOW LED : LOW BIP

NEXT

GOTO TECLAUNO ;ir nuevamente a comparar

;las claves

END ;fin del programa.