jueves, 14 de marzo de 2019

lab02 Programación básica con bucles de control.


MICROCONTROLADORES 

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 variables enteras.

  1. CONTENIDOS A TRATAR
        Control de puertos como entradas y/o salidas
        Generación de salida pulsante
        Bucles de control

IV.     MARCO TEORICO : BUCLES DE CONTROL  

  • 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.

  •     BUCLES DE WHILE

El bucle while te permite seguir ejecutando un bloque de código mientras la condición a evaluar sea verdadera. Por lo tanto, aunque se puede utilizar con un contador (como un for), se suele utilizar cuando no sabes cuántas veces tienes que repetir el bucle.

While (condicion) {
// Instrucciones a ejecutar una y otra

//vez mientras la condición sea cierta
}
 
  •  BUCLES DE IF

El bucle if realiza una acción si se satisface una condición particular.
El bucle if sigue el siguiente formato.

if( conditional_test )
{
List of stitcher rules to execute if the condition is TRUE
}
La lista de reglas del agrupador se ejecuta si se satisface la prueba condicional. También se puede especificar una lista de reglas del agrupador que se ejecutarán si no se satisface la condición, como se muestra a continuación.

  •      BUCLES DE IF-ELSE

Como su nombre lo sugiere, es una combinación de if y else. Del mismo modo que else, extiende una sentencia if para ejecutar una sentencia diferente en caso que la expresión if original se evalúe como FALSE. Sin embargo, a diferencia de else, esa expresión alternativa sólo se ejecutará si la expresión condicional del elseif se evalúa como TRUE. Por ejemplo, el siguiente código debe mostrar a es mayor que b, a es igual que b o a es menor que b.
  •    BUCLES DE FOR

El bucle for es una estructura de control en programación en la que se puede indicar de antemano el número mínimo de iteraciones.Está disponible en casi todos los lenguajes de programación imperativos.
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");
}







TAREA EVALUADAAPACIDAD 

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: 
a. Al iniciar el programa todos los leds deben permanecer apagados. 
b. Al presionar A5, debe encender C0, al volver a presionar, debe encender C1 y así sucesivamente. 
c. Al presionar D0, los deben encender sucesivamente pero en sentido inverso. 
d. 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. 
2. Describa el funcionamiento del programa previamente diseñado, demuestre funcionamiento mediante simulación y en tarjeta entrenadora. Grabe un video para evidencia.

VIDEOS

ARTURO MAMANI BERNAL

link explicativo sobre lo resuelto en clases y tarea dejada
  https://youtu.be/QJIx1FPwOng

MAMANI DE LA CRUZ GUSTAVO





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.

 CONCLUSIONES

-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 desplazamiento.






1 comentario: