El documento describe diferentes modalidades de sistemas digitales y microelectrónica, incluyendo encendido y apagado, rotación de bits, traslado de bits, interruptores y conmutadores. También presenta ejemplos de código para rotar bits, mover bits, y controlar LEDs y lámparas usando interruptores.
2. MODALIDAD
Encendido y Apagado.
Rotación de bits.
Traslado de bits.
Interruptores y Switchs.
Rebotes
Contadores
Luis David Narváez
3. RETO:
Semáforos en una intersección, incluido
Stop y Go para Peatones
Enunciado: Realizar una emulación de dos
semáforos en una intersección mediante el
Encendido y Apagado de Leds, con indicadores de
stop y go para peatones.
ENCENDIDO Y APAGADO
Luis David Narváez
4. Para rotar los bits a la izquierda empleamos las
funciones:
rotate_left( adress, bytes);
En donde address puede ser un identificador de un
array o la dirección a un byte o a una estructura,
bytes es el número de bytes implicados en la
rotación.
Ejemplo: var = 0x40;
rotate_left(&var,1); // var=0x80
ROTACIÓN DE BITS
Luis David Narváez
5. TRASLADO DE BITS
La misma explicación es válida para:
rotate_right( adress, bytes)
Otra forma de realizar el mismo efecto es empleando el
operador
desplazamiento (>> derecha, << izquierda)
Ejemplos: var=0x40;
var=var<<n // n es el número de bits a desplazar
Luis David Narváez
6. Enunciado: Se trata de hacer encender 8 LEDs de
manera consecutiva, sin que permanezcan
encendidos dos de ellos simultáneamente. Los LEDs
están conectados al PORTB<RB7:RB0>, y al
PORTD <RD7:RD0>.
PRÁCTICA
Luis David Narváez
10. ENTRADAS DE DATOS
Los dispositivos de entrada de datos encontramos con
frecuencia en sensores de alarmas (magnéticos, de
movimiento, infrarrojos, etc.), sensores digitales
industriales (sensores digitales de proximidad, finales de
carrera, pulsadores de marcha y paro de motores, etc.).
Rebotes en un pulsador
El problema en la utilización de estos dispositivos son los
rebotes que aparecen en el momento en que cambian de
posición, cuya duración depende de la fuerza con que se
presione este dispositivo, y a su estructura interna.
Luis David Narváez
12. ELIMINAR REBOTES
Para eliminar este problema se suele realizar
por dos medios:
Hardware mediante el empleo de un flip-flop, un
condensador, etc.
Software utilizando los retardos de cerca de
10ms que es lo que normalmente una persona
tarda en presionar y soltar una tecla.
Luis David Narváez
13. Enunciado:
Se desea controlar una lámpara desde dos puntos
diferentes por medio de 2 interruptores. La
lámpara está conectada al RB0 y los interruptores
a RA0 y RA1
Luis David Narváez
PRÁCTICA
14. DESARROLLO
Como podemos observar en el circuito, cuando los
interruptores están abiertos introducen un “0L”
(conectados a través de resistencias pull-down). De
acuerdo a las condiciones del enunciado, la lámpara
debe funcionar de acuerdo a la siguiente tabla de
verdad:
S1 (RA1 S0 (RA0)
SALIDA
(RB0)
Observaciones
0
0
1
1
0
1
0
1
0
1
1
0
Apagado
Encendido
Encendido
Apagado
Luis David Narváez
15. DESARROLLO
Como se mencionó anteriormente, en lenguaje C,
para realizar la lectura de un puerto se utiliza la
función
var= input_port_y ()
// Pone en var el valor de los pines del port_y
Según analizamos anteriormente, la sentencia case es
la herramienta más indicada a utilizarse en este caso.
Luis David Narváez