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.