sábado, 26 de octubre de 2019

L09-Programación básica con bucles de control

LABORATORIO 09


Programación básica con bucles de control


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

El Microcontrolador es un circuito integrado que es el componente principal de una aplicación embebida. Es como una pequeña computadora que incluye sistemas para controlar elementos de entrada/salida. También incluye a un procesador y por supuesto memoria que puede guardar el programa y sus variables (flash y RAM).  Funciona como una mini PC. Su función es la de automatizar procesos y procesar información.



       Un microcontrolador al menos tendrá:
                    -  Microprocesador.
                    -  Periféricos (unidades de entrada/salida).
                    - Memoria.
Ciclo while:
 La sintáxis del ciclo while es como sigue:

while(condition) {
//loop body
statements;
 } 
  
  •      Como puede ver la condición es evaluada al principio, antes de ejecutar el cuerpo del ciclo.
  •      Al evaluar la condición, si ésta es cierta, se ejecuta el cuerpo del ciclo y si es falsa, se procede a la siguiente instrucción después de todo
  •     Decimos que un while se ejecuta de 0 a n veces ya que cabe la posibilidad que la primera vez la condición sea falsa y el ciclo no se ejecute ni siquiera una vez.


Sentencia if - else:
La estructura condicional   “ if – else “ es la que nos permite tomar decisiones que pueden depender de los datos que introduzca el usuario, de si se ha producido algún error o de cualquier otra cosa. Traducida literalmente del inglés, se la podría llamar la estructura "si...si no", es decir, "si se cumple la condición, haz esto, y si no, haz esto otro"

Como se ve en el ejemplo, la estructura de un condicional es bastante simple:

            if (condición) {
                        sentencias_si_verdadero;
            } else {
                        sentencias_si_falso;
            }.

Sentencia If 
Es igual al funcionamiento de la sentencia “if –  else”, con la diferencia de que este último no se utiliza. La sintaxis es la siguiente:

          if (condición)
       {
       ejecuta esto sólo si la condición es verdadera
       };

La condición siempre debe devolver un valor de verdad o falsedad, y sólo en el caso de que fuera verdad se ejecutará las sentencias.

Ciclo For
El bucle for es un bucle muy flexible  y su forma de implementarlo tradicionalmente es la siguiente:

        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 inició 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í.
3. TAREAS REALIZADAS

a) Problema planteado:
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.

4.VIDEO





4. OBSERVACIONES
  • El entrenador brindado en el laboratorio inicialmente no funcionaba, por lo que se tuvo que volver a colocar los jumpers adecuadamente tomando como guía otro entrenador en óptimas condiciones.
  • Al momento de compilar el código de programa en el CCS C compiler nos daba un error, para lo cual se optó  por copiar el archivo 16F877A ubicado dentro de la ruta del programa instalado hacia la carpeta en donde se estaba trabajando el proyecto.
  • Durante el laboratorio se logró el funcionamiento del problema planteado, con la deficiencia de que sólo al inicio, el salto de uno lógico se daba hasta el puerto C1, corregidiendose posteriormente en la simulación con Isis Proteus
  • Al momento de simular el código de programación en el Proteus, se debe seleccionar el archivo “.cof”, ya que de lo contrario la simulación no sería la correcta debido a la presencia de fallas y errores.
  • Es muy importante que después de cada instrucción en el CCS COMPILER se coloque el punto y coma, para de esa manera evitar errores en el momento de la compilación.
5. CONCLUSIONES
  • En conclusión, se aprendió el correcto manejo de la sentencia IF en la programa CCS COMPILER, la cual nos permite cumplir ciertas sentencias siempre en cuando se cumpla la condición a ser evaluada.
  • Se concluye se logró las condición usadas dentro de la sentencia If, no necesariamente tiene que ser sólo una; sino que se puede concatenar mas de 2 condiciones, en este caso se hizo de la función lógica  "&&", la cual indica que ambas condiciones deben cumplirse en la sentencia If.
  • Se logró realizar la simulación del funcionamiento del PIC 16F877A y la correcta verificación del código mediante el Isis Proteus.
  • También se concluyó que para poder grabar nuestra programación hecha en el PIC físico, se debe usar el programa PICKIT 2 e importar el archivo “.hex” generado por el CCS compiler.
  • se concluye que conoció los bucles más comunes en la programación en C, los cuales son "For", "While","If-else"; reconociendo la sintaxis de cada de una de ellas.

No hay comentarios:

Publicar un comentario