Adición de dos números de 8 bits en el microcontrolador 8051 usando puertos

El microcontrolador 8051 es un microcontrolador diseñado por Intel en 1981. Es un microcontrolador de 8 bits con DIP de 40 pines (paquete dual en línea), 4 kb de almacenamiento ROM y 128 bytes de almacenamiento RAM, 2 temporizadores de 16 bits. Consta de cuatro puertos paralelos de 8 bits, que son programables y direccionables según el requisito.

Problema: escribir un programa en lenguaje ensamblador para agregar dos números de 8 bits en el microcontrolador 8051 usando puertos.

Ejemplo:

Diagrama de bloques:

Algoritmo:

  • Inicialice los puertos P0 y P1 como puertos de entrada.
  • Inicialice los puertos P2 y P3 como puertos de salida.
  • Inicialice el registro R1.
  • Mueva el contenido del puerto 0 al registro B.
  • Mueva el contenido del puerto 1 al registro A.
  • Agregue contenido en A y B.
  • Si el acarreo está presente, incremente R1.
  • Mueva el contenido en R1 al Puerto 2.
  • Mueva la suma en el paso 6 al Puerto 3.

Programa:

ORG 00H                   // Indicates starting address

MOV P0,#0FFH              // Initializes P0 as input port
MOV P1,#0FFH              // Initializes P1 as input port
MOV P2,#00H               // Initializes P2 as output port
MOV P3,#00H               // Initializes P3 as output port

L1:MOV R1, #00H          // Initializes Register R1
MOV B,P0                 // Moves content of P0 to B
MOV A,P1                 // Moves content of P1 to A
CLR C                    // Clears carry flag
ADD A,B                  // Add the content of A and B and store result in A
JNC L2                   // If carry is not set, jump to label L2
INC R1                   // Increment Register R1 if carry present

L2: MOV P2, R1            // Moves the content from Register R1 to Port2
MOV P3,A                 // Moves the content from A to Port3
SJMP L1                  // Jumps to label L1
END

Explicación:

  • ORG 00H es la dirección inicial del programa.
  • Dar los valores como #0FFH y #00H inicializa los puertos como puertos de entrada y salida respectivamente.
  • El registro R1 se inicializa a 0 para almacenar cualquier acarreo producido durante la suma.
  • MOV B, P0 mueve el valor presente en P0 al registro B.
  • MOV A, P1 mueve el valor presente en P1 al Acumulador.
  • ADD AB suma los valores presentes en Acumulador y registro B y almacena el resultado en Acumulador.
  • JNC L2 se refiere a saltar a la etiqueta L2 si no hay acarreo presente al verificar automáticamente si el bit de acarreo está configurado o no.
  • Si el bit de acarreo se establece para incrementar el registro R1.
  • MOV P2, R1 y MOV P3, A se refiere a mover el bit de acarreo a P2 y dar como resultado el acumulador a P3.

Publicación traducida automáticamente

Artículo escrito por hariprasadj21 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *