Tutorial de ensamblador AVR 7 (9 / 12 paso)

Paso 9: Código y video para la versión 1

He adjuntado mi código para esta primera versión del controlador del teclado. En éste necesitará pulsar la tecla y luego presione el botón para causar el ADC leer la entrada desde el teclado. Lo que sería más bien no tenemos es ningún botón pero en cambio la señal para hacer la conversión viene de la pulsación propia.

Ejercicio 3: Montar y subir este código y probarlo. Que tenga que cambiar los diversos umbrales de conversión para corresponder a sus tensiones de pulsación de tecla ya que probablemente difieren de la mía. ¿Qué ocurre si se intenta utilizar una entrada desde el teclado para el ADC0 y el pin de interrupción externa en vez de a través de un botón?

También le adjunto un video del funcionamiento de esta primera versión de nuestro controlador de pulsación de tecla.

Te darás cuenta que en mi código es una sección de inicializar el puntero de pila. Existen diversos registros que nosotros podemos querer push y pop de la pila cuando estamos manipulando variables y lo que no y también hay registros de que nosotros podemos querer guardar y restaurar más adelante. Por ejemplo, SREG es un registro que no se conserva a través de interrupciones, por lo que las banderas diferentes que son y autorizadas como resultado de las operaciones pueden cambiarse si una interrupción se produce en medio de algo. Así que es mejor si usted empuje SREG a la pila en el inicio de un manejador de interrupción y entonces salte nuevo al final del manejador de interrupción. He puesto en el código para mostrar cómo se inicializa y anticipar lo que necesitaremos más tarde pero ya no nos importa qué pasa con SREG durante interrupciones en nuestro código que no usar la pila para ello.

También aviso que he utilizado el turno para establecer varios bits en los registros al inicializar. Por ejemplo, en la línea de:

 ldi temp,(1<<ISC01)|(1<<ISC00) ; comment to fix Instructables formating issues: >>>> sts EICRA,temp 

El "<<" comando en la primera línea del código anterior es una operación de cambio. Básicamente toma el número binario 1, que es 0b00000001 y turnos que se fue por la cantidad de la ISC01 número. Esta es la posición de la broca, denominada ISC01 en el registro EICRA. Ya que ISC01 es de tipo bit 1, el número 1 se desplaza a la izquierda 1 posición para convertirse en 0b00000010. Del mismo modo es el segundo, ISC00, bit 0 de EICRA y así el cambio de la número 1 es posiciones cero a la izquierda. Si mira toma otra mirar el archivo m328Pdef.inc que descargaste en el primer tutorial y han estado utilizando evrr desde, verás que es sólo una larga lista de declaraciones de ".equ". Encontrará que ISC01 es igual a 1. El ensamblador reemplaza cada instancia del mismo con 1 antes incluso de montar nada. Son sólo nombres para los bits de registro para ayudarnos a los seres humanos leer y escribir código. Ahora, la línea vertical entre las operaciones de cambio de dos anteriores es un lógico "o" de la operación. Aquí está la ecuación:

0b00000010 | 0b00000001 = 0b00000011

y esto es lo que carga (usando "IBP") en la temp. El uso de gente de razón este método para cargar valores en un registro es que le permite a uno utilizar el nombre de la broca en lugar de sólo un número y esto hace que el código es mucho más fácil de leer.

Hay también dos otras técnicas que hemos utilizado. Se utilizan las instrucciones "ori" y "andi". Estos nos permiten establecer y borrar bits respectivamente sin cambiar ninguno de los otros bits en un registro. Por ejemplo, al utilizar

 ori temp,(1<ADC0D) ; comment to fix formating: > 

Este "o" temp s con 0b00000001 que pone un 1 en el bit de cero y deja el resto sin cambios. También cuando escribimos

 andi temp,0b11111110 

Esto cambia el bit cero de la temperatura a 0 y deja el resto sin cambios.

Ejercicio 4: hay que ir a través del código y asegúrese de comprender cada línea. Usted puede encontrar interesantes encontrar mejores métodos para hacer las cosas y escribir un programa mejor. Hay cien formas de cosas de código y confío bastante en que usted puede encontrar una manera mucho mejor que la mía. También se pueden encontrar omisiones y errores (cielo prohibido!). En ese caso seguro que me gustaría escuchar acerca de ellos así que pueden ser fijo.

Bueno, ahora vamos a ver si podemos deshacernos de ese botón superfluo...

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