7
TUTORIAL I OBJETIVOS Crear archivos y proyectos en el programa MPLAB. Familiarizarse con los registros del microcontrolador PIC16F877A. Realizar el primer proyecto: Prender y apagar un led. Aprender a programar microcontroladores PIC con el software IC-Prog. Identificar las ventajas de los proyectos codificados en Lenguaje C comparados con los codificados en Lenguaje ensamblador. PROYECTO 1: Prender y apaga un led. El proyecto consiste en configurar un pin del microcontrolador para que en un momento dado envíe 5V y prenda un led, y pasado un segundo envíe 0V y por tanto apague el led. El programa se hará de tal manera que la operación descrita se efectúe en un ciclo infinito y se vea a un led intermitente. Para ello vamos a usar del puerto B el pin de mayor peso, es decir el RB7, el pin 40 del microcontrolador. Modificando el registro TRISB podemos configurar el puerto como salida digital y para luego indicarle que envíe pulsos de “unos” y “ceros” a intervalo de 1 segundo por el pin RB7 de ese puerto. Vamos primero a elaborar el código en Lenguaje ensamblador. CODIGO LENGUAJE ENSAMBLADOR 1. Abrimos el programa MPLAB, dando click en Inicio / Programas / Microchip MPLAB IDE / MPLAB IDE, ó en el icono que aparece en el escritorio después de efectuada la instalación del programa. 2. Creamos un proyecto nuevo de la siguiente manera: damos click en Project / Project Wizard... Aparece la ventana de bienvenida al asistente de creación de proyectos, damos click en siguiente para avanzar. 3. Aparece la ventana del paso 1 del asistente: Seleccionar un dispositivo. Elegimos el tipo de microcontrolador que vamos a utilizar, en este caso trabajaremos con el PIC16F877A, luego damos click en siguiente para continuar. 4. En el paso 2 del asistente, en el menú Active toolsuite seleccionamos el tipo de lenguaje con que vamos a trabajar, en este caso trabajaremos con Microchip MPSAM Toolsuite. Debemos verificar además que en ”Toolsuite contents” no aparezcan equis rojas que denotan una incorrecta instalación del programa. Click en Siguiente para avanzar. 5. En el paso 3 daremos nombre al proyecto en el cuadro de texto “Project Name” y seleccionaremos una carpeta para guardarlo dando click en “Browse...”. Como nombre

Tutorial I -Prender y apagar un led-

Embed Size (px)

DESCRIPTION

El proyecto consiste en configurar un pin del microcontrolador para que en un momento dado envíe 5V y prenda un led, y pasado un segundo envíe 0V y por tanto apague el led. El programa se hará de tal manera que la operación descrita se efectúe en un ciclo infinito y se vea a un led intermitente.

Citation preview

Page 1: Tutorial I -Prender y apagar un led-

TUTORIAL I

OBJETIVOS

• Crear archivos y proyectos en el programa MPLAB. • Familiarizarse con los registros del microcontrolador PIC16F877A. • Realizar el primer proyecto: Prender y apagar un led. • Aprender a programar microcontroladores PIC con el software IC-Prog. • Identificar las ventajas de los proyectos codificados en Lenguaje C comparados con los

codificados en Lenguaje ensamblador. PROYECTO 1: Prender y apaga un led.

El proyecto consiste en configurar un pin del microcontrolador para que en un momento dado envíe 5V y prenda un led, y pasado un segundo envíe 0V y por tanto apague el led. El programa se hará de tal manera que la operación descrita se efectúe en un ciclo infinito y se vea a un led intermitente.

Para ello vamos a usar del puerto B el pin de mayor peso, es decir el RB7, el pin 40 del microcontrolador. Modificando el registro TRISB podemos configurar el puerto como salida digital y para luego indicarle que envíe pulsos de “unos” y “ceros” a intervalo de 1 segundo por el pin RB7 de ese puerto. Vamos primero a elaborar el código en Lenguaje ensamblador. • CODIGO LENGUAJE ENSAMBLADOR 1. Abrimos el programa MPLAB, dando click en Inicio / Programas / Microchip MPLAB IDE /

MPLAB IDE, ó en el icono que aparece en el escritorio después de efectuada la instalación del programa.

2. Creamos un proyecto nuevo de la siguiente manera: damos click en Project / Project

Wizard... Aparece la ventana de bienvenida al asistente de creación de proyectos, damos click en siguiente para avanzar.

3. Aparece la ventana del paso 1 del asistente: Seleccionar un dispositivo. Elegimos el tipo

de microcontrolador que vamos a utilizar, en este caso trabajaremos con el PIC16F877A, luego damos click en siguiente para continuar.

4. En el paso 2 del asistente, en el menú Active toolsuite seleccionamos el tipo de lenguaje

con que vamos a trabajar, en este caso trabajaremos con Microchip MPSAM Toolsuite. Debemos verificar además que en ”Toolsuite contents” no aparezcan equis rojas que denotan una incorrecta instalación del programa. Click en Siguiente para avanzar.

5. En el paso 3 daremos nombre al proyecto en el cuadro de texto “Project Name” y

seleccionaremos una carpeta para guardarlo dando click en “Browse...”. Como nombre

Page 2: Tutorial I -Prender y apagar un led-

sugerimos “on_led_ASM” y como carpeta C:\SIMUPIC. Damos click en siguiente una vez hecho esto.

6. En el paso 4 del asistente podemos adicionar un archivo ya creado seleccionando la carpeta donde esté y dando clik en Add; en nuestro caso seguimos con el siguiente paso, damos click en siguiente.

7. En el último paso del asistente verificamos que la información dada en los anteriores

pasos sea correcta. En caso de haber algún error podemos devolvernos dando click en el botón “Atrás”. Damos click en finalizar para que nos cree el proyecto.

8. Luego de haber creado un proyecto nuevo, vamos a crear un nuevo archivo para

adicionar al proyecto, damos click en: File / New. En este archivo nuevo que creamos, vamos a escribir el programa que hace prender y apagar el led.

9. Escribimos el siguiente código: INCLUDE P16F877A.INC PDel0 EQU 0X20 ; Variable utilizada por DELAY PDel1 EQU 0X21 ; Variable utilizada por DELAY PDel2 EQU 0X22 ; Variable utilizada por DELAY ORG 0 ; Inicio de programa en la dirección 0x0000 de la

; Memoria FLASH GOTO CONFIG

ORG 5 ; Se salta la dirección 0x0004, el vector de ; INTERRUPCIONES

CONFIG BSF STATUS,RP0 ;BANCO 1 BCF TRISB,7 ;RB7 como salida en el PUERTO B BCF STATUS,RP0 ;Regresamos al BANCO 0 PROGRAM BSF PORTB,7 ;Se enciende el LED CALL DELAY1_S ; Retardo de un segundo BCF PORTB,7 ;OFF LED CALL DELAY1_S ; Retardo de un segundo GOTO PROGRAM ; Regreso a PROGRAMA para hacer el BUCLE

; INFINITO ;------------------------------------------------------------- ; Code generated by PDEL ver 1.0 on 16/02/2005 at 16:36:17 ; Description: Waits 1000000 cycles ;------------------------------------------------------------- DELAY1_S movlw .14 ; 1 set number of repetitions (C) movwf PDel0 ; 1 | PLoop0 movlw .72 ; 1 set number of repetitions (B) movwf PDel1 ; 1 |

Page 3: Tutorial I -Prender y apagar un led-

PLoop1 movlw .247 ; 1 set number of repetitions (A) movwf PDel2 ; 1 | PLoop2 clrwdt ; 1 clear watchdog decfsz PDel2, 1 ; 1 + (1) is the time over? (A) goto PLoop2 ; 2 no, loop decfsz PDel1, 1 ; 1 + (1) is the time over? (B) goto PLoop1 ; 2 no, loop

decfsz PDel0, 1 ; 1 + (1) is the time over? (C) goto PLoop0 ; 2 no, loop

PDelL1 goto PDelL2 ; 2 cycles delay PDelL2 clrwdt ; 1 cycle delay return ; 2+2 Done ;------------------------------------------------------------- END 10. Damos click en File / Save as... Bautizamos el archivo como “on_led_ASM” y lo

guardamos preferiblemente en la misma carpeta del proyecto, es decir C:\SIMUPIC. Después de esto damos click en Project \ Add Files to project... Seleccionamos el archivo que acabamos de guardar y damos click en Abrir.

11. Antes de compilar el proyecto vamos a verificar que el MPLAB nos genere el archivo con

la extensión correcta *.HEX. Damos click en Project / Build Options... / Project. 12. En la pestaña ”PICC Linker” damos click en el botón “Restore Defaults” Verificamos que

aparezca ”-O"$(TARGETBASE).hex" escrito en el cuadro de texto contiguo al botón. Damos click en Aplicar para guardar los cambios y en aceptar

