Está en la página 1de 8

Universidad Tecnológica del Perú

Microcontroladores

Laboratorio Dirigido N°2


Compilación de programas en C usando el MPLABX y
el XC8 de microchip-II

2018-2
Escuela de Electrónica

Compilación de programas en C usando el MPLABX y


el XC8 de microchip-II
Objetivo:
“Creación, compilación simulación de un proyecto en C usando MPLABX”

En este laboratorio se va a utilizar vectores, punteros y funciones, en un programa en


lenguaje C para microcontroladores PIC.

I. Pre-laboratorio

a. ¿Qué son los vectores?


b. Como funcionan y para qué sirven los punteros de datos.
c. ¿Qué son las funciones? ¿Cómo se declara? ¿Cuantos tipos de funciones
existen?

II. Introducción:

2
Escuela de Electrónica

III. Actividades del laboratorio.


Las actividades propuestas no ayudarán a comprender y manejar:
a. Vectores.
b. Punteros.
c. Funciones.
d. Las funciones de retardo de tiempo (__delay_ms y __delay_us() )1.

Actividad 1. “Uso de vectores, punteros y funciones de retardo”.

Diseñar un programa que pueda sacar una secuencia de datos por el puerto D (ver figura 1)
cada 500ms y que se repita siempre y en el orden siguiente:

orden D7 D6 D5 D4 D3 D2 D1 D0
0
1
2
3
4
5
6
7

 Definir los valores para el vector de datos en C.

unsigned char DatosLEDs[8] = { , , , , , , , };

1
MPLABX XC8 Help: How To’s : Getting My Application to Do What I Want : How Can I Implement
a Delay in My Code?

3
Escuela de Electrónica

1. Abrir el MPLABX
2. Crear un nuevo proyecto llamado “Lab_dir_2”, utilizando el compilador XC8 para el
microcontrolador PIC18F4550.
3. Crear un nuevo programa principal llamado “Lab_dir_2_main.c” .
4. Agregar la librería <xc.h>
5. Agregar los códigos de configuración, considerando un cristal externo de 20MHz y
“HS” en configuración del oscilador y MCLR habilitado.
6. Configurar el puerto D, como salida de datos digitales.
7. Escribir código en lenguaje C para escribir los datos del vector al puerto D. El acceso
a los datos del vector tiene que ser realizado de forma directa por medio del nombre
del identificador de la variable (DatosLEDs) y indirecta con el uso de punteros (*ptr).
8. Construir el proyecto.
9. En la propiedades del proyecto ( Project Properties > conf > simulator), fijar el valor
de la frecuencia del ciclo de instrucción (Fcyc).
10. Realizar la simulación con MPLAB-SIM y verificar su funcionamiento.
11. Realizar la simulación con Proteus y verificar su funcionamiento.
12. Realizar la programación del microcontrolador.

Figura 1 Circuito de simulación

4
Escuela de Electrónica

Actividad 2. “Definición y uso de funciones”.

Crear una función llamada “Configurar_puertos” que pueda configurar los puertos I/O del
microcontrolador y una función que pueda retornar el valor leído de los switches (SW1 y
SW0).
void Configurar_puertos(void)
int leer_switches(void)

Llamar a la función dentro del programa en C, utilizando la siguiente sintaxis.


Configurar_puertos ();
Lectura=leer_switches();
Donde Lectura, es una variable del tipo int y tiene que ser declarada en el programa.
Usando el proyecto anterior:
1. Abrir el MPLABX
2. Crear un nuevo proyecto llamado “Lab_dir_2”, utilizando el compilador XC8 para el
microcontrolador PIC18F4550.
3. Crear un nuevo programa principal llamado “Lab_dir_2_main.c” .
4. Agregar la librería <xc.h>
5. Agregar los códigos de configuración, considerando un cristal externo de 20MHz y
“HS” en configuración del oscilador y MCLR habilitado.
6. Configurar el puerto D, como salida de datos digitales.
7. Escribir el código en lenguaje C para declarar y usar las funciones Configurar_puertos
y leer_switches. El valor del estado de los SW1 y SW0, se deben reflejar en los LEDs
D1 y D0 respectivamente (ver fig. 2).
8. Construir el proyecto.
9. En la propiedades del proyecto ( Project Properties > conf > simulator), fijar el valor
de la frecuencia del ciclo de instrucción (Fcyc).
10. Realizar la simulación con MPLAB-SIM y verificar su funcionamiento.
11. Realizar la simulación con Proteus y verificar su funcionamiento.

5
Escuela de Electrónica

Figura 2 Circuito de simulación

6
Escuela de Electrónica

IV. Post-laboratorio.

Diseño de una función


Diseñar una función llamada “Entero_a_7Seg” que ingrese como parámetro un valor entero
que se encuentre en el rango de 0 a 9 y este le retorne el valor decodificado para un display
de 7 segmentos de ánodo común.
unsigned int Entero_a_7Seg (unsigned char numero)

Para llamar a la función dentro del programa en C, utilice la siguiente sintaxis.


ValordeCaracter7Seg = Entero_a_7Seg ( );
Valor entre 0 a 9

Donde, la variable ValordeCaracter7seg, es del tipo unsigned int y tiene que ser declarado
previamente.

Escribir un programa que pueda evaluar siempre el estado de 2 switches que pueda
manipular el funcionamiento de un contador de 0-9. El SW0 y SW1, están conectados al PIN
RC0 y RC1 respectivamente. (ver tabla 2 y figura 3)
Tabla 1 Evaluación de los Switches

SW1 SW0 PORTD


0 0 Cuenta ascendente
0 1 Cuenta descendente
1 0 Pausa en la cuenta
1 1 Pausa en la cuenta

Usar la función ValordeCaracter7seg y considerar que el contador inicia en 0 y el display es de


ánodo común.

7
Escuela de Electrónica

Figura 3 Circuito a simular

También podría gustarte