¡Arrodíllate! Programa de microcontrolador AT89S52
¿Puedo esperar 2 segundos por cada entrada?
Supongamos que cada tecla se presiona secuencialmente y el intervalo es mayor que 2S.
-
ORG 0000H
Punto de inicio JMP
ORG 0030H
Inicio:
;-
(1) Si P1.5 es alto, entonces P1.1=0 y P1.0 = 0.2 segundos después, P1, P1.1=
PRG5 :
JNB P1.5, $; si es 0, significa que no hay prensa y relectura.
Retraso de llamada; retraso de 10 milisegundos
JNB P1.5, si PRG5 es 0, significa que no hay prensa y relectura.
;-
CLR P1.1
CLR P1.0
Llamar DL1S
Llamar DL1S
SETB P1.1
; SETB P1.0
; -
; (2) Si P1.6 es alto, entonces P1.1=0 y p1.4 = 0.2 segundos después, p1.0 = 1.4 = 1.
PRG6:
JNB P1.6, $; si es 0, significa que no hay prensa y relectura.
Retraso de llamada; retraso de 10 milisegundos
JNB P1.6, si PRG6 es 0, significa que no se presiona ni se vuelve a leer.
;-
CLR P1.1
CLR P1.4
Llamar DL1S
Llamar DL1S
SETB P1.1
SETB P1.4
;-
(3) Si P1.7 está en nivel alto, Dos segundos después de P1.0=0 y P1.3=0, P1.3 = 0.
PRG7:
JNB P1.7, $; si es 0, significa que no hay prensa y relectura.
Retraso de llamada; retraso de 10 milisegundos
JNB P1.7, si PRG7 es 0, significa que no se presiona y se vuelve a leer.
;-
CLR P1.0
CLR P1.3
Llamar DL1S
Llamar DL1S
SETB P1.0
; SETB P1.3
; -
(4) Si P1.6 está en nivel alto; , P1.4=0, P1.3 = 0, P1, P1.3=1 después de dos segundos.
PRG6_2:
JNB P1.6, $; si es 0, significa que no hay prensa y relectura.
Retraso de llamada; retraso de 10 milisegundos
JNB P1.6, pr g6_2; si es 0, significa que no se presiona y se vuelve a leer.
;-
CLR P1.3
CLR P1.4
Llamar DL1S
Llamar DL1S
SETB P1.3
SETB P1.4
Punto de inicio SJMP
-
Retraso: Retraso 5 ms
MOV R6, #10
MOV R7, #200
DJNZ R7, USD
DJNZ R6, USD 2
DJNZ R6, USD 2
p>Remojado en agua para suavizar
DL1S:
MOV R5, #200
Retraso de llamada
DJNZ R5 , $ - 2
Remojado en agua para suavizar
Fin
=================; ===== ==============================