Análisis del código fuente de programas grandes
H_CLKbit P3.4 es el mismo que el anterior, P3.4 se llama H_clk.
? ¿PR? Función de código de segmento DELAY30US Declaración DELAY30US
Retraso público 30US
RSEG? ¿PR? Retraso 30US
; abcXDATA 0A00H
; $35.8
DELAY30US: Cuerpo de la función
Empuje 05H porque se usa R5 en la función, por lo que R5 antes de ingresar a la función se empuja a la pila y se abre antes de regresar.
MOVr5, # 50; 25 asigna un valor a R5
DE30S1:
DJNZr5, de 30s 1; el juicio no es igual a cero. Saltar a de30s 1; igual a cero y salir
POP 05h2 restaurar R5 antes de ingresar a la función
Retorno de función RET
;******* *** ************************************************* **** ******
? ¿PR? El código de segmento DELAY10US declara la función de retraso 10US.
Retraso público 10US
RSEG? ¿PR? Retraso 10US
; 16.3 Estados Unidos
Retraso 10us: Retraso 10us función cuerpo.
Empuje 05H Debido a que R5 se usa en la función, R5 antes de ingresar a la función se empuja a la pila y se eleva antes de regresar.
MOV r5, # 20; 10 asigna valor a R5
DE10S1:
DJNZ r5, de 10s 1; juez Si no es igual a cero, salta a 10s 1; si es igual a cero, sale
POP 05H2 restaura R5 antes de ingresar a la función
La función RET regresa
? ¿PR? El código Clssignature declara la función CLSSIGNAL.
Señal pública
RSEG? ¿PR? señal cls
señal cls:
Cuando el sistema envía información al PINPAD, envía el bit de parada final y luego envía la siguiente
operación de envío. Así que espere a que se complete el bit de parada.
CLSL1:
PUSH 05H Debido a que la función usa R5, R5 antes de que la función entre se empuja a la pila y se eleva antes de regresar.
CLSL1_U:
MOV R5, #6EH asigna valor a R5.
CLSL2: JNB H_DATA, CLSL1_U determina que p3.2 no es cero y continúa asignando el valor inicial.
JNB H_CLK, CLSL1_U determina que p3.4 no es cero y continúa asignando el valor inicial.
DJNZ r5, CLSL2 Si ambas entradas son cero, resta 1 a r5, si no, salta a clsl2.
POP 05H
Remojar en agua para suavizar
Fin