Tutorial de ensamblador AVR 1 (4 / 5 paso)

Paso 4: Hello.asm-línea línea

Para terminar este tutorial introductorio que pasaremos por el hello.asm programa línea por línea para ver cómo funciona.

Todo después de un punto y coma es ignorado por el ensamblador y por lo tanto, estas dos primeras líneas son simplemente "Comentarios" explicando lo que hace el programa.

Esta línea indica el ensamblador para incluir el archivo m328Pdef.inc que descargaste. Usted puede poner esto en un directorio de similares incluyen archivos y cambiar la línea anterior para señalar que hay.

LDI significa "carga inmediata" y dice el ensamblador y llevar un registro de trabajo, r16 en este caso, cargar un número binario en él, 0b00100000 en este caso. La 0b en el frente dice que el número está en binario. Si quisiéramos nos podríamos han elegido otra base, como hexadecimal. En ese caso nuestro número hubiera sido de 0 x 20 que es hexadecimal de 0b00100000. O podríamos haber utilizado 32 que es base 10 decimal para el mismo número.

Ejercicio 1: Intente cambiar el número en la línea superior a hexadecimal y luego a decimal en el código y comprobar si todavía funciona en cada caso.

Uso binario es más simple aunque debido a los puertos de forma y registros de trabajo. Hablaremos de los puertos y registros de la atmega328p en más detallan en el futuro tutoriales pero por ahora voy solo indicar que estamos utilizando r16 como nuestro sentido de "registro de trabajo" que sólo vamos a utilizarlo como una variable que nos guarde números en. Un "registro" es un conjunto de 8 bits. Es decir 8 puntos que pueden ser 0 o 1 ('off' o 'en'). Cuando carga el 0b00100000 número binario en el registro usando la línea de arriba simplemente hemos almacenado ese número en el registro r16.

Esta línea indica al compilador que copie el contenido de la r16 de registro en el registro DDRB. DDRB significa "Datos dirección registro B" y configura los "pins" en PortB. En el mapa de pinout para el 328p que se puede ver que hay 8 pines etiquetados PB7 PB0, PB1,.... Estos pernos representan los "pedacitos" de "PortB" y cuando carga el número binario 00100000 en el registro DDRB que estamos diciendo que queremos establecer PB0, PB1, PB2, PB3, PB4, PB6 y PB7 como pines de entrada ya que tienen 0's en ellos, y PB5 está configurado como un pin de salida ya que ponemos un 1 en ese lugar.

Ahora que hemos fijado las direcciones de las patillas ahora podemos establecer las tensiones sobre ellos. La línea de arriba copia el mismo número binario de nuestro almacenamiento registro r16 a PortB. Esto establece todas las clavijas de 0 voltios excepto pin PB5 alta que es de 5 volts.

Ejercicio 2: Tomar un enchufe digital multímetro, el cable negro a tierra (GND) y luego probar cada uno de los pasadores PB0 a través PB7 con el cable rojo. ¿Son los voltajes en cada uno de los pernos exactamente los correspondientes a poner 0b00100000 en PortB? Si hay alguno que no, ¿por qué crees que es? (ver el pin en el mapa)

Finalmente, la primera línea es una "etiqueta" que un lugar en el código de etiquetas. En este caso etiquetado ese lugar como "Inicio". La segunda línea dice "salto relativo a la etiqueta Inicio." El resultado neto es que el equipo se coloca en un bucle infinito que sólo mantiene ciclismo vuelta a empezar. Necesitamos esto porque no podemos tener el programa a terminar, o caerse de un acantilado, el programa tiene que seguir corriendo solo en fin de que la luz permanezca encendida.

Ejercicio 3: Eliminar las dos líneas anteriores su código para que el programa se cae de un acantilado. ¿Qué pasa? Debe ver algo que parece el tradicional programa de "parpadear" utilizado por Arduino como su "¡ Hola mundo!". ¿Por qué crees que actúa de esta manera? (Pensar sobre lo que debe suceder cuando el programa se cae de un acantilado...)

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 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 4

Tutorial de ensamblador AVR 4

Bienvenido a tutorial número 4!En este tutorial vamos construir un circuito que simulará el balanceo de dos dados. Entonces vamos primero a escribir un programa de fuerza bruta que hace el trabajo. A continuación simplificamos ese programa de varias
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