13. Vamos a compilar el proyecto de la siguiente manera: Click en Project / Make (O también

Project / Build All). Aparece la ventana Output con la pestaña Build seleccionada, y todo un reporte de la operación. En este reporte pueden aparecer errores o advertencias si por ejemplo la sintaxis del código no es correcta. Si la compilación fue exitosa aparece el mensaje BUILD SUCCEEDED al final del reporte.

14. Se programa el microcontrolador con el IC-PROG tal como esta descrito en las memorias

del curso. Se hacen las conexiones mostradas en el diagrama (mas abajo) y se comprueba que el dispositivo funcione correctamente.

15. De haber alguna incongruencia entre el comportamiento teórico y el real revise primero

las conexiones (si es necesario consulte el datasheet del PIC16F877A para ver los diagramas de pines) y luego paso por paso el tutorial para encontrar en algún punto el error.

Vamos ahora a elaborar el código en Lenguaje C. • CODIGO LENGUAJE C 16. Abrimos el programa MPLAB.

Page 4: Tutorial I -Prender y apagar un led-

17. Creamos un proyecto nuevo dando click en: Project/Project Wizard... click en siguiente.

Elegimos el microcontrolador PIC16F877A en el paso 1, click en siguiente para continuar. 18. En el paso 2 del asistente, en el menú Active toolsuite seleccionamos el tipo de lenguaje

con que vamos a trabajar, en este caso trabajaremos HI-TECH PICC Toolsuite. Se verifican que en ”Toolsuite contents” no aparezcan las equis rojas antes mencionadas, click en Siguiente. En el paso 3 como nombre al proyecto sugerimos “on_led_C” y como carpeta C:\SIMUPIC. Damos click en siguiente una vez hecho esto. El paso 4 lo omitimos dando click en siguiente. Verificamos por ultimo que la información dada sea correcta y click en finalizar para que nos cree el proyecto.

19. Luego de haber creado el proyecto creamos un nuevo archivo de código en C que se

adicionara al proyecto. Click en File / New. 20. Tecleamos el siguiente código en C:

#include <pic.h> #include "delay.h" #include "delay.c" /*delay.h y delay.c se deben incluir en la misma carpeta del proyecto extraídas de picClite/samples/delay */ void main(void) { TRISB=0; //Configura puerto B como salida for(;;) //Ciclo infinito que prende y apaga el LED {

RB7=1; //Manda 5 Voltios por el pin RB7 (Prende el LED) DelayMs(1000); //Retardo de 1000Ms = 1seg

RB7=0; //Manda 0 Voltios por el pin RB7 (Apaga LED) DelayMs(1000); //Retardo de 1seg } //Vuelve a empezar el ciclo }

21. Guardamos el archivo como “on_led_C” en la misma carpeta del proyecto, es decir C:\SIMUPIC. Después de esto adicionamos al proyecto el archivo que acabamos de generar.

22. Antes de Compilar copiamos los archivos delay.h y delay.c a la carpeta donde guardamos

el proyecto, es decir, C:\SIMUPIC. Algunas veces para compilar es necesario incluir estas librerías y archivos como “Header Files”, para lo cual damos clic derecho en “Header Files” en la ventana principal del proyecto (donde aparece además Source Files, Library

Page 5: Tutorial I -Prender y apagar un led-

Files, etc) y seleccionamos add files. Los buscamos en la carpeta donde los copiamos y les damos abrir. El delay.h se irá a Header Files y el delay.c a source files.

23. Compilamos el proyecto. Si aparecen mensajes de error en el reporte que aparece en la

ventana output damos doble click sobre ellos, el programa mostrara el renglón donde esta el error. La sintaxis del lenguaje C es muy sensible y detecta errores tan simples como omitir puntos y comas, escribir comandos en mayúscula, ó colocar paréntesis en vez de llaves.

24. Una vez corregidos los errores si es que estos se presentaron, se vuelve a compilar

hasta que esta sea exitosa. El código on_led_C.HEX queda generado, archivo necesario para proceder a programar el microcontrolador con el IC-PROG.

25. Se programa el microcontrolador con el IC-PROG tal lo hizo para la primera parte de este

tutorial, tal cual esta descrito en las memorias del curso, y efectúe las conexiones mostradas en el diagrama compruebe que el dispositivo funcione correctamente.

26. De haber alguna incongruencia entre el comportamiento teórico y el real revise primero

las conexiones (si es necesario consulte el datasheet del PIC16F877A para ver los diagramas de pines) y luego paso por paso el tutorial para encontrar en algún punto el error.

Page 6: Tutorial I -Prender y apagar un led-

DIAGRAMA DE CONEXIONES

Page 7: Tutorial I -Prender y apagar un led-

CIRCUITO IMPRESO