Atmel Inicio 4: Dos Blinky, interruptores, resistencias pull-up y poco Ops (3 / 11 paso)

Paso 3: Operaciones bit a bit

Puertos con mezcla de entradas y salidas, como en la tabla 1, a menudo requieren enmascarar operaciones que consisten en una máscara y una operación bit a bit [16]. El enmascaramiento permite seleccionar bits individuales o un subconjunto de bits de puerto para la prueba. Las operaciones bit a bit permiten las operaciones de enmascaramiento. De esta manera, los bits de entrada y salidos de un puerto de IO pueden ser separados y manipulados.

Considere unos pocos ejemplos ilustrativos que se utilizará con dos Blinky. Estos ejemplos escribir y manipular los bits de una variable de 8 bits dado por un = rstuvwxy donde las letras r, s, t,..., y son bits con valores de 0 o 1. Por ejemplo, A = 10001000 significa que r = 1 y v = 1 y el resto son cero. Sin embargo, estamos trabajando con el general A y no se han asignado valores a r, s,..., y. En notación de tipo C, se puede escribir A = '0brstuvwxy' donde 0b dice que el compilador el número es binario; sin embargo, esta notación no funcionará en un programa.

1. bit a bit 'y' representado por el símbolo '&'

Considerar la A variable de 8 bits = rstuvwxy. Supongamos que queremos comprobar el valor de bit #1 (no bit #0). ¿Es x = 0 o es x = 1? Así definimos la máscara = 00000010. Nota el 1 valor en la posición de la broca #1 que corresponde a la posición de la broca en A variable que se desea comprobar. La palabra máscara pretende implica que algunos bits se eliminará de la consideración y otros destacan para su consideración. Ahora, consideremos el poco a poco lógica y operación representan por '&'. Tener en cuenta

Prueba = A & máscara.

La tabla 2 muestra los bits de A, la máscara y el resultado de un anuncio de y. poco a poco la columna derecha de la tabla representa bit #0, que es también el menos significativo bit.

Tabla 2: Ejemplo del AND bit a bit entre dos variables de 8 bits

A variable

r

s

t

u

v

w

x

y

Máscara

0

0

0

0

0

0

1

0

Prueba = A & la máscara

0

0

0

0

0

0

x

0

El operador '&' es esencialmente multiplicación de poco a poco con las siguientes definiciones de 1 & 1 = 1, 0 y 1 = 0, 1 y 0 = 0, 0 y 0 = 0, que puede considerarse equivalente a álgebra booleana o lógica aristotélica con 1 = True y 0 = False. Los dos primeros de los productos (en concreto, 1 & 1 = 1, 0, 1 = 0) muestra la razón x y 1 = x en la tabla 2. Esta es la propiedad que tenemos para enmascarar con el '&' desde todos los bits en la 'Variable' se asigna a cero excepto aquellos donde la máscara tiene un 1. Ver referencia [16] para más información sobre las operaciones bit a bit. Ahora podemos preguntar si 'Test' es igual a cero. Si prueba = 0 entonces x debe ser cero.

2. bit a bit OR representado por la línea vertical ' |'

Una vez más, considerar la variable A = rstuvwxy donde están..., y representan bits con valores de 0 ó 1. Supongo que esta vez queremos Asegúrese de que bits #0 y #4 tienen el valor de 1 sin cambiar ninguno de los otros en el A. Es decir, queremos establecer y = 1 y = 1. Para ello, consideremos una máscara con cero todos los bits excepto #0 y #4.

Mask2 = 00010001

La operación de enmascaramiento en este caso será la operación OR de bit por bit representada por la línea vertical. El o tiene el efecto siguiente en bits: 1 | 1 = 1, 0 | 1 = 1, 1 | 0 = 1, 0 | 0 = 0. O puede verse similar a la o en el sistema de la lógica aristotélica con 1 = True y 0 = False. La tabla 3 muestra la operación de un | Mask2.

Tabla 3: Ejemplo de la operación OR bit a bit entre dos números de 8 bits

