PRACTICA_1_SISTEMAS_EMBEBIDOS
PRACTICA_1_SISTEMAS_EMBEBIDOS
PRACTICA_1_SISTEMAS_EMBEBIDOS
SEDE LATACUNGA
ENERGÍA Y MÉCANICA
TEMA:
INTEGRANTES
HERRERA MARIO
PILLAJO ARACELY
QUINATONA BRYAN
RAZA KEVIN
FECHA DE ENTREGA
1
INDICE
CÓDIGO ................................................................................................................................ 6
6. RESULTADOS OBTENIDOS......................................................................................... 11
7. CONCLUSIONES ............................................................................................................ 12
8. RECOMENDACIONES .................................................................................................. 12
2
1. OBJETIVO GENERAL
Aprender a reconocer, manejar y configurar las entradas y salidas digitales del PIC16F877a,
mediante programación que permita controlar dispositivos externos como leds de forma
eficiente.
2. OBJETIVOS ESPECIFICOS
Identificar las características principales del microcontrolador PIC16F877a, con énfasis
en los pines digitales de entrada y salida.
Armar un circuito que permita interactuar con leds utilizando las entradas y salidas
digitales.
Programar el microcontrolador utilizando MPLAB para lograr trabajar según las
funcionalidades requeridas en la práctica.
Verificar el correcto funcionamiento del circuito y el código, identificando posibles
errores o ajustes necesarios.
3. MATERIALES UTILIZADOS
En este proyecto se utilizaron los siguientes materiales para el desarrollo y ensamblaje del
sistema:
3
Este conjunto de materiales permitió la realización de las conexiones, programación y pruebas
del sistema, garantizando su correcto funcionamiento.
4. TRABAJO PREVIO
ENTRADAS Y SALIDAS DIGITALES
La operación de los puertos de entrada/salida (I/O) en microcontroladores, como el
PIC16F877A, desempeña un papel crucial en la transferencia de datos entre el microprocesador
y dispositivos externos. Estos puertos, esenciales para cualquier aplicación de sistemas
digitales basados en microcontroladores, pueden operar en dos modos principales: aislados y
mapeados a memoria. En su forma más simple, un puerto de entrada consta de un buffer de
tercer estado y, comúnmente, un registro de almacenamiento (latch). El buffer controla el flujo
de información entre el puerto y el bus de datos del microprocesador, mientras que el registro
temporiza la información de dispositivos periféricos de entrada hasta que el microprocesador
la lee. El modo aislado requiere señales de control específicas y ofrece la ventaja de un espacio
de direcciones independiente para los puertos de I/O, mientras que el modo mapeado a memoria
trata los puertos de I/O como registros externos en el espacio de direccionamiento de memoria,
permitiendo operaciones de entrada/salida mediante instrucciones de memoria estándar. Estos
modos proporcionan flexibilidad para gestionar eficazmente las operaciones de entrada y
salida, permitiendo una interacción versátil entre el microcontrolador y dispositivos externos.
(Pratt, 2019)
4
REGISTRO DE CONFIGURACIÓN DE PUERTOS (TRIS) CON MPLAB
Los registros TRIS del PIC16F877A son elementos fundamentales en la configuración de los
puertos de entrada/salida (I/O). Ejemplificados por TRISA, TRISB, TRISC, TRISD y TRISE,
estos registros controlan la dirección de los pines en los puertos A, B, C, D y E,
respectivamente. Al asignar un valor de "0" a un bit correspondiente, se establece el pin como
salida, mientras que un valor de "1" lo configura como entrada. Estos registros son esenciales
para adecuar los puertos a las necesidades específicas de la aplicación, permitiendo funciones
como la configuración de pines como entradas analógicas para el convertidor analógico-digital
interno del PIC16F877A, a través de TRISA y TRISE. TRISB y TRISC, por otro lado, facilitan
la configuración de funciones alternativas y modos de operación para los pines
correspondientes, proporcionando versatilidad en el diseño y la interacción con dispositivos
externos. Estos registros son cruciales para personalizar la operación del microcontrolador
según los requisitos específicos de la aplicación y optimizar su rendimiento. (Pérez, 2019)
5
5. DESARROLLO DE LA PRÁCTICA
Desarrollo de código para controlar LEDs en un microcontrolador:
CÓDIGO
#include <xc.h>
void derecha_a_izquierda(void) {
6
}
void izquierda_a_derecha(void) {
void main(void) {
TRISA = 0x03; // Configura RA0 y RA1 como entradas para los pulsadores
PORTB = 0x00; // Asegura que todos los LEDs estén apagados al iniciar
while (1) {
// Espera que RA0 sea presionado para iniciar la secuencia de derecha a izquierda
if (RA0 == 0) {
7
// Espera a que RA1 sea presionado para ejecutar la secuencia inversa
Este programa, desarrollado en MPLAB para un microcontrolador PIC, está diseñado para
controlar el encendido secuencial de LEDs conectados al puerto B mediante dos pulsadores
ubicados en el puerto A. Los fusibles se configuran para habilitar el oscilador externo en modo
XT, desactivar el Watchdog Timer y las protecciones de memoria, y establecer una frecuencia
de trabajo de 20 MHz (_XTAL_FREQ).
En el bucle principal (while (1)), se supervisan continuamente los pulsadores conectados a RA0
y RA1. Cuando se detecta una pulsación en RA0, el sistema inicia la secuencia de encendido
de derecha a izquierda; posteriormente, al presionar RA1, se ejecuta la secuencia inversa. Para
garantizar una operación confiable, se incorpora un retardo anti-rebote de 50 ms que previene
lecturas incorrectas de los pulsadores.
8
El puerto B se configura como salida (TRISB = 0x00) para el control de los LEDs, mientras
que el puerto A se configura como entrada (TRISA = 0x03) para recibir las señales de los
pulsadores. Al iniciar el programa, ambos puertos son inicializados en 0 para asegurar un
estado inicial estable.
Características principales:
Control de LEDs: Los LEDs (D1 a D8) están conectados al puerto B (RB0-RB7) y se
protegen con resistencias limitadoras de corriente.
Pulsadores: El pulsador RA0 activa la secuencia de encendido de los LEDs de derecha
a izquierda, mientras que RA1 inicia la secuencia inversa. Ambos pulsadores están
equipados con resistencias pull-down para garantizar un estado lógico bajo cuando no
están presionados.
Alimentación: El circuito incluye un capacitor de desacoplo para estabilizar el voltaje
y mejorar la confiabilidad del sistema.
9
El funcionamiento del sistema se basa en la lectura de los pulsadores y la ejecución de
secuencias programadas con retardos específicos. Además, se han implementado medidas para
prevenir el rebote mecánico de los pulsadores, asegurando un rendimiento estable.
Este diseño es ideal para aplicaciones que requieran iluminación secuencial o como
herramienta educativa para aprender sobre microcontroladores y sistemas electrónicos.
10
entre RA0 y tierra para asegurar un estado bajo cuando el pulsador no esté
presionado. Repite el mismo proceso para RA1 (pin 3).
5. Alimentar el circuito y programar:
Conecta una fuente de 5V al circuito para su alimentación. Carga el código al
microcontrolador usando un programador compatible con el PIC16F877A.
6. Probar el circuito:
Verifica el funcionamiento presionando el pulsador conectado a RA0 para activar la
secuencia de LEDs de derecha a izquierda. Luego, presiona el pulsador conectado a
RA1 para ejecutar la secuencia inversa.
6. RESULTADOS OBTENIDOS
El programa desarrollado en MPLAB cumplió con los objetivos planteados, logrando el control
secuencial de los LEDs mediante los pulsadores conectados al microcontrolador PIC16F877A.
La estructura modular del código facilitó su comprensión y permitió la ejecución eficiente de
las secuencias, evitando redundancias gracias al uso de funciones específicas como
derecha_a_izquierda e izquierda_a_derecha, que aportaron claridad y orden al programa.
11
7. CONCLUSIONES
Se logró reconocer y manejar las entradas y salidas digitales del microcontrolador
PIC16F877a, comprendiendo sus características principales y la importancia de su
configuración adecuada.
El montaje del circuito permitió interactuar de manera práctica con dispositivos
externos, como leds, evidenciando la utilidad de los pinos digitales en aplicaciones
reales.
La programación en MPLAB demostró ser una herramienta efectiva para implementar
las funcionalidades requeridas, resaltando la necesidad de estructurar correctamente el
código para evitar errores.
8. RECOMENDACIONES
Antes de iniciar la práctica consulte y estudie el datasheet del microcontrolador
PIC16F877a para comprender la configuración de pines y registros.
Asegúrese que los componentes del circuito funcionen y realice correctamente las
conexiones en el protoboard para evitar problemas en el circuito.
Verifique el código antes de cargarlo al microcontrolador especialmente en la
configuración de pines.
Utilizar software de simulación como Proteous antes de realizar el montaje físico para
poder identificar posibles errores previos.
Documentar cada paso del proceso, incluyendo configuraciones y ajustes realizados,
para facilitar la replicación de la práctica en el futuro.
12
9. REFERENCIAS BIBLIOGRÁFICAS
Microchip Technology Inc. (sin fecha). Hoja de datos del PIC16F877A . Recuperado
de https://www.microchip.com
Mazidi, MA, McKinlay, RD y Causey, D. (2008). Microcontrolador PIC y sistemas
integrados: uso de ensamblaje y C para PIC18. Pearson Education.
Microchip Technology Inc. (sf). MPLABX IDE. Recuperado de
https://www.microchip.com/mplab/mplab-x-ide
Pérez, C. (2019). El microcontrolador PIC16F877A. Obtenido de El microcontrolador
PIC16F877A:
https://latecnicalf.com.ar/descargas/material/electronicadigital/PIC16F877%20
apunte.pdf
Pratt, H. (26 de 03 de 2019). Sistemas digitales. Obtenido de Sistemas digitales:
https://www.academia.edu/43658729/CAPITULO_2_PARTE_I_PUERTOS_Y
_M%C3%93DULOS_DE_ENTRADA_SALIDA
13