Tutorial de ensamblador AVR 5 (5 / 8 paso)

Paso 5: Parte 2: puertas lógicas

Hemos pasado este completo tutorial hablando de direcciones de memoria de programa y registros y todo eso. Ahora me gustaría tomar unos minutos y profundizar por lo que está sucediendo en estas direcciones. En otras palabras, ¿cómo almacenar un byte de datos en alguna dirección? ¿Lo que está sucediendo allí? ¿Qué es un "registro"? Es decir, ¿qué es el circuito eléctrico que puedo construir que va a almacenar un número de 8 bits como 0 x 03 o un 0b10101011 por ejemplo?

Por ahora han notado que todas las instrucciones en el conjunto de instrucciones pueden reducirse a dos tipos. La primera es almacenar, recuperar o copiar bits de y entre los registros. El segundo tipo es realizar operaciones lógicas sobre los datos. Por ejemplo adición, restando, ANDing, XORing, ORing, etc.. Eso es realmente todo lo que está pasando aquí. Diversas combinaciones de almacenar números y luego realizar operaciones matemáticas en esos números es lo que resulta en todos los equipos de cosas interesantes y microcontroladores pueden hacer. Es bastante sorprendente cuando se piensa en él.

En la parte 2 de este tutorial vamos a descender un paso final y mira uno de los componentes más importantes de este proceso. Primero vamos a construir un cierto tipo de "puerta lógica" llamada una puerta NOR y luego vamos a utilizar ni puertas para construir un Latch SR.

Echa un vistazo en la imagen de las puertas de la lógica que he dado anteriormente. Son diagramas esquemáticos que denotan una operación matemática determinada. Recuerda que este tipo de operaciones es todo lo que tenemos que hacer las instrucciones de un conjunto de instrucciones. Cuando estábamos discutiendo SREG antes de ver que todas las banderas dependían de algún cálculo de lógica usando las brocas en nuestros registros y la realización de OR, AND, etc. en ellos. Si nos fijamos en el diagrama de ver que cada una de estas "puertas lógicas" tiene dos entradas (que son esencialmente los cables) y una salida (también un alambre). Así que si usted tenía una puerta y por ejemplo, ves que si pongo 5 V en cada uno de los cables de entrada, entonces voy a llegar 5V en la salida. Por otra parte, cualquier otra combinación de voltajes de entrada (0 o 1) daría lugar a 0V a la salida. Semejantemente para las otras puertas de la lógica. Así que estos son una manera de tomar decisiones y realizar cálculos en los bits en nuestros registros, al igual que los cálculos que se realizan por la CPU y averiguar qué banderas conseguirán encendidos en SREG.

Así que echemos un vistazo a la puerta NOR. La puerta NOR es simplemente una puerta OR con una N delante de ella. Significa la "tabla de verdad" de la puerta OR y tomar el complemento de todas las respuestas. Así que un 1 se convierte en un 0 y un 0 se convierte en un 1. Cuenta de algo en particular. La única manera que puedo conseguir 5V por el otro lado de una puerta NOR es si no hay voltios desde cualquier entrada! Esto es clase de fresco. Es por eso que vamos a utilizar este bebé para hacer algo incluso más fresco, un Latch SR.

Un Latch SR se construye tomando dos puertas NOR y establecer un circuito de retroalimentación para que la salida de uno se convierte en una de las entradas para el otro y viceversa. Mira mi segundo diagrama mostrando un Latch SR. Vea si usted puede ver por qué la lógica es lo que se muestra. Por ejemplo, decir que pongo 5V R y 0V en el S. Bueno ya sabes cómo funciona una puerta NOR, ya que hay 5V en R, sabemos que la salida Q será 0V porque la única manera de obtener una señal de una puerta NOR es si ambas entradas están. Eso significa que 0V está saliendo de una Q y alimentadas en S. Por lo que la otra puerta ni tiene 0V de S, y también 0V el circuito de retroalimentación. Por lo tanto, pondrá la otra salida Q a 5V. ¿Así que ya ves cómo funciona correcto?

La razón por la que se llama un Latch SR es que S está parado para "Set" y R está parado para "Reset". Decir conectar un LED1 LED2 otro a Q y Q y empiece con S a 1 (es decir, a 5V) y R se establece en 0 (es decir, 0V), entonces el LED1 estará en y LED2 estará apagado. Entonces Supongamos que libero S por lo que lo vuelve a 0V. Todavía tenemos 5V en Q porque R es 0V y los comentarios de Q también son 0V. Pero ahora S es en 0V en vez de 5V ¿Qué cambiará? ¡ Nada! Nosotros podemos mantener conmutación S entre 0V y 5V y nada va a pasar. El LED en el Q permanece en y el LED en el Q se mantendrá apagada. Hemos "creado" el pestillo a. (Q es medio iluminado en)

Ahora ¿qué pasa si ponemos 5V en R? Pues desde 0V proviene de los comentarios de Q y 5V proviene de R, la puerta NOR se apagará y Q se apaga. Entonces pienso de Q será 0V y puesto que S es 0V vemos que se enciende el otro LED en Q ! Ahora convencerse de que si nos seguimos cambiando R ahora nada va a cambiar el diodo de Q permanecerá encendido sin importar lo que hacemos a R. La única manera de apagarla es push S otra vez. El resultado neto de este SR-Latch es que S empujando uno de los LED se encenderá y permanecerá encendida aún después de que dejas S volver a 0V, el seguro sigue siendo "set". La única manera de que baje es pulsar R que apaga y enciende el otro. Luego puede dejar R volver a 0V y el cierre se mantendrá "reset".

Tan un Latch SR es una forma de almacenar un bit de datos. Si se define para ser un "1" cuando el LED Q y un "0" cuando el LED Q es el tiene efectivamente almacena un solo bit. Puede enviar un pulso de voltaje para el pestillo y que 1 y entonces usted puede dejarlo ser y seguirá siendo un 1. Luego enviar otro pulso de voltaje a R volverá a 0 y seguirá siendo así de esa manera.

Este es el elemento básico de almacenamiento en la computadora. Hay un poco más sofisticados métodos de almacenamiento de información como flip-flop D seguros, pero todos se hacen de un latch SR con algunas características añadidas como una entrada de señal de reloj que establece y restablece el cierre según el pulso de reloj y otra puerta o dos en una de las entradas. Pero la unidad básica es el SR-seguro.

Podríamos ir más lejos en la teoría y muestran cómo puede tomar 8 de estas trabas y hacer un "registro de 8 bits" fuera de ellos. Es decir, puede almacenar 8 bits, uno en cada uno de los 8 SR-seguros. Nuestros registros de trabajo de propósito general en el atmega328p son esencialmente una colección de SR-seguros. De hecho, algún día yo tome un protoboard y construir 8 SR-cierres como los que construyen aquí en la parte 2 de este tutorial y luego engancharlos para hacer un registro. Podría ser divertido para realizar operaciones lógicas y cosas así. Si alguna vez construir así un registro creo que se el nombre "r16" :)

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