domingo, 26 de agosto de 2018

LABORATORIO N° 02

PROGRAMACIÓN BÁSICA CON BUCLES DE CONTROL

1. COMPETENCIA ESPECIFICA DE LA SESION
  • 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 variables enteras.

2. MARCO TEÓRICO

2.1. BUCLES DE CONTROL
Las estructuras de control nos permiten controlar el flujo del programa: tomar decisiones, realizar acciones repetitivas etc, dependiendo de unas condiciones que nosotros mismos establezcamos. Así podemos hacer un script que nos salude cada día de la semana de una manera diferente. O por ejemplo hacer un script que nos pida la contraseña una y otra vez hasta que suministremos la opción correcta.

2.1.1. LA TOMA DE DECISIONES IF-ELSE
Quizá la estructura de control más básica y la más utilizada sea if-else:
if (condición) {
// instrucciones que hay que ejecutar si la condición es verdadera
} else {
// Instrucciones que hay que ejecutar si la condición es falsa
}
En castellano sería algo así:
Si (Tal cosa es cierta) {
//  Haz esto
} En caso contrario {
// Haz esto otro
}
Ejemplo:
if ($nombre=="Coder") {  // Si el nombre es Coder
echo(" Hombre $nombre! Ya estás cotilleando por aquí otra vez!"); // saludo especial
}else {
echo("Hola, $nombre, gracias por visitarnos"); // saludo para los demás
} 
La cláusula else (la parte del if-else que indica lo que hay que hacer si la condición es falsa) es opcional.


2.1.2. BUCLES: WHILE
If else nos permitía decidir si queríamos ejecutar o no una instrucción en función de una condición, los bucles nos permiten utilizar una condición para determinar cuantas veces queremos ejecutar una instrucción:
While (condicion) {
// Instrucciones a ejecutar una y otra
//vez mientras la condición sea cierta
}
El funcionamiento es muy parecido al del if-else, la diferencia estriba en que si la condición es cierta y se ejecuta la orden, la condición vuelve a comprobarse una y otra vez mientras siga siendo cierta. En cambio en el cambio del if-else sólo se comprueba la condición una vez, si es cierta se ejecuta la instrucción y se sigue con el programa.
Ejemplo:
$cantidad = 1;
while ($cantidad < 10) {
echo ("$cantidad ");
$cantidad++;
}
Esto traducido a castellano sería:
$cantidad = 1; $cantidad es igual a uno
while ($cantidad < 10) Mientras el valor de la variable $cantidad sea menor que 10
echo (“$cantidad “); Escribe el valor de cantidad
$cantidad++ (suma 1 al valor que tenga $cantidad, también podríamos haber escrito $cantidad = $cantidad +1)


2.1.3. BUCLES: FOR
Los bucles for funcionan exactamente igual que en C . Con una sola instrucción controlamos todo el bucle, así que para los vaguetes está muy bien.
for (valor inicial; condicion; ejecutar en cada blucle) {
// Instrucciones a ejecutar mientras la condición sea cierta
}
Ejemplo:
for ($cantidad = 1; $cantidad <10; $i++) {
echo("$cantidad");
}
Traducido es igual a:
Cantidad es igual a 1, mientras cantidad sea menor que 10 escribe cantidad en pantalla y después súmale 1 al valor de cantidad. Es decir, es exactamente el mismo ejemplo que vimos en el bucle while pero de otra manera.

3. EVIDENCIA DE TAREAS EN LABORATORIO

3.1. DIAGRAMA DE LA SIMULACIÓN DEL ENTRENADOR DE PICS EN PROTEUS

3.2. VIDEO EXPLICATIVO MOSTRANDO LAS TAREAS A SER EVALUADAS



3.3. VIDEO EXPLICATIVO MOSTRANDO EN SIMULACIÓN E IMPLEMENTACIÓN DEL PROGRAMA SOLICITADO

4. OBSERVACIONES:
  • Hay que procurar realizar el programa en PIC C Compiler de forma ordenada y con comentarios si es posible, para poder entender el programa en caso de verlo más adelante.
  • En caso de que el programa no salga como deseamos es recomendable depurarlo paso a paso el simulador de Proteus para así corregor los posibles errores que pudiera presentar.
  • Es necesario copiar el archivo "16F877A.h" en la carpeta donde se creó el programa, para que sea reconocido mediante la instrucción "#include <16f877a.h>" que se utilizó en el encabezado del programa,.
  • Se observó que al momento de realizar la simulación en Proteus y cargar el programa en el PIC, se observó que tanto el archivo HEX y COF lo ejecutan de manera correcta, pero con el archivo HEX no es posible depurarlo paso a paso.
  • Al momento de programar en PIC C Compiler, debemos tomar en cuenta que para negar una variable hay que usar el comando "!" y no "TOGGLE", ya que este último se usa para puertos de salida.
  • Utilizamos el comando "<<" y ">>" para recorrer el contenido de una variable una posición hacia la izquierda y derecha respectivamente.

5. CONCLUSIONES
  • Se realizó el manejo de puertos de forma grupal e independiente para el manejo de luces, realizando el programa dado en el laboratorio correspondiente.
  • Se reconoció la función que cumplen las instrucciones en las directivas o cabeceras del programa utilizado: "#include <16f877a.h>", "#use delay (clock=20M)" y "#fuses HS, NOPROTECT, NOWDT".
  • Se utilizaron funciones condicionales como "IF", "ELSE IF" para la realización de las condiciones establecidas al presionar cada pulsador.
  • Se compiló el programa en PIC C Compiler a partir del cual se generaron los archivos HEX y COF para realizar la simulación en Proteus.
  • Se logró transferir el archivo generado HEX al entrenador utilizando el programa PICKIT2 y se verificó el correcto funcionamiento del mismo.
  • Se modificó el programa para encender un LED y desplazarlo hacia arriba y abajo mediando dos pulsadores y un tercer pulsador para habilitar dicho dezplazamiento.

6. FOTO GRUPAL


7. ANEXOS

7.1. Cuestionario 02 - Curso virtual: Simulando Sistemas Embebidos con Microcontroladores PIC