Se requiere un programa en lenguaje ensamblador del microcontrolador: 1 botón controla 1 luz. Cada vez que se presiona este botón 2 veces rápidamente, la luz se encenderá y apagará una vez.
Función de doble clic.
Es muy sencillo contar el tiempo desde "soltar la tecla" hasta "próxima pulsación de tecla".
==============
Los siguientes procedimientos han sido probados experimentalmente y pueden cumplir con los requisitos de la pregunta:
;- ---------------------------------------------- -
LED EQU P3.5
TECLA EQU P3.7
ORG 0000H
INICIO LJMP
ORG 0030H
INICIO:
TECLA JB, $
LLAMADA DELAY10MS
TECLA JB, INICIO
JNB CLAVE, $
DAN_JI:
LLAMADA DELAY10MS
MOV R2, #20
K_LOOP:
LLAMADA DELAY10MS
JNB KEY, SHUANG_JI
DJNZ R2, K_LOOP
SJMP START
SHUANG_JI:
LLAMADA DELAY10MS
TECLA JB, DAN_JI
LED CPL
TECLA JNB, $
INICIO SJMP
;-- ------- ----------------
RETARDO10MS:
MOV R6, #20
DJNZ R7, $ p>
DJNZ R6, $ - 2
RET
;---------------- -------- --
END
Los requisitos de la pregunta son muy simples y se pueden completar sin un cronómetro.
Según las ideas y métodos de este programa, no es difícil escribir programas para "un solo clic", "pulsación larga", "doble clic" y "triple clic".