¿Cuáles son las instrucciones de E / S utilizadas en 8051?

El Intel MCS-51 (comúnmente denominado 8051 ) es un conjunto de instrucciones de computadora de conjunto de instrucciones complejas (CISC) de arquitectura interna de Harvard, microcontrolador de un solo chip (µC) desarrollado por Intel en 1980 para su uso en sistemas integrados.

El microcontrolador tiene un total de cuarenta pines en total. La mayoría de los pines del microcontrolador 8051 tienen más de una función. La primera función es la operación de entrada / salida y la segunda función puede ser alguna función especial, ya que pueden usarse como contadores o para la comunicación en serie.

En el microcontrolador hay cuatro puertos (colección de pines) P0, P1, P2 y P3. Estos puertos tienen 8 pines cada uno

Todos los puertos de 8051 se pueden usar para entrada o salida.

Programado el microcontrolador para alternar los pines de salida del puerto 1 y, por lo tanto, se activará continuamente.

ORG 0H

MOV A, # 55H; // A = 55 hex

ESPALDA: MOV P1, A; // P1 = A

RETARDO DE LLAMADA; // Espere “digamos 256 contadores”

CPL A; // complemento A

SJMP BACK; // sigue haciendolo

RETARDO: // retrasar la subrutina para 256 recuentos

MOV R1, # 0FFH; // carga FF hex en R1 “contador”

OTRA VEZ: DJNZ R1, OTRA VEZ; // un bucle de retraso

RET; // volver a la persona que llama

FIN

Ahora supongamos que deseamos recibir datos en el puerto 0 y enviarlos al puerto 2. En otras palabras, la entrada en el puerto 0 se puede dirigir como salida al puerto 2.

Recuerde que para recibir la entrada, los pines de entrada o el puerto deben inicializarse a la lógica ALTA, es decir, 1 y, en el ejemplo posterior, se ha utilizado el puerto completo para recibir la entrada. Entonces, en lugar de asignar una lógica alta a cada pin, el valor hexadecimal FF, es decir, el binario 11111111 se carga en el puerto de entrada.

ORG 0H

MOV A, # 0FFH; // A = FF hexadecimal o binario 11111111

MOV P0, A; // convierte a P0 en un puerto de entrada inicializando la lógica alta en los 8 pines

ESPALDA: MOV A, P0; // obtener datos de P0

MOV P1, A; // envíalo al puerto1

SJMP BACK; //sigue haciendolo

FIN