Agregue varios botones para conectarse a los problemas de programación de botones del módulo Bluetooth
ORG 0000H
INICIO:
SETB P1.0
MOV R0 , # 0
M_LOOP:
CALL DISPLAY; muestra el número en R0.
JB P1.0, M_LOOP; si no se presiona, continúa mostrándose.
VISUALIZACIÓN DE LLAMADA; Retraso 8 milisegundos.
JB P1.0, M_LOOP;Tramado.
-Confirmar pulsando---------------------- - ------
MOV R2, #49; espere 400 milisegundos (presionado hace 8 milisegundos)
W_50:
JB P1, M_LOOP. ; soltar y empezar de nuevo.
VISUALIZACIÓN DE LLAMADA; Retraso 8 milisegundos.
DJNZ R2, W_50; bucles 49 veces
- La prensa ha sido confirmada durante 400 milisegundos, ¿qué se debe hacer a continuación? ----
INC R0; más uno.
- El siguiente paso es determinar si se continúa presionando durante 200 ms
W_200:
MOV R2, #25; 25 * 8 = 200
W_25:
JB P1.0, M_LOOP;
VISUALIZACIÓN DE LLAMADA; Retraso 8 milisegundos.
DJNZ R2, W_25; bucle 25 veces
-Reconocido y presione 200ms, ¿qué se debe hacer?----
INC R0
SJMP W_200; Continuar esperando 200 ms
============================== == ===============
PANTALLA: ; Muestra la subrutina, use P0 y P2 para generar el código de segmento y el código de bits respectivamente.
Código omitido.
RET
La subrutina de visualización muestra el contenido de R0 en notación decimal de 3 dígitos, tardando 8 milisegundos.
Este programa se descargó en el circuito de hardware y se probó para cumplir con los requisitos de la pregunta.
--------- ----------
Viendo que todo el mundo piensa que la sincronización del hardware es mejor , agreguemos otro programa que use interrupciones de temporizador.
Key_n EQU 30H
Key_T EQU 31H
Key_1 EQU P1.0
ORG 0000H
Inicio SJMP
ORG 000BH
LJMP T0_INT
ORG 0030H
Inicio: MOV SP, #60H
MOV TMOD , #01
MOV TH0, #(65536 - 1000) / 256; 1ms@12MHz
MOV TL0, #(65536 - 1000) MOD 256
SETB TR0
SETB ET0
SETB EA
Tecla MOV_n, #0
Tecla MOV_T, #0
------------------------------------------------ - --- --------------------
M_LOOP:; Bucle principal, puedes agregar contenido
; hacer cualquier cosa
LJMP M_LOOP
------------------------------- --- -------- ---------------------------------
T0_INT: ; Ejecuta el programa de interrupción cada 1ms
MOV TL0, #(65536 - 1000) MOD 256
MOV TH0, #(65536 - 1000) / 256;
PUSH ACC; Proteger el sitio.
PUSH PSW
;Puede hacer cualquier cosa
;=============== El siguiente es el juicio de tiempo y el procesamiento. parte ====================
JB Key_1, k_NO transmisión de liberación de llave.
INC Key_n ; presione la tecla, luego agregue 1 milisegundo.
MOV A, #200
CJNE A, Key_n, T0_END menos de 200 milisegundos, salir.
MOV Key_n, #0
INC Key_T; presione 200ms para aumentar en uno.
MOV A, Key_T
JB ACC.0, T0_END; el último 1 saldrá ya que solo se agregó una vez.
; si no hay transmisión, agregue un número par de veces y alcance 400 ms
-------------------; ---- ----------------------------------
CPL P2.0; Programas correspondientes a la tecla P1.0, añade tus propios programas.
------------------------------------------- -------------
INC Key_T; Agregue una vez más y volverá a ser un número impar. Después de 200 ms, agregue una vez más y será un número par. de nuevo.
SJMP T0_END
k_NO: ; Suelte la clave y elimine todas las banderas.
MOV Key_n, #0
MOV Key_T, #0
============== Los anteriores son los Pulsaciones de teclas La parte de procesamiento y evaluación del tiempo en ====================
T0_END:
POP PSW
POP ACC
RETI
END
El efecto del programa es generar una onda rectangular en P2.0. Se puede ver la forma de onda. en la ilustración del usuario anterior p>
.