Sencillo hacer un contador para bloqueo

Os pongo en situacion: tengo este programa de una cerradura electrónica controlada por un PIC 16f84a y queria poner un contador o algo asi no se, para que cuando hagas 3 intentos de contraseña el dispositivo se bloquee o tarde unos minutos en volver a dejar poner la clave. No se donde deberia insertarlo ni anda, alguien me puede ayudar? lo necesito para yaaaa!!(joer encima cn exigencias) muchas gracias por adelantado

El programa es el siguiente:

Código:
_CONFIG _CP_OFF&_WDT_OFF&PWRTE_ON&_XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
 
CBLOCK 0X0C
ENDC
 
#DEFINE LongitudClave (FinClaveSecreta-ClaveSecreta)
#DEFINE CerraduraSalida PORTA,3
 
;ZONA DE CÓDIGOS *********************************************
 
ORG 0
goto Inicio
ORG 4
goto ServicioInterrupcion
 
Mensajes
addwf PCL,F
MensajeTeclee
DT "Teclee CLAVE",0X00
MensajeClaveCorrecta
DT "Clave CORRECTA",0X00
MensajeAbraPuerta
DT "Abra la puerta",0X00
MensajeClaveIncorrecta
DT "Clave INCORRECTA",0X00
;
LeeClaveSecreta
addwf PCL,F
ClaveSecreta
DT 4h,5h,6h,0Eh
DT 7h,8h
FinClaveSecreta
Inicio call LCD_Inicializa
bsf STATUS,RP0
bcf CerraduraSalida
bcf STATUS,RP0
call TecladoInicializa
call InicializaTodo
movlw b'10001000'
movwf INTCON
 
Principal
sleep
goto Princpial
 
;Subrutina "ServicionInterrupcion"********************************
;
CBLOCK
ContadorCaracteres
GuardaClaveTecleada
ENDC
 
ServicioInterrupcion
call Teclado_LeeHex
movwf INDF 
movlw '*'
call LCD_Caracter
incf FSR_F
incf ContadorCaracteres
movlw LongitudClave
subwf ContadorCaracteres
btfss STATUS,C
goto FinInterrupcion
call LCD_Borra
clrf ContadorCaracteres
movlw ClaveTecleada
movwf FSR
ComparaClaves 
movf INDF,W
movwf GuardaClaveTecleada
movf ContadorCaracteres,W
call LeeClaveSecreta
subwf GuardaClaveTecleada,W
btfss STATUS,Z
goto ClaveIncorrecta
incf FSR,F
incf ContadorCaracteres,W
btfss STATUS,C
goto ComparaClaves
ClaveCorrecta
movlw MensajeClaveCorrecta
call LCD_Mensaje
call LCD_Linea2
movlw MensajeAbraPuerta
call LCD_Mensaje
bsf CerraduraSalida
goto Retardo
ClaveIncorrecta
Movlw MensajeClaveIncorrecta
call LCD_Mensaje
Retardo 
Call Retardo_2s
call Retardo_1s
InicializaTodo
bcf CerraduraSalida
clrf ContadorCaracteres
movlw ClaveTecleada
movwf FSR
call LCD_Borra
movlw MensajeTeclee
call LCD_Mensaje
call LCD_Linea2
FinInterrupcion
call Teclado_EsperaDejePulsar
bcf INTCON,RBIF
retfie
 
INCLUDE <TECLADO.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <LCD_4BIT.INC>
 
CBLOCK
ClaveTecleada
ENDC
 
END
 
Última edición por un moderador:
Como estas de afan, pues lo logico es adicionar el codigo apartir de la etiqueta
ClaveIncorrecta, en el programa.
Saludos
 
Atrás
Arriba