Tutorial de ensamblador AVR 4 (5 / 9 paso)

Paso 5: Macros

Las macros son muy similares a las subrutinas que ya comentamos en el último paso que toman "argumentos". En otras palabras, las macros son esencialmente "funciones". De hecho, la principal diferencia entre lenguaje ensamblador y todas las lenguas de "alto nivel" que uso es que alguien ha recopilado un montón de funciones frecuentemente utilizadas en las macros. Aquí vamos a utilizar macros para lograr los mismos fines, con una diferencia importante, nuestras macros estará ahí en el código para poder ver y modificar como nos gusta.

Nuestra filosofía en estos tutoriales es deshacerse de todas las "cajas negras" y averiguar lo que está sucediendo detrás de las escenas. No queremos que nada sucede a menos que saberlo y le dijo que hacer eso. Por esta razón se llama "Línea de comandos de programación de lenguaje ensamblador". Estamos utilizando la línea de comandos en lugar de algunos Java basado IDE como el arduino uno (de hecho, yo uso la línea de comandos incluso con programación de arduino). Una ventana del ide de java es como una caja negra para mí. Nunca puedo estar absolutamente seguro de que no hay hipótesis que detrás de las escenas cuando mis instrucciones en el microcontrolador y no me gusta. También no me gusta cómo hinchado y cpu consume java se. De hecho, es también por qué estamos utilizando "avra" en lugar del ensamblador de ATmel IDE. Me doy cuenta que cuando eres un programador experto, o un completo principiante, usted ya sabe, o no importa, lo que está sucediendo detrás de las escenas, pero aquí sacrificamos la comodidad para evitar boxness de negro y la gordura.

Ahora ¿qué son las macros? También habrás dado cuenta al leer a través del programa que usamos la subrutina de "retraso" por todo el lugar. No solo de interior principal, sino desde dentro de otras subrutinas así. Esto conduce a los espaguetis y no nos gusta el spaghetti. (dibujar líneas entre cada bloque de la subrutina del código en su diagrama de uno bloque llama a otro y rápidamente vemos que la subrutina de "retraso" hace que el diagrama para parecerse a un plato de espaguetis)

Aquí es cómo generalmente se llama "retardo":

Verás que primero establecemos el variable (es decir, registro de trabajo) "de milisegundos" el valor 25 y luego llamamos a la subrutina "retrasar". La subrutina se demora 25 ms y luego regresar. Aparte de espaguetis, otro problema con esta manera de hacer las cosas es que si olvidamos establecer el valor de milisegundos antes que llamar a la subrutina que no tenemos idea cuál será la demora. Va a ser cualquier valor que ponemos en otro lugar de milisegundos. Se trata de una manera arriesgada de escribir código. Tan para resolver todo esto simplemente escribimos una "macro". Aquí ' tis:

Es una directiva del ensamblador que ponemos en la parte superior de nuestro programa que hace retrasar la misma cosas que teníamos en nuestra subrutina de retardo, se llama delay, pero tiene la diferencia importante que fijar las variable "milisegundos" dentro de ella! El símbolo (símbolo cero) significa lo que colocamos junto a retraso cuando lo llamamos. Aquí es cómo lo llamamos entonces. Si queríamos un retraso de 25 ms en algún lugar en nuestro programa simplemente escribimos

y el ensamblador reemplazará la en la macro con 25 y obtenemos nuestro retraso de ms de 25.

Por qué también puede escribir macros que tienen muchos más argumentos si quieres. En ese caso se usaría y y así sucesivamente. Luego al llamar a la función necesitará todos los argumentos correspondientes a éstos a las cosas en la macro.

¿Creo que ahora se puede ver cómo hacen el comando de "delay(20)" del lenguaje de Arduino derecha?

Ejercicio 2: agregar una macro en el programa y cambiar todas las subrutinas que llame a la macro en lugar de una subrutina de retardo. (¡ Nota! En uno de los incidentes tienes que buscar alrededor para averiguar lo que el retraso se supone que es! Deliberadamente dejé hacia fuera de las ldi milisegundos en este caso)

Artículos Relacionados

Tutorial de ensamblador AVR 11

Tutorial de ensamblador AVR 11

Bienvenido a Tutorial 11!En este breve tutorial, finalmente vamos a construir la primera parte de nuestro proyecto final.Lo primero que debes hacer es ir al último paso de este tutorial y ver el video. Luego vienen aquí. [pausa mientras haces eso...]
Tutorial de ensamblador AVR 1

Tutorial de ensamblador AVR 1

