Tabla de contenido
Las compuertas lógicas más comunes se encuentran disponibles en el lenguaje C y estas hacen su función lógica bit a bit
~
(alt + 126) el operador NOT bitwise se encarga de negar todo los bits del registro o dato//Not bitwise
dato = 0b1001;
dato = ~0b1001;
RES = 0b0110;
|
(alt + 124) el operador OR bitwise se encarga de hacer una comparación de bits, si el dato o la or tiene un “1” regresa un “1” como resultado, regresa un “0” como resultado cuando todos son 0//OR Bitwise
dato = 0b10010101
| 0b11110000;
dato = 0b11110101;
AND &
(alt + 38) el operador AND bitwise se encarga de hacer una comparación de bits, si el dato o la or tiene un “1” regresa un “1” como resultado, regresa un “0” como resultado cuando todos son 0
XOR ^
(alt + 94) el operador EXOR bitwise se encarga de regresar un “1” si es que uno de los dos bits son 1
//AND Bitwise
dato = 0b10010101
& 0b11110000;
dato = 0b10010000;
//XOR Bitwise
dato = 0b10010101
^ 0b11110000;
dato = 0b01100101;
Las mascaras de bit son necesarias en el momento que se quiere manipular un solo bit de todo el registro al usar PORTD = (1 << PORTD0);
estas encendiendo solo el bit 0 y apagando todos los demás, para evitar esto se utilizan las siguientes operadores lógicos bit a bit (bitwise)
Mascara con compuerta OR “S1” siempre es “1” sin importar el valor de “A”
Mascara con compuerta OR “S2” depende el valor de la entrada “B”
Mascara con compuerta AND “S4” siempre es “0” sin importar el valor de “D”
Mascara con compuerta AND “S3” depende el valor de la entrada “C”
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
PORTX | X | X | X | X | X | X | X | X |
OR | 1 | 1 | 1 | 1 | 0 | 0 | 0 | |
Resultado | 1 | 1 | 1 | 1 | X | X | X | X |
PORTX = XXXXXXXX -> PORTX = PORTX | 0b11110000;
→ PORTX = 1111XXXX
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
PORTX | X | X | X | X | X | X | X | X |
AND & | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
Resultado | X | X | X | X | 0 | 0 | 0 | 0 |
PORTX = XXXXXXX -> PORTX = PORTX & 0b11110000;
→ PORTX = XXXX0000
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|
PORTX | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
XOR ^ | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
Resultado | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
PORTX = PORTX ^ 0b11110000;
→ PORTX = 00110011
//leds_init
//(1<<0)
//0bXXXXXXX = 0bXXXXXXX | 0b0000001 = 0bXXXXXX1
Arduino UNO/NANO
PD0 -> RX
PD1 -> TX
//76543210
DDRD = 0b001000**00;**
DDRD = 0bXX1XXXXX;
DDRD = DDRD | (0b00100000**);**
DDRD |= (0b00100000**);**
DDRD |= (1<<5**); //set a bit**
Arduino UNO/NANO
PB6 -> XTAL
PB7 -> XTAL
//Declarar el bit 4 del puerto B como entrada
//765**4**3210
DDRB = 0b**00**000000;
DDRB = 0bXX0XXXXX;
DDRB = DDRB & (0b11101111);
DDRB &= (0b11101111); -> (1<<5) = 0b00100000
DDRB &= ~(1<<5); //clear a bit
📚 Tabla de contenido
🗓️ Semana 4 - 📗 Fundamentos de Programación para Microcontroladores
Diagramas de Flujo y Pseudocódigos
Introducción Lenguaje C para microcontroladores
Introducción Lenguaje Assembler para microcontroladores
Ejecución secuencial de instrucciones en un Microcontrolador
Operadores de desplazamiento (bit shifting)
Práctica N.º02 - Gestión Secuencial de Salidas
🗓️ Semana 5 - 📗 Lectura de entradas y estructuras condicionales
Operadores lógicos (bit a bit)
Creación y Uso de Funciones en Microcontroladores
Configuración de entradas y puerto paralelo
Sentencias condicionales con operadores lógicos
Práctica N.º03 - Decodificación de Entradas Binarias
🗓️ Semana 6 - 📗 Estructuras iterativas
Control de display 7 segmentos
Actividad Fundamental N.º02 - Análisis de arquitectura de microprocesadores
🗓️ Semana 7 - 📗Motores de DC y asesorías de medio curso
Sentencias condicionales y lectura de entradas (1)
Índice programa académico
📕 Fase 1. Introducción a los Microcontroladores y Microprocesadores
📗 Fase 2. Puertos de Entrada y Salida
📙 Fase 3. Periféricos externos