En el tutorial anterior del microcontrolador 8051, analizamos el conjunto de instrucciones y los modos de direccionamiento del microcontrolador 8051. En este tutorial, veremos la programación en lenguaje ensamblador del microcontrolador 8051, la estructura del lenguaje ensamblador 8051, programas de muestra y más.
Antes de entrar en los detalles del lenguaje ensamblador y la programación para microcontroladores 8051, comprendamos rápidamente los lenguajes de programación comunes (específicos de los microcontroladores) y los tipos de lenguajes de programación.
descripción general
Tabla de contenido
¿Qué es un lenguaje de programación?
Programar en el sentido de un microcontrolador (o cualquier computadora) significa escribir una secuencia de instrucciones que un procesador ejecuta en un orden específico para realizar una tarea predefinida. La programación también incluye instrucciones de depuración y resolución de problemas y secuencias de instrucciones para garantizar que se realicen las tareas deseadas.
Como cualquier otro lenguaje, los lenguajes de programación tienen vocabulario, gramática y reglas específicas. Existen tres tipos o niveles de lenguajes de programación para los microcontroladores 8051. Estos niveles se basan en qué tan similares son las declaraciones en el lenguaje con las operaciones y tareas realizadas por un microcontrolador.
Los tres niveles de lenguajes de programación son:
- Lenguaje de máquina
- lenguaje ensamblador
- lenguaje de alto nivel
Lenguaje de máquina
En lenguaje de máquina, o código de máquina, las instrucciones se escriben como patrones de bits binarios, o combinaciones de unos y ceros binarios, y se almacenan como niveles de voltaje ALTO y BAJO. Este es el nivel más bajo de lenguaje de programación, el que realmente puede entender un microcontrolador o microprocesador.
lenguaje ensamblador
El siguiente nivel de lenguajes de programación es el lenguaje ensamblador. Dado que todas las instrucciones en lenguaje de máquina o código constan de unos y ceros, es muy difícil para los humanos programar usándolo.
El lenguaje ensamblador es una representación pseudoinglés del lenguaje de máquina. El lenguaje ensamblador del microcontrolador 8051 es una combinación de palabras similares al inglés llamadas mnemónicos y códigos hexadecimales.
También es un lenguaje de bajo nivel y requiere un amplio conocimiento de la arquitectura del microcontrolador.
lenguaje de alto nivel
El nombre lenguaje de alto nivel significa que no hay que preocuparse por la arquitectura del microcontrolador u otros detalles internos, y utiliza palabras y declaraciones que los humanos pueden entender fácilmente.
Ejemplos de lenguajes de alto nivel incluyen BASIC, C Pascal, C++ y Java. Un programa llamado compilador convierte un programa escrito en un lenguaje de alto nivel en código de máquina.
¿Por qué lenguaje ensamblador?
Aunque es más fácil trabajar con lenguajes de alto nivel, las ventajas del lenguaje ensamblador se señalan por las siguientes razones.
- Los programas escritos en ensamblador se ejecutan más rápido y ocupan menos memoria.
- El lenguaje ensamblador le permite utilizar directamente todas las funciones de un microcontrolador.
- El lenguaje ensamblador permite un control directo y preciso de todos los recursos del microcontrolador, como puertos de E/S, RAM y SFR.
- En comparación con los lenguajes de alto nivel, el lenguaje ensamblador tiene menos reglas y restricciones.
Lea también este interesante artículo. Conjunto de instrucciones del microcontrolador 8051
Estructura del lenguaje ensamblador del microcontrolador 8051
Esta sección describe la estructura o sintaxis del lenguaje ensamblador del microcontrolador 8051. Cada línea o declaración en un programa en lenguaje ensamblador del microcontrolador 8051 consta de tres campos: una etiqueta, una instrucción y un comentario.
La disposición u orden en que aparecen estos campos se muestra a continuación.
Nota: Los corchetes en las etiquetas y comentarios significan que estos campos son opcionales y no están disponibles en todas las declaraciones del programa.
Antes de analizar estos tres campos, veamos primero un ejemplo de cómo se ve una declaración o línea típica en el lenguaje ensamblador del microcontrolador 8051.
Etiqueta de prueba: MOV A, 24H; este es un comentario de muestra
En la declaración anterior, “TESTLABEL” es el nombre de la etiqueta, “MOV A, 24H” es la instrucción y “ESTO ES UN COMENTARIO DE MUESTRA” es el comentario.
etiqueta
Una etiqueta es un nombre elegido por el programador para una ubicación de memoria o declaración dentro de un programa. La parte de la etiqueta de la declaración es opcional y, si está presente, la etiqueta debe terminar con dos puntos (:).
Lo importante que debe recordar al elegir un nombre para su etiqueta es que debe reducir la necesidad de documentación.
orden
Las instrucciones son la parte principal de la programación en lenguaje ensamblador del microcontrolador 8051 porque son responsables de las tareas realizadas por el microcontrolador. Las instrucciones en lenguaje ensamblador constan de dos partes: un código de operación y un operando.
La primera parte de la instrucción es el código de operación, que significa código de operación y especifica la operación que debe realizar el microcontrolador. Los códigos de operación en lenguaje ensamblador se llaman mnemónicos. Los códigos de operación están en forma binaria (usados en lenguaje de máquina), mientras que los mnemotécnicos (equivalentes a los códigos de operación) son declaraciones similares al inglés.
La segunda parte de la instrucción se llama operando y representa los datos sobre los cuales se realiza la operación. Hay dos tipos de operandos: operandos de origen y operandos de destino. El operando de origen es la entrada de la operación y el operando de destino es donde se almacena el resultado.
comentario
8051 La última parte de una estructura en lenguaje ensamblador es un comentario. Los comentarios son declaraciones incluidas por los desarrolladores para hacer que el código sea más fácil de entender y se utilizan para documentar adecuadamente un programa.
Los comentarios son opcionales y, si se usan, deben comenzar con un punto y coma (;) o doble barra (//), según el ensamblador.
Las siguientes declaraciones demuestran algunos usos de etiquetas, instrucciones y comentarios.
Etiqueta sin instrucciones ni comentarios: ETIQUETA:
Línea que contiene etiqueta e instrucción: ETIQUETA: MOV A, 22H
Línea que contiene instrucciones y comentarios: MOV A, 22H; Este es un comentario
Líneas que contienen etiquetas y comentarios: ETIQUETA: ; Este es un comentario
Línea de sólo comentarios: ; Este es un comentario
Lea también: Arquitectura del microcontrolador 8051
Directivas del lenguaje ensamblador del microcontrolador 8051
Aunque las directivas en lenguaje ensamblador aparecen en el campo mnemotécnico de un programa, no son instrucciones para el ensamblador del microcontrolador 8051. Las directivas del lenguaje ensamblador son en realidad instrucciones para el ensamblador que le dicen al programa ensamblador qué hacer durante el proceso de ensamblaje.
Las directivas del lenguaje ensamblador no afectan el contenido de la memoria del microcontrolador 8051 (excepto las directivas DB y DW).
Estas directivas dependen del programa ensamblador y para el ensamblador ASM51 existen las siguientes categorías de directivas:
A continuación, veremos algunas directivas importantes y de uso frecuente en lenguaje ensamblador.
ORG – Establecer origen
El programa en lenguaje ensamblador del microcontrolador 8051 comienza a ensamblarse en la dirección de memoria del programa 0000H. Esta es también la dirección donde el microcontrolador 8051 comienza a ejecutar código.
Para colocar programas y datos en cualquier lugar del espacio de direcciones del microcontrolador 8051, puede utilizar la directiva ORG.
ejemplo
ORG0000H; Le dice al ensamblador que monte la siguiente declaración en 0000H.
LJMP principal; memoria de código 0000H. Saltar a principal.
ORG000BH; Le dice al ensamblador que monte la siguiente declaración en 000BH.
Principal: No. Memoria de código 000BH. La parte principal comienza aquí.
DB – Definición de bytes
La directiva DB se utiliza para definir variables de tipo byte. Esta directiva le permite definir datos en formato decimal, binario, hexadecimal o ASCII. Requiere el sufijo “B” para binario y “H” para hexadecimal. Los caracteres ASCII están entre comillas simples (por ejemplo, “cadena”).
ejemplo
ORG0000H
DB10; define el byte 10 (decimal) y guárdalo en 0000H
DB30H; define el byte 30 (HEX) y guárdalo en 0001H
DB ‘STRING’ ; Defina la cadena “STRING” y guárdela en 0002H a 0007H
DB 00001111B; define el byte 00001111 (binario) y guárdalo en 0008H
DB1234H; Defina el byte 34 (HEX) y guárdelo en 0009H.Sólo el byte inferior
Sólo puede asignar bytes de memoria si se acepta como base de datos.
DW – Definición de palabra
Las directivas Define Word (DW) se utilizan para incluir datos de 16 bits en un programa. La funcionalidad DW es similar a la funcionalidad DB, excepto que DW genera valores de 16 bits.
EQU – equivalente
La directiva EQU le permite asociar un símbolo (o etiqueta) con un valor.
ejemplo
TMP EKU #30; Asigna el valor #30 al nombre TMP.
RED_LED EQU P1.0; P1.0 se define como RED_LED
fin
La directiva END se utiliza para detener el proceso de ensamblaje. Esta debe ser la última declaración de su programa. La directiva END no puede contener una etiqueta y el ensamblador no procesa las declaraciones más allá de END.
ejemplo
ORG0000H
MOVIMIENTO A, 20H
MOVIMIENTO R0, #30
fin
Ejemplos de programación en lenguaje ensamblador del microcontrolador 8051
Ejemplo 1
A continuación se muestra un lenguaje ensamblador simple para un microcontrolador 8051 que copia datos de R0 en el Banco0 a R0 en el Banco3.
Organización 00H
MOVIMIENTO R0, #33H
MOVIMIENTO A, R0
AJUSTE PSW.3
AJUSTE PSW.4
MOV R0,A
fin
Ejemplo 2
El siguiente ejemplo le permite encender y apagar (parpadeando el LED) el LED conectado al PORT1 de un microcontrolador 8051.
Este tutorial cubrió los conceptos básicos de la programación en lenguaje ensamblador del microcontrolador 8051, la estructura del lenguaje ensamblador 8051, las directivas del lenguaje ensamblador y algunos ejemplos.
Artículo relacionado:
- Fundamentos de los programas C integrados
- Configuración de la memoria del microcontrolador 8051
- Conjunto de instrucciones del microcontrolador 8051
- Programando la Raspberry Pi Pico con C | Obtenga…
- Registro de funciones especiales del microcontrolador 8051 (SFR)
- Introducción a NodeMCU | Guía para principiantes