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.
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. MATERIALES Y EQUIPO
● CCS Compiler instalado.
● Entrenador de PICS
● Pantalla LCD
● PIC16F877A
● Motor DC
● Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
● PC con Software de simulación.
VI. FUNDAMENTO TEÓRICO
● Estructuras y Bucles de control.
● Si quieres profundizar, ingresa a la página www.coursera.org , logearse y buscar el curso “¡A Programar! Una introducción a la programación”, inscribirse en el mismo.
VIII. TAREAS A SER EVALUADAS:
● 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.
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. MATERIALES Y EQUIPO
● CCS Compiler instalado.
● Entrenador de PICS
● Pantalla LCD
● PIC16F877A
● Motor DC
● Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
● PC con Software de simulación.
VI. FUNDAMENTO TEÓRICO
● Estructuras y Bucles de control.
● Si quieres profundizar, ingresa a la página www.coursera.org , logearse y buscar el curso “¡A Programar! Una introducción a la programación”, inscribirse en el mismo.
VII. TAREAS GUIADAS DENTRO DEL LABORATORIO:
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
#use delay (clock=20M) // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles
int salida=1; // Declaramos variable "salida" como entera y valor UNO
int variable=0;
void main () // FUNCION PRINCIPAL del programa, indispensable
{
output_c(0b00000000); // Sacamos por el puerto C el valor de salida (00000000)
// Este comando se realiza por única vez
while (true) // Bucle de REPETICION infinita por valer "true"
{
IF (!input(PIN_A5)) // SI detectamos 0 voltios en PIN A5 (presionando pulsador)
{
output_c(salida); // Sacamos por el puerto C el valor de salida (00000001)
delay_ms(500); // "Congela el tiempo" durante 500 ms para evitar falsos disparos
}
IF (!input(PIN_D0)) // SI detectamos 0 voltios en PIN D0 (presionando pulsador)
{
output_high(PIN_C5); // Pone a "1" el pin C5 (envía 5 voltios)
output_bit(PIN_C4, 1); // Pone a "1" el pin C4 (envía 5 voltios)
output_toggle (PIN_C1); // Invierte el valor del PIN C1 (si estaba en 0, pasa a 1 y viceversa)
delay_ms(500); // "Congela el tiempo" durante 500 ms para evitar falsas pulsaciones
}
IF (!input(PIN_D1)) // SI detectamos 0 voltios en PIN Di (presionando pulsador)
{
salida = salida << 1; // Recorremos el contenido de "salida" una posición a la izquierda
output_c(salida); // Sacamos por el puerto C el valor de salida (00000001)
variable = 1; // asignamos el valor "1" a variable
delay_ms(500); // "Congela el tiempo" durante 500 ms para evitar falsas pulsaciones
}
IF (!input(PIN_E2) && (variable == 1)) // SI detectamos 0 voltios en PIN E2 variable vale 1....
{
output_bit(PIN_C5,0); // Pone a "0" el pin C5 (envía cero voltios o GND)
variable = 0; // asignamos el valor "0" a variable
delay_ms(500); // "Congela el tiempo" durante 500 ms para evitar falsas pulsaciones
}
}
}
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:
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.
IX. PRINCIPALES BUCLES DE CONTROL
-WHILE
-FOR
CURSO VIRTUAL
X. OBSERVACIONES
XI. CONCLUSIONES
-WHILE
Es un bucle o sentencia repetitiva con una condición al principio. Se ejecuta una sentencia mientras sea cierta una condición. La sentencia puede que no se ejecute ni una sola vez.
-IF
Los condicionales if, son una estructura de control condicional, que nos permiten tomar cierta decisión al interior de nuestro algoritmo, es decir, nos permiten determinar que acciones tomar dada condición, por ejemplo determinar si un numero cualquiera es mayor que 10 y de acuerdo a esto mostrar un mensaje.
-IF-ELSE
Es en principio similar a la del condicional if, pero adicionando una nueva "estructura" que es el else, el cual indica la acción o conjunto de acciones a llevar a cabo, en caso de que la condición del if no se cumpla.
-FOR
Los ciclos for son lo que se conoce como estructuras de control de flujo cíclicas o simplemente estructuras cíclicas, estos ciclos, como su nombre lo sugiere, nos permiten ejecutar una o varias líneas de código de forma iterativa, conociendo un valor especifico inicial y otro valor final, además nos permiten determinar el tamaño del paso entre cada "giro" o iteración del ciclo.
CURSO VIRTUAL
X. OBSERVACIONES
-Al momento de realizar cualquier pulsacion constante esta presentaba un retardo de medio segundo en ser procesada debido al delay de 500 ms que se introdujo en el código.
-Al realizar el segundo problema se observo que al momento de mandar una señal a la entrada A5 esta mandaba una salida inmediata para el segundo bit sin siquiera tomar en cuenta al primero.
-Para poder realizar la programación de ambos ejercicios se usaron tanto bucles de repetición (while/for) como condicionales en el caso de if/ if-else los cuales por sus distintas funciones pudieron satisfacer las condiciones de los ejercicios.
XI. CONCLUSIONES
-El establecer un delay de medio segundo en la programación nos pudo ayudar a evitar problemas de falsos disparos por parte de los pulsadores.
-Al momento de usar las condicionales if y if-else fue determinante analizar bien la situación para saber cual iba ser el más conveniente usar.
-Para haber podido realizar el código del segundo ejercicio fue importante identificar primero todas las condiciones establecidas para después de esto comenzar a programar de la manera más adecuada posible.
Revisado
ResponderEliminar