A Variable de 8 bits

r

s

t

u

v

w

x

y

Mask2

0

0

0

1

0

0

0

1

A | Mask2

r

s

t

1

v

w

x

1

Las dos definiciones de la OR de 1 | 0 = 1, 0 | 0 = 0 (es decir, equivalente x | 0 = x) muestran que los bits de máscara en el cuadro 3 que son cero no cambian los bits correspondientes en la Variable (ver bits r-t, v-x) al calcular Variable| Mask2 en la fila inferior. Pero la OR bit a bit sin duda produce un 1 en el bit de resultado donde la máscara tiene un 1 como para usted y y en la tabla.

Por último entonces, si le asignamos el resultado de ' A | Mask2' a una (usando el operador de asignación de C y C++ de '='), es decir, A = A | Mask2, entonces llegaremos el resultado deseado de bits de valor 0 y 4 con el valor uno.

3. nivel de bit se representan por élite ~

Una vez más, considerar la variable A = rstuvwxy donde están..., y representan bits con valores de 0 ó 1. Supongo que esta vez queremos Asegúrese de que bits #0 y #4 tienen el valor de 0 sin cambiar ninguno de los otros en el A. Es decir, queremos establecer y = 0 y = 0. Para ello, consideremos una máscara con cero todos los bits excepto #0 y #4.

Mask3 = 00010001

convenientemente que pasa a ser el mismo que Mask2 en el ejemplo anterior. Podría ser más fácil de ver en la tabla 4 para ver lo que debe suceder.

Tabla 4: Ejemplo del AND bit a bit entre dos números de 8 bits

Variable de 8 bits

r

s

t

u

v

w

x

y

Mask3

0

0

0

1

0

0

0

1

~ Mask3

1

1

1

0

1

1

1

0

Variable & ~ Mask3

r

s

t

0

v

w

x

0

Sabemos por los ejemplos anteriores, OR se puede utilizar para cambiar un poco a un 1 y eso y se puede utilizar para cambiar un poco a un cero. Así que parece que necesitamos la y. Como se muestra en la tabla 4, Mask3 tiene un 1 en esos lugares que el resultado tiene un 0. Para combinar el Mask3 con la y, tenemos una lluvia de ideas y darse cuenta de que sólo tenemos que voltear los bits en Mask3 y luego aplicar la y.

El no lógico o negación tiene la siguiente definición ~ 0 = 1, ~ 1 = 0. Así que ahora la broca posiciones en ~ Mask3 (ver tabla 4) con un 0 son las posiciones de la variable A que debe ajustarse a cero. Utilizando los resultados para el primer ejemplo y el hecho de y & 0 = 0 (etc) llegamos a la línea inferior de la tabla 4. Si almacenamos el resultado en variable A según

A = A & ~ Mask3

entonces hemos terminado nuestra tarea de poco ajuste #0 y #4 a cero en el número original. Aquí están usando el '=' como una asignación de C y C++.

Artículos Relacionados

Atmel Inicio 3: Binky uno – puerto, PIN, DDR y LED

Atmel Inicio 3: Binky uno – puerto, PIN, DDR y LED

M. A. Parker c2015Blinky, el LED que parpadea, se muestra cómo utilizar el lenguaje C y C++ en el estudio de Atmel (AS) para controlar el Atmel MCU puertos de entrada y salida (es decir, IO) y revela la vida 'secreta' de los registros del puerto de A
Atmel Inicio 5: Lifeline

Atmel Inicio 5: Lifeline

M. A. Parker c2015La vida es un circuito simple basado en el microcontrolador de Atmel ATTiny2313A unidad (MCU) que funciona como una fuente de reloj sustituto para un objetivo MCU inoperante de fusibles reloj incorrecto. El proyecto, destinado a ser
Atmel Inicio 2: Fusibles y circuitos de microcontroladores

Atmel Inicio 2: Fusibles y circuitos de microcontroladores

