Red de conocimientos turísticos - Información de alquiler - Agregue varios botones para conectarse a los problemas de programación de botones del módulo Bluetooth

Agregue varios botones para conectarse a los problemas de programación de botones del módulo Bluetooth

En caso de retraso del software, el procedimiento es el siguiente:

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

.