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