He decidido escribir una serie de tutoriales sobre cómo escribir programas del lenguaje ensamblador para el Atmega328p que es el microcontrolador utilizado en el Arduino. Si la gente sigue interesada voy a seguir poner a uno una semana o así hasta qu
Tutorial de ensamblador AVR 6

Tutorial de ensamblador AVR 6

Bienvenido a Tutorial 6!Tutorial de hoy será corto donde desarrollamos un método sencillo para comunicar datos entre uno atmega328p y otro con dos puertos conectan. Luego tomar los dados rodillo del Tutorial 4 y el analizador de registro de 5 Tutoria
Tutorial de ensamblador AVR 8

Tutorial de ensamblador AVR 8

Bienvenido a Tutorial 8!En este breve tutorial vamos a tomar un poco de diversión de introducir nuevos aspectos de la programación de lenguaje ensamblador para mostrar cómo mover nuestros componentes prototipos a un separado "" del circuito impr
Tutorial de ensamblador AVR 9

Tutorial de ensamblador AVR 9

Bienvenido a Tutorial 9.Hoy nos muestra cómo controlar un display de 7 segmentos y un display de 4 dígitos utilizando nuestro código de lenguaje ensamblador ATmega328P y AVR. En el curso de hacer esto que tendremos que hacer desvíos cómo utilizar la
Tutorial de ensamblador AVR 7

Tutorial de ensamblador AVR 7

Bienvenido a Tutorial 7!Hoy vamos a ver primero cómo limpiar un teclado y luego se muestra cómo utilizar los puertos de entrada analógicos para comunicarse con el teclado.Esto lo haremos utilizando como entrada de interrupciones y un solo cable. Se a
Tutorial de ensamblador AVR 10

Tutorial de ensamblador AVR 10

Bienvenido al Tutorial de 10!Lo siento que tomó tanto tiempo para salir esta próxima entrega, pero esta es una época bastante ajetreada del año. En cualquier caso, aquí está!Hemos recorrido un largo camino y probablemente ya eres lo suficientemente c
Tutorial de ensamblador AVR 5

Tutorial de ensamblador AVR 5

Hoy vamos a tomar un vistazo a los distintos lugares de la memoria en el microcontrolador Atmega328p y ver si podemos comprender mejor cómo se almacenan las cosas, donde se almacenan y cómo funcionan los punteros y tablas de búsqueda.El tutorial se s
Tutorial de ensamblador AVR 2

Tutorial de ensamblador AVR 2

Este tutorial es una continuación de "AVR Assembler Tutorial 1"Si no has ido por 1 Tutorial debe parar ahora y hacer que uno primero.En este tutorial vamos a continuar nuestro estudio de programación del lenguaje ensamblador de la atmega328p en
Tutorial de ensamblador AVR 3

Tutorial de ensamblador AVR 3

Bienvenido a tutorial número 3!Antes de empezar quiero hacer un punto filosófico. No tenga miedo de experimentar con los circuitos y el código que estamos construyendo en estos tutoriales. Cambiar los cables alrededor de añadir nuevos componentes, sa
Un enfoque avanzado de programación de Arduino y AVR

Un enfoque avanzado de programación de Arduino y AVR

Este instructable es obligada lectura para todo aquel que esté familiarizado con núcleo AVR virutas y Arduino.Bien, para ser más específicos, al leer el instructivo, usted será capaz de:1) saber la diferencia correcta entre el AVR y Arduino.2) progra
Placa de desarrollo para microcontrolador Attiny84

Placa de desarrollo para microcontrolador Attiny84

Se trata de una placa de desarrollo para microcontrolador Attiny84. Tha Attiny84 chip tiene 11 pines direccionables con el IDE de Arduino, 8k de memoria flash para el almacenamiento de programa y 512 bytes de RAM disponible para las variables de pila
La tortura de Raven, aguda

La tortura de Raven, aguda

este es un pequeño dispositivo que diseñé para el sencillo propósito de ser discretamente molesta. Espera una cantidad predeterminada de tiempo, y luego empieza a emitir pitidos agudos. Yo he programado mina para tomar ventaja de una propiedad intere
Cariño, encogi lo Arduino: pasar de Arduino a ATtiny y escribir el código en C de AVR puro

Cariño, encogi lo Arduino: pasar de Arduino a ATtiny y escribir el código en C de AVR puro

Arduino es una plataforma de software y de gran dura - pero con todas sus características también está un poco hinchado y a menudo necesita sólo una pequeña parte de todas las funciones. A veces el proyecto requiere dispositivos más pequeños y más ba