Red de conocimiento informático - Conocimiento informático - Ayuda a comprobar si hay errores en el programa ensamblador

Ayuda a comprobar si hay errores en el programa ensamblador

Existen los siguientes problemas:

1. Después de que el retraso de la clave rebote, el valor de la clave no se vuelve a leer, es decir:

L8: ACALL. DELAY

CJNE A, #0FFH, SAVE

Debes insertar entre estas dos instrucciones: MOV A, P1, de lo contrario la A que uses para comparar seguirá siendo la primera vez que lees it A

2. Después de detectar una pulsación de tecla, no esperó a que se soltara la tecla antes de detectar la siguiente. A juzgar por su programa, el timbre sonará después de detectar que se presiona un botón. A menos que pueda controlar bien el tiempo de presionar el botón, no puede exceder el tiempo del timbre. Por lo tanto, se recomienda agregar la liberación de la tecla de espera, es decir:

INC R0

DJNZ R2, SET

Inserte estas dos instrucciones:

RELEASE: MOV A, P1

CJNE A, #0FFH, RELEASE Si detecta que la tecla aún está presionada continuará detectando hasta que se suelte

<; p>ACALL DELAY; Continuar retrasando el rebote

MOV A, P1

CJNE A, #0FFH, RELEASE Después del rebote, confirme nuevamente que la tecla ha sido liberada

El código detrás de usted parece muy confuso, mi comprensión general es: comienza leyendo el valor clave 8 veces y lo almacena en la unidad a partir de 31H, y luego, en el ciclo posterior, lo ejecuta 3 veces y luego lee el valor de la clave 8 veces, y siempre que haya una de estas 8 veces. Si presiona la tecla derecha (igual que los valores de las teclas 1.º, 2.º y 3.º al principio respectivamente), la posición 00H será válida. , y luego sonará el timbre, pero no habrá trabajo sustancial.

Además, P3.2 en su diagrama esquemático es la línea de control. P3.2 no se ve en el programa, pero P3.5 sí.

Espero que puedas especificar tus necesidades y tus propias ideas de programación para que otros puedan ayudarte. No tiene sentido simplemente publicar programas.