LABORATORIO Nº9
(Programación PIC)
(Programación básica con bucles de control)
I. CAPACIDAD TERMINAL
● Utilizar al microcontrolador en aplicaciones de control electrónico.
● Desarrollar y ejecutar programas en un microcontrolador PIC
● Programar y configurar interfaces básicas del microcontrolador.
II. COMPETENCIA ESPECÍFICA DE LA SESIÓN
● Manejo de puertos de forma grupal e independiente para manejo de luces.
● Programación de sonidos mediante subrutinas.
● Creación de subrutinas mediante funciones.
● Declaración de variable enteras.
III. CONTENIDOS A TRATAR
● Control de puertos como entradas y/o salidas.
● Generación de salida pulsante.
● Bucles de control
IV. RESULTADOS
Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y gestionando adecuadamente los recursos materiales y humanos.
V. FUNDAMENTO TEÓRICO:
¿Qué es una estructura de control?
En términos simples, una estructura de control le permite controlar el flujo de ejecución de código en su aplicación. Generalmente, un programa se ejecuta secuencialmente, línea por línea, y una estructura de control le permite alterar ese flujo, generalmente dependiendo de ciertas condiciones. Existen varias estructuras de control como:
- Sentencia if:
Si la condición es verdadera (se cumple), se ejecuta la sentencia1, de lo contrario la sentencia2. (esta estructura suena de la siguiente forma: “si la (condición) se cumple, se ejecuta la sentencia1, sino, se ejecuta la sentencia2.
if (condición) sentencia1;else sentencia2;El bucle FOR es un bucle muy flexible y a la vez muy potente ya que tiene varias formas interesantes de implementarlo, su forma más tradicional es la siguiente:
- El bucle for:
for (/* inicialización */; /* condición */; /* incremento */)
{
/* código a ejecutar */
}
Inicialización: en esta parte se inicia la variable que controla el bucle y es la primera sentencia que ejecuta el bucle. Sólo se ejecuta una vez ya que solo se necesita al principio del bucle.Expresión condicional: al igual que en el bucle while, esta expresión determina si el bucle continuará ejecutándose o no.Incremento: es una sentencia que ejecuta al final de cada iteración del bucle. Por lo general, se utiliza para incrementar la variable con que se inicio el ciclo. Luego de ejecutar el incremento, el bucle revisa nuevamente la condición, si es verdadera tiene lugar una ejecución más del cuerpo del ciclo, si es falsa se termina el ciclo y así.Aquí se muestra el mismo ejemplo visto para el bucle while, pero implementado con un bucle for:
int i;
for (i=0; i < 100; i = i + 1) {
printf("%d\n", i);
}
Nota: En C, la sentencia i = i + 1 puede escribirse en forma más reducida como i++. Esta forma se utiliza más comúnmente en el bucle for:
int i;
for (i=0; i < 100; i++) {
printf("%d\n", i);
}
Esta sentencia nos permite repetir una o varias sentencias una cantidad de veces determinada por 3 parámetros. Forma general del for: Para una sola sentencia .Para un bloque de sentencias (recordemos que el bloque queda definido por las llaves.for(inicialización; condición; incremento)sentencia;for(inicialización; condición; incremento){
sentencias;
}
- El bucle while:
El bucle while permite ejecutar una o mas sentencias en tanto se cumpla una condición. Si la condición deja de cumplirse, se dejan de ejecutar la o las instrucciones y se “sale del bloque while para continuar procesando las instrucciones que se encuentran después del mismo
while (/*condicion*/)
{
/* Código */
}
La condición debe de ser una expresión lógica, similar a la de la sentencia if. Primero se evalúa la condición. Si el resultado es verdadero, se ejecuta el bloque de código. Luego se vuelve a evaluar la condición, y en caso de dar verdadero se vuelve a ejecutar el bloque. El bucle se corta cuando la condición da falso.
Ejemplo: imprimir los números de 0 a 99:int i = 0;while (i < 100) {printf("%d\n", i);i = i + 1;}Inicialmente se declara que la variable i tiene un valor de 0. Al iniciar el bucle, se cumple la condición i < 100, por lo que se procede a la instrucción de imprimir dicho número (cero, en el caso inicial). Posteriormente i cambiará su valor de uno en uno por la instrucción i = i + 1 y seguidamente dicho valor nuevo, será evaluado en la condición WHILE hasta que i llegue al valor 100, donde debido a la condicional, éste será un valor falso, dando fin al código.while (condición) sentencia;while (condición){sentencia1;sentencia2;sentencia3;sentencia4; ...Sentencia_n;}
VI. ACTIVIDADES EN CLASE:
1.
Transcriba el programa mostrado,
compile dicho programa, simule en Proteus y compruebe funcionamiento en Tarjeta
Entrenadora.
#include <16f877a.h> // Incluimos archivo con PIC a utilizar |
Realice las modificaciones que se sugieren al programa, experimente y responda las preguntas planteadas
1. Se tiene un sistema con 3 pulsadores (A5, D0, D1) de entrada y 8 leds de salida (Puerto C): Programar para que se comporte de la siguiente manera:
- Al iniciar el programa todos los leds deben permanecer apagados.
- Al presionar A5, debe encender C0, al volver a presionar, debe encender C1 y así sucesivamente.
- Al presionar D0, los deben encender sucesivamente pero en sentido inverso.
- La entrada D1 debe funcionar como un habilitador, es decir, por defecto el sistema está habilitado y funcionará como lo antes mencionado. Si presiono D1, el sistema quedará “congelado” y nada funcionará. Si vuelvo a presionar D1, el sistema nuevamente queda habilitado.
VIII. VIDEO:
IX. OBSERVACIONES Y CONCLUSIONES:
OBSERVACIONES:
- Se debe verificar que la columna "C" de los leds se encuentre activada en el entrenador de PIC, para que así se pueda analizar mejor el comportamiento de la programación realizada.
- Al variar los distintos tipos de bucles de control se deben tomar en cuenta sus respectivas condiciones, pues si la sintaxis de alguna de ellas se encuentra mal escrita, el programa mandará un WARRING o un ERROR.
- Se tuvo que cambiar las conexiones en la simulación del entrenador HFK en el simulador proteus, para que no existan confusiones al momento de simular la programación.
- Para utilizar bien los bucles de control es necesario respetar el valor de las variables utilizadas, pues si se declaran mal estas partes, el programa tendrá errores y precauciones.
CONCLUSIONES:
- Se diseñaron y optimizaron sistemas y procesos para cumplir con las condiciones establecidas y se gestionaron adecuadamente las sentencias y bucles de control.
- Se reconocieron bucles de control necesarios para realizar una determinada tarea obedeciendo condiciones requeridas.
- Se verificó el funcionamiento de bucles de control reproduciendo la programación optimizada en el entrenador PIC HFK.
- Se modificó una programación compuesta de bucles de control para encender leds utilizando botones como forma de control de direcciones, habilitación y encendido y apagado.









