2. MODALIDAD
Encendido y Apagado.
Rotación de bits.
Traslado de bits.
Interruptores y Switchs.
Rebotes
Contadores
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
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.
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
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
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
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
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>.
Luis David Narváez
9. RETO:
Enunciado:
Encender secuencialmente, a la izquierda dos (2) a
la vez, los 8 LEDs conectados al PORTB con un
retardo de 500ms. Y al mismo tiempo a la
izquierda tres (3) a la vez, l 8 LEDs conectados al
PORTD con un retardo de 1s.
RETO:
Enunciado:
Encender secuencialmente, a la izquierda dos (2) a
la vez, los 8 LEDs conectados al PORTB con un
retardo de 500ms. Y al mismo tiempo a la
izquierda tres (3) a la vez, l 8 LEDs conectados al
PORTD con un retardo de 1s.
Luis David Narváez
10. RETO:
Enunciado:
Realizar el juego de luces del auto fantástico con
8 LEDs conectados al PORTB, con un retardo de
50ms.
RETO:
Enunciado:
Realizar el juego de luces del auto fantástico con
8 LEDs conectados al PORTB, con un retardo de
50ms.
Luis David Narváez
12. 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.
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
14. 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.
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
15. 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
PRÁCTICA
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
16. 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:
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
17. 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.
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
19. Enunciado:
Realizar un programa que permita visualizar, el
estado (on/off) de 5 switchs conectados en el
puerto B (<RB4:0>), mediante 5 diodos LED
conectados en el puerto D (<RD4:0>). La
conexión de los switchs se realizará empleando
resistencias pull-up, de tal forma que, cuando un
switch esté abierto el microcontrolador reciba un
“1L”. En esta posición el LED correspondiente
estará apagado.
PRÁCTICA
Enunciado:
Realizar un programa que permita visualizar, el
estado (on/off) de 5 switchs conectados en el
puerto B (<RB4:0>), mediante 5 diodos LED
conectados en el puerto D (<RD4:0>). La
conexión de los switchs se realizará empleando
resistencias pull-up, de tal forma que, cuando un
switch esté abierto el microcontrolador reciba un
“1L”. En esta posición el LED correspondiente
estará apagado.
Luis David Narváez
20. DESARROLLO
En este circuito, los switchs, al estar en posición OFF
(abiertos), sus pines están conectados a través de la
resistencia de 10KΩ a 5V, dando un estado lógico alto
(1L), en esa posición el LED correspondiente debe estar
apagado, entonces se requiere invertir el valor leído en el
puerto B para sacar un estado lógico bajo (0L) que
apague el LED.
La misma lógica se aplicará en la posición ON (cerrado).
En este circuito, los switchs, al estar en posición OFF
(abiertos), sus pines están conectados a través de la
resistencia de 10KΩ a 5V, dando un estado lógico alto
(1L), en esa posición el LED correspondiente debe estar
apagado, entonces se requiere invertir el valor leído en el
puerto B para sacar un estado lógico bajo (0L) que
apague el LED.
La misma lógica se aplicará en la posición ON (cerrado).
Luis David Narváez
22. Enunciado:
Se desea realizar un programa que cuente los
pulsos provenientes de un pulsador
(CONTADOR) conectado a RD1 y los visualice en
forma binaria en LEDs conectados al PORTB. El
número máximo de conteo será 12, momento en
el cual se detiene y activa una señal visual (LED) o
sonara (Zumbador, conectado al RD2) por 5 veces.
El reinicio del conteo se realiza presionando la
tecla REINICIO conectada al pin RD0
PRÁCTICA
Enunciado:
Se desea realizar un programa que cuente los
pulsos provenientes de un pulsador
(CONTADOR) conectado a RD1 y los visualice en
forma binaria en LEDs conectados al PORTB. El
número máximo de conteo será 12, momento en
el cual se detiene y activa una señal visual (LED) o
sonara (Zumbador, conectado al RD2) por 5 veces.
El reinicio del conteo se realiza presionando la
tecla REINICIO conectada al pin RD0
Luis David Narváez
23. DESARROLLO
En este caso vamos a utilizar las funciones de
verificación del estado de un pin del puerto,
If (bit_test(var,3) || !bit_test(var,1)) // o
el bit 3 de var es 1 o el bit 1 es 0.
El mismo efecto se tiene si se emplea
if(input(pin_x) || !input(pin_y))
Para el incremento utilizaremos:
var++ // equivale a var=var+1
En este caso vamos a utilizar las funciones de
verificación del estado de un pin del puerto,
If (bit_test(var,3) || !bit_test(var,1)) // o
el bit 3 de var es 1 o el bit 1 es 0.
El mismo efecto se tiene si se emplea
if(input(pin_x) || !input(pin_y))
Para el incremento utilizaremos:
var++ // equivale a var=var+1
Luis David Narváez
24. DESARROLLO
El programa se ha realizado de tal forma que el
incremento en el conteo se realiza solo si se suelta
la tecla de conteo.
Además se han utilizado unos pequeños retardos
para eliminar los rebotes.
Otra situación importante que hay que remarcar es
que el reinicio se sucede únicamente si el contador
ha llegado al valor máximo (12 decimal).
Luis David Narváez
El programa se ha realizado de tal forma que el
incremento en el conteo se realiza solo si se suelta
la tecla de conteo.
Además se han utilizado unos pequeños retardos
para eliminar los rebotes.
Otra situación importante que hay que remarcar es
que el reinicio se sucede únicamente si el contador
ha llegado al valor máximo (12 decimal).
26. RETO:
Enunciado:
Realizar un contador binario tal que, con un
pulsador cuente en forma ascendente hasta llegar
a 255(Puede ser hasta 25 por pruebas) y luego
sea descendente. Un led conectado en RA3 se
encenderá cuando el contador este al máximo o
al mínimo (0 y 255).
RETO:
Enunciado:
Realizar un contador binario tal que, con un
pulsador cuente en forma ascendente hasta llegar
a 255(Puede ser hasta 25 por pruebas) y luego
sea descendente. Un led conectado en RA3 se
encenderá cuando el contador este al máximo o
al mínimo (0 y 255).
Luis David Narváez
27. RETO:
Enunciado:
Realizar un contador binario con dos pulsadores,
uno ascendente hasta 255 y con otro
descendente hasta 0. El cambio de ascendente a
descendente se realiza en cualquier instante
según se presione el pulsador correspondiente.
Existirá además un botón de reinicio.
RETO:
Enunciado:
Realizar un contador binario con dos pulsadores,
uno ascendente hasta 255 y con otro
descendente hasta 0. El cambio de ascendente a
descendente se realiza en cualquier instante
según se presione el pulsador correspondiente.
Existirá además un botón de reinicio.
Luis David Narváez