UNIVERSIDAD NACIONAL DE
INGENIERIA
Facultad de ingeniería Eléctrica y Electrónica
Sistemas Digitales basados en
Microprocesadores
EE-637
LABORATORIO N° 1
MANEJO DE PUERTOS I/O, FUNCIONES Y
PROCEDIMIENTOS
Profesor: Jose Estrada M.
Alumnos: Risco Chavez Diego
Poma Lopez Marco
Coó digo de curso: EE637-M
Fecha de entrega: 12/10/2017
2017-II
EE637-M
UNI
2017-II
OBJETIVOS
Se busca que el alumno pueda ganar habilidad en la programación en lenguaje
C para los microcontroladores PIC de MICROCHIP, utilizando el entorno del
MPLABX, con el uso del compilador XC-16.
INTRODUCCIÓN
Este laboratorio provee una introducción a la programación del lenguaje C para
microcontroladores PIC en el estándar ANSI C.
Además, el manejo de los puertos de un microcontrolador como el PIC24FJ128GA010
permitirá al alumno en poder desenvolverse en el desarrollo del problema en software
usando MPLABX con el compilador XC-16 y su verificación en Hardware usando la
Tarjeta de Desarrollo explorer 16.
MATERIALES
- Microcontrolador PIC24FJ128GA010
- Sistema de desarrollo explorer-16
- Compilador XC-16
- Depurador/Grabador ICD-3
PLANTEAMIENTO DEL PROBLEMA
Procedimiento:
1. Haciendo el uso de arrays y lazos (bucles), diseñar y simular un programa para
el PIC24FJ128GA010, que pueda hacer la secuencia de la figura mostrada, y que
muestre por los 8 leds menos significativos del Puerto A (RA7-RA0). La
frecuencia de intervalo entre dato y dato debe ser de 200ms. El
microcontrolador tiene un cristal externo de 8MHz y la configuración del PLL
(Phase-Locked Loop).
2. Implementar el diseño en el explorer-16.
3. Se evaluará el código del programa autodocumentado.
Código en MPLAB
Simulación en PROTEUS
EXPLICACIÓN DEL CÓDIGO IMPLEMENTADO
El código del “main” empieza configurando el puerto ‘A’ como salida, ya que se usarán
estos pines para prender o apagar los leds, y definiendo el estado inicial de los leds
igual a 128, es decir el pin RA7 en ‘1’. La lógica del código que a continuación viene
radica en desplazar un bit de los pines del puerto ‘A’ a la derecha o a la izquierda según
sea el caso hasta que se dé el cambio de dirección, esto se hace para cada bloque. El
número de bloques en el que se dividió se muestra a continuación:
Figura 1. Esquema de los bloques que se usaron
Por ejemplo, para el primer bloque se procede del siguiente modo: con la posición
inicial del led encendido en RA7, se empieza a desplazar la posición del led encendido a
la derecha cada cierto intervalo de tiempo (20ms) como se muestra en el siguiente
código:
Esto se realiza hasta que RA1=1, el cual indica que se debe de hacer el cambio de
dirección, la implementación se hizo usando la sentencia while:
Este proceso se realiza de manera similar para todos los bloques, solo cambiando los
limites.