M. A. Parker c2015Fusibles y circuitos crea un circuito simple pero importante en protoboard de un experimentador que se utilizará como plataforma básica para muchos proyectos de microcontrolador y los parámetros del microcontrolador (es decir, fusib
Powered USB interruptor de badajo - HW muy poco necesaria!

Powered USB interruptor de badajo - HW muy poco necesaria!

Hi all!¡ Gracias por echar un vistazo en mi instructable!  Si por casualidad usted ha visto mi original clap-clap / Plas Plas circuito instructable.  Este circuito de la chapaleta es muy diferente de mi original, que no requiere absolutamente ninguna
Atmel arranque 1: Estudio de Atmel y programador

Atmel arranque 1: Estudio de Atmel y programador

M. A. Parker c2015Estudio instalación de Atmel (AS) y un programador representan los primeros pasos [0] en el camino al uso de una unidad individual de Atmel AVR microcontrolador MCU [1] en contraposición a la MCU-en-una-junta como Arduino [2]. Aquí
Construcción de su propio miniordenador de compañero Micromite

Construcción de su propio miniordenador de compañero Micromite

La Minicomputadora de compañero Micromite es la próxima generación de la serie de Mini computadora de bolsillo.Es la combinación de dos sistemas de código abierto, el software Micromite, una creación de PIC32 por Geoff Graham y el propulsor de la par
Arduino Nano: Con resistencia de pull-up de Visuino

Arduino Nano: Con resistencia de pull-up de Visuino

Una de las características más infrautilizadas de Arduino son las Resistencias pull-up de los pines digitales. Todos sabemos que están ahí, y todavía nos seguimos olvidando de que podemos usarlos y seguir agregando resistores externos cuando no son n
Lectura de interruptores con ATtiny2313

Lectura de interruptores con ATtiny2313

ha habido varios tratar de Instructables con salidas del ATtiny2313 y similares dispositivos del AVR. Por ejemplo,. Trabajando en el último de ellos desde el verdadero Elliot, que demostró cómo controlar motores paso a paso, encontré que sería muy út
Arduino programable constante actual potencia resistencia carga ficticia

Arduino programable constante actual potencia resistencia carga ficticia

Da gusto ver que han llegado a esta pagina para aprender a construir una carga ficticia de corriente continua constante programable. Esta carga le permitirá dibujar un conjunto actual de cualquier fuente. Esta carga también se puede definir a una res
Interruptor controlado de SORBO y soplo de Arduino

Interruptor controlado de SORBO y soplo de Arduino

Arduino la serie de microcontroladores se abre un mundo enorme de posibilidades para los programadores novatos y aficionados! Con sistemas de libre desarrollo y tutoriales y una amplia gama de funciones de la biblioteca y muestra bocetos, casi cualqu
Pantallas de inicio

Pantallas de inicio

Nota: por fin tengo mi cámara averiguado por lo que solo debe haber 1 o 2 imágenes borrosas. En con el Instructable!Pantallas LCD es una de las mejores cosas para añadir a cualquier proyecto ahora. Usted puede utilizarlos para mostrar cosas de la vel
Solar Powered corazón Blinky LED colgante joyas

Solar Powered corazón Blinky LED colgante joyas

Este instructable es solar powered corazón con un pulso rojo LED. Mide aproximadamente 2" de 1.25", incluyendo la ficha USB. Tiene un agujero por la parte superior de la Junta, facilitando la suspensión. Lo usa como un collar, pendientes, bono e
R/C control interruptor de abejones

R/C control interruptor de abejones

Aunque hay muchos buenos circuitos disponibles en internet para proyectos similares, tuve un problema dedicado a resolver. La mayoría de los circuitos disponibles enciende sus salidas en posición de palo media (50%). Mi abejones todos utilizan seis c
Hacer una resistencia Variable con 1 millón

Hacer una resistencia Variable con 1 millón

la semana pasada en mi colegio de física laboratorio tenemos que utilizar estas 'cajas' de resistencia variable. Tenían dos entradas y seis diales y podrían generar 1 millón resistencias diferentes en las dos entradas. Yo sabía que tenía que tener un