Trabajo Informe 1 SOFTWARE DE PROGRAMACION DE MICROCONTROLADORES UCSM

UNIVERSIDAD CATOLICA DE SANTA MARIA GRUPO: 01 "Año de la Diversificación Productiva y del Fortalecimiento de la Educac

Views 43 Downloads 2 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

"Año de la Diversificación Productiva y del Fortalecimiento de la Educación"

UNIVERSIDAD CATOLICA DE SANTA MARIA Facultad de Ciencias e Ingenierías Físicas y Formales Escuela Profesional de Ingeniería Mecánica, Mecánica Eléctrica y Mecatrónica. MICROCONTROLADORES Y MICROPROCESADORES

Jefe de Practicas: Ing. MESTAS RAMOS, Sergio Orlando INFORME Nro.1: SOFTWARE DE PROGRAMACION DE MICROCONTROLADORES Alumno: ONQUE QUIRITA, Marcos Everaldo Semestre: VII Grupo: 01 2015 MICROCONTROLADORES Y MICROPROCESADORES

Página 1

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

Informe Nro. 01: SOFTWARE DE PROGRAMACION DE MICROCONTROLADORES I.

OBJETIVOS:  Comprobar el funcionamiento de diferentes programas con microcontroladores.  Utilizar distintas herramientas para realizar una simulación y un debug de los programas anteriores.

II.

INSTRUMENTOS: Computador MPLAB Protoboard Microcontrolador Dispositivos varios Entrenador

III.

MPLAB

PC o Laptop

DESARROLLO DE LA PRACTICA: A. MANEJO DE E/S: 1. Edite el siguiente programa en MPLAB. 2. Compile el programa. 3. Simule el programa y abra las ventanas de Memoria de programa, registros de función especial (FSR) y la ventana de estimulus para el puerto de entrada.

MANEJO DE ENTRADAS Y SALIDAS List p=16F84; include "P16F84.INC"; org 0x00; goto Inicio org 0x05; Inicio clrf PORTB; bsf STATUS,RP0; clrf TRISB; movlw b'00011111' movwf TRISA; bcf STATUS,RP0; Leer movf PORTA,W; movwf PORTB; goto Leer; end MICROCONTROLADORES Y MICROPROCESADORES

Página 2

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

4. Anote en una tabla el valor del PLC, W, TRISA, TRISB, PORTA y PORTB para cada corrida del programa. EJECUCION

STATUS

PLC

WORK

TRISA

TRISB

PORTA

PORTB

0 1 2 3 4 5 6

00011111 00011111 00011111 00111111 00111111

00000000 00000101 00000110 00000111 00001000

00011111 00011111 00011111 00011111 00011111

00011111 00011111 00011111 00011111 00011111

11111111 11111111 11111111 11111111 00000000

00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000

00111111 00111111

00001001 00001010

00011111 00011111

00011111 00011111

00000000 00000000

00000000 00000000

00000000 00000000

7 8 9 10 11 12 13

00111111 00011111

00001011 00001100

00011111 00000000

00011111 00011111

00000000 00000000

00000000 00000000

00000000 00000000

00011111 00011111

00001101 00001011

00000000 00000000

00011111 00011111

00000000 00000000

00000000 00000000

00000000 00000000

00011111 00011111

00001100 00001101

00000000 00000000

00011111 00011111

00000000 00000000

00000000 00000000

00000000 00000000

00011111

00001011

00000000

00011111

00000000

00000000

00000000

MICROCONTROLADORES Y MICROPROCESADORES

Página 3

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

5. Dibuje el diagrama de flujo del programa anterior.

6. Determine cuál es el propósito del programa. El objetivo es permitirnos analizar la forma de programar las líneas de Entrada/Salidas de un PIC(16F84). A través de las cuales se conectan los distintos periféricos que se desean gobernar. Esas 13 líneas se agrupan en dos puertas. La puerta A está representada en la posición 0x05 del área de datos. Cualquier instrucción de un programa que implique leer o escribir sobre esta posición, conlleva obtener o sacar información binaria por las cinco líneas que componen dicha puerta y que se denominan RA0-RA4. Los tres bits de más peso de la posición 0x05 no están reflejados en ninguna línea, por lo que no tienen ningún valor.

MICROCONTROLADORES Y MICROPROCESADORES

Página 4

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

B. CONTROL DE UNA LAMPARA: 7. Edite el siguiente programa en MPLAB. 8. Compile el programa. 9. Simule el programa y abra las ventanas de Memoria de programa, registros de función especial (FSR) y la ventana de estimulus para el puerto de entrada.

CONTROL DE UNA LAMPARA List p=16F84; include "P16F84.INC"; Temp equ 0x0c; org 0x00; goto Inicio org 0x05; Inicio clrf PORTB; bsf STATUS,RP0; clrf TRISB; movlw b'00000011' movwf TRISA; bcf STATUS,RP0; clrf Temp; Loop movf PORTA,W; andlw b'00000011'; movwf Temp; btfsc STATUS,Z; goto Apagar ; movlw b'00000001' subwf Temp,W btfsc STATUS,Z; goto Encender; movlw b'00000010' subwf Temp,W btfsc STATUS,Z; goto Encender; Apagar bcf PORTB,0; goto Loop Encender bsf PORTB,0; goto Loop end;

COMENTARIOS Tipo de procesador Incluye el fichero con los nombres de los registros Variable temporal que se almacena en la posición 0x0c Vector de Reset Salva el vector de interrupción Borra los latch de salida Selecciona banco 1 de la memoria de datos Puerta B se configura como salida RA0 y RA1 se configuran como entrada Selecciona banco 0 de la memoria de datos Pone a 0 el registo o variable temporal Leer el estado de la puerta A Filtra la información para quedarnos con RA0 y RA1 Almacena temporalmente RA0=0 y RA1=0 ?? Si, la lámpara se apaga

;RA0=1 y RA1=0 ?? Si, la lámpara se enciende RA0=0 y RA1=1 ?? Si, la lámpara se enciende No, la lámpara se apaga

La lámpara se enciende Fin del programa fuente

MICROCONTROLADORES Y MICROPROCESADORES

Página 5

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

Memoria de programa, registros de función especial

10. Anote en una tabla el valor del PLC, W, TRISA, TRISB, PORTA y PORTB para cada corrida del programa. EJECUCION

STATUS

PLC

WORK

TRISA

TRISB

PORTA

PORTB

0 1 2 3 4 5 6

00011100 00011100 00011100 00111100

00000000 00000101 00000110 00000111

00000000 00000000 00000000 00000000

00011111 00011111 00011111 00011111

11111111 11111111 11111111 11111111

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00111100 00111100

00001000 00001001

00000000 00000011

00011111 00011111

00000000 00000000

00000000 00000000

00000000 00000000

00111100 00011100

00001010 00001011

00000011 00000011

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

00011100 00011100

00001100 00001101

00000000 00000000

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

00011100 00011100

00001110 00001111

00000000 00000000

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

00011100 00011100

00010000 00011001

00000000 00000000

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

00011100 00011100

00011010 00001100

00000000 00000000

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

7 8 9 10 11 12 13 14 15

MICROCONTROLADORES Y MICROPROCESADORES

Página 6

UNIVERSIDAD CATOLICA DE SANTA MARIA

11.

GRUPO: 01

Dibuje el diagrama de flujo del programa anterior.

12. Determine cuál es el propósito del programa. Como metáfora central podemos ubicar este caso de una habitación con una instalación conmutada en la que una lámpara se puede manipular el encendido o apagado desde dos interruptores colocados en posiciones distantes entre sí. Su funcionamiento se puede determinar a través de la siguiente tabla: Entradas RA0 RA1 0 0 0 1 1 0 1 1 MICROCONTROLADORES Y MICROPROCESADORES

Salida RB0 0 1 1 0

Estado de lámpara APAGADA ENCENDIDA ENCENDIDA

APAGADA Página 7

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

C. CONTROL COMBINACIONAL: 13. Edite el siguiente programa en MPLAB. 14. Comente cada una de las líneas del programa. 15. Compile el programa. 16. Simule el programa y abra las ventanas de Memoria de programa, registros de función especial (FSR) y la ventana de estimulus para el puerto de entrada.

CONTROL COMBINACIONAL

COMENTARIOS

List p=16F84

Tipo de procesador.

include "P16F84.INC"

Incluimos ficheros con los nombres de los registros.

Temp equ 0x0c

Variable temporal que se almacena en la posición 0x0c.

org 0x00

Vector de Reset.

goto Inicio org 0x05

Salva el vector de interrupción.

Inicio clrf PORTB

Borra los latch de salida.

bsf STATUS,RP0

Ponemos a 1 el bit RP0.

clrf TRISB

Puerta B se configura como salida.

movlw b'00001001'

Introducimos el numero b'00001001' al trabajo.

movwf OPTION_REG

Movemos lo que esta en el trabajo al registro OPTION_REG.

movlw b'00000011'

Introducimos el numero b'00000011' al trabajo.

movwf TRISA

Movemos lo que esta en el trabajo a al registro TRISA.

bcf STATUS,RP0

Ponemos a 0 el bit RP0.

Loop: clrwdt

Limpiamos nuestro “perro guardian” por lo cual “refrescamos”.

movf PORTA,W

Movemos el PORTA a nuestro trabajo.

andlw b'00000011'

Operamos un AND al trabajo con b'00000011'.

movwf Temp

Almacenamos temporalmente.

btfsc STATUS,Z

Analizamos si Z=0 o Z=1??

goto Secuencia_00

Salto incondicional a al registro Secuencia_00.

movlw b'00000001'

Introducimos el numero b'00000001' al trabajo.

subwf Temp,W

Sustraemos el trabajo a almacenamiento temporal y luego al W

MICROCONTROLADORES Y MICROPROCESADORES

Página 8

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

btfsc STATUS,Z

Analizamos si Z=0 o Z=1??

goto Secuencia_01

Salto incondicional a al registro Secuencia_01.

movlw b'00000010'

Introducimos el numero b'00000001' al trabajo.

subwf Temp,W

Sustraemos el trabajo a almacenamiento temporal y luego al W.

btfsc STATUS,Z

Analizamos si Z=0 o Z=1??

goto Secuencia_10

Salto incondicional a al registro Secuencia_10.

Secuencia_11

Registro: Secuencia_11

movlwb'11110000'

Introducimos el numero b'00001001' al trabajo.

movwf PORTB

Movemos lo que esta en el trabajo al registro PORTB

goto Loop

Salto incondicional a al registro LOOP.

Secuencia_00

Registro: Secuencia_00

movlw b'10101010'

Introducimos el numero b'1010101010' al trabajo.

movwf PORTB

Movemos lo que esta en el trabajo al registro PORTB

goto Loop

Salto incondicional a al registro LOOP.

Secuencia_01

Registro: Secuencia_01

movlw b'01010101'

Introducimos el numero b'0101010101' al trabajo.

movwf PORTB

Movemos lo que esta en el trabajo al registro PORTB

goto Loop

Salto incondicional a al registro LOOP.

Secuencia_10

Registro: Secuencia_10

movlw b'00001111'

Introducimos el numero b'00001111' al trabajo.

movwf PORTB

Movemos lo que esta en el trabajo al registro PORTB

goto Loop

Salto incondicional a al registro LOOP.

end

Fin de programa.

MICROCONTROLADORES Y MICROPROCESADORES

Página 9

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

Memoria de programa, registros de función especial 17. Anote en una tabla el valor del PLC, W, TRISA, TRISB, PORTA y PORTB para cada corrida del programa. EJECUCION

STATUS

PLC

WORK

TRISA

TRISB

PORTA

PORTB

0 1 2 3 4 5 6 7

00011100 00011100 00011100 00111100 00111100 00111100 00111100 00111100 00111100

00000000 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100

00000000 00000000 00000000 00000000 00000000 00001001 00001001 00000011 00000000

00011111 00011111 00011111 00011111 00011111 00011111 00011111 00011111 00000011

11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00011100 00011100 00011100 00011100 00011100 00011100

00001101 00001110 00001111 00010000 00011001 00011010

00000000 00000000 00000000 00000000 00000000 00000000

00000011 00000011 00000011 00000011 00000011 00000011

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000

00011100 00011100

00001100 00001100

00000000 10101010

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

8 9 10 11 12 13 14 15 16

MICROCONTROLADORES Y MICROPROCESADORES

Página 10

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

18. Dibuje el diagrama de flujo del programa anterior.

19. Determine cuál es el propósito del programa. Este programa no es muy diferente al anterior las puertas RB0-RB7 actúan como salidas y se activan en función del estado de las entradas RA0-RA1. La diferencia entre el problema anterior y el de ahora es que emplea “WDT” este actúa como temporizador que podemos encontrarlos en la mayoría de PICs. El WDT se encarga de provocar un reinicio al sistema cada vez que sobrepase su intervalo de tiempo indicado. Para evitar sobrepasamientos debemos colocar la función CLRWDT que nos permitirá “refrescar” y así evitar reinicios.

MICROCONTROLADORES Y MICROPROCESADORES

Página 11

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

D. CONTROL SECUENCIAL: 20. 21. 22. 23.

Edite el siguiente programa en MPLAB. Comente cada una de las líneas del programa. Compile el programa. Simule el programa y abra las ventanas de Memoria de programa, registros de función especial (FSR) y la ventana de estimulus para el puerto de entrada.

CONTROL COMBINACIONAL

COMENTARIOS

List p=16F84

Tipo de procesador.

include "P16F84.INC"

Incluimos ficheros con los nombres de los registros.

org 0x00

Variable temporal que se almacena en la posición 0x0c.

goto Inicio

Salto incondicional a Inicio.

org 0x05

Vector de Reset.

Inicio clrf PORTB

Borramos los bits de PORTB

bsf STATUS,RP0

Ponemos a 1 el bit RP0.

clrf TRISB

Borramos los bits de TRISB

movlw b'00001001'

Introducimos el numero b'00001001' al trabajo.

movwf OPTION_REG

Movemos lo que esta en el trabajo al registro OPTION_REG.

movlw b'00000011'

Introducimos el numero b'00000011' al trabajo.

movwf TRISA

Movemos lo que esta en el trabajo a al registro TRISA.

bcf STATUS,RP0

Ponemos a 0 el bit RP0 del registro STATUS

Loop: clrwdt

Limpiamos nuestro “perro guardian” por lo cual “refrescamos”.

btfsc PORTA,0

Analizamos en PORTA si RA0=0 o RA0=1??

goto Alarma_On

Salto incondicional a al registro a Alarma_On.

btfss PORTA,1

Analizamos en PORTA si RA0=1 o RA1=1??

goto Loop

Salto incondicional a Loop.

Alarma_Off bcf PORTB,0

En Alarma_Off borramos el bits RB0 de PORTB

goto Loop

Salto incondicional a Loop.

Alarma_On btfsc PORTA,1

En Alarma_Off analizamos en PORTA si RA0=1 o RA1=1??

goto Alarma_Off

Salto incondicional a Alarma_Off

bsf PORTB,0

Ponemos a 1 el bit 0 de PORTB

goto Loop

Salto incondicional a Loop.

end

Fin del programa

MICROCONTROLADORES Y MICROPROCESADORES

Página 12

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

24. Anote en una tabla el valor del PLC, W, TRISA, TRISB, PORTA y PORTB para cada corrida del programa. EJECUCION

STATUS

PLC

WORK

TRISA

TRISB

PORTA

PORTB

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

00011100 00011100 00011100 00111100 00111100 00111100 00111100 00111100

00000000 00000101 00000110 00000111 00001000 00001001 00001010 00001011

00000000 00000000 00000000 00000000 00000000 00001001 00001001 00000011

00011111 00011111 00011111 00011111 00011111 00011111 00011111 00011111

11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00111100 00011100

00001100 00001101

00000011 00000011

00000011 00000011

00000000 00000000

00000000 00000000

00000000 00000000

00011100 00011100 00011100 00011100 00011100 00011100 00011100

00001110 00001111 00010000 00011001 00011010 00001100 00001100

00000011 00000011 00000011 00000011 00000011 00000011 00000011

00000000 00000011 00000011 00000011 00000011 00000011 00000011

00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000

MICROCONTROLADORES Y MICROPROCESADORES

Página 13

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

25. Dibuje el diagrama de flujo del programa anterior.

26. Determine cuál es el propósito del programa. Se desea armar un sistema de tipo secuencial en el que la salida no depende del estado actual de las entradas, sino que también depende del estado anterior. Si se activa el pulsador OFF, la alarma se desconecta y se mantiene en este estado aunque el pulsador OFF vuelva a la posición de reposo y se desactive. Si ambos pulsadores permanecen activados simultáneamente, la alarma permanecerá desactivada. Podemos simplificar nuestro sistema a través de la siguiente tabla de verdad. Estado de la alarma

Entradas 0 0 1 1 MICROCONTROLADORES Y MICROPROCESADORES

0 1 0 1

--U.E.--

APAGADA ENCENDIDA

APAGADA Página 14

UNIVERSIDAD CATOLICA DE SANTA MARIA

IV.

GRUPO: 01

CUESTIONARIO FINAL: 1. Realice un programa que funcione según la siguiente tabla, considerando que el puerto B es entrada y el A es salida.

RB2

RB1

RB0

RA4

RA3

RA2

RA1

RA0

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

0 1 1 0 1 0 1 1

1 1 0 1 0 1 1 0

0 0 0 1 1 1 0 1

1 0 1 1 0 1 1 0

0 1 1 0 0 0 1 1

2. Para el programa anterior repita los pasos desarrollados en cada uno de los programas anteriores.

CUESTIONARIO FINAL List p=16F84; include "P16F84.INC"; org 0x00; goto Inicio org 0x05; Inicio clrf PORTA; bsf STATUS,RP0; clrf TRISA; movlw b'00000111'; movwf TRISB; bcf STATUS,RP0; movlw b'00000000'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_000 clrw; movlw b'00000001'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_001 clrw; movlw b'00000010'; movwf Temp;

subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_010 clrw; movlw b'00000010'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_010 clrw; movlw b'00000011'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_011 clrw; movlw b'00000100'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_100 clrw; movlw b'00000101'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_100

MICROCONTROLADORES Y MICROPROCESADORES

clrw; movlw b'00000110'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_100 clrw; movlw b'00000111'; movwf Temp; subwf Temp,PORTB; btfss STATUS,Z; goto Secuencia_100 Secuencia_000 movlw b'00001010'; movwf PORTA; goto Inicio Secuencia_001 movlw b'00011001'; movwf PORTA; goto Inicio Secuencia_010 movlw b'00011001'; movwf PORTA; goto Inicio

Secuencia_011 movlw b'00001110'; movwf PORTA; goto Inicio Secuencia_100 movlw b'00010100'; movwf PORTA; goto Inicio Secuencia_101 movlw b'00001110'; movwf PORTA; goto Inicio Secuencia_110 movlw b'00011011'; movwf PORTA; goto Inicio Secuencia_111 movlw b'00010101'; movwf PORTA; goto Inicio end

Página 15

UNIVERSIDAD CATOLICA DE SANTA MARIA

GRUPO: 01

DIAGRAMA DE FLUJO

MICROCONTROLADORES Y MICROPROCESADORES

Página 16

UNIVERSIDAD CATOLICA DE SANTA MARIA

V.

GRUPO: 01

CONCLUSIONES Y OBSERVACIONES: MPLAB-IDE es una Plataforma de Desarrollo Integrada bajo Windows, con múltiples prestaciones, que permite escribir el programa para los PIC en lenguaje ensamblador (assembler) o en C (el compilador C se compra aparte), crear proyectos, ensamblar o compilar , simular el programa y finalmente programar el componente, si se cuenta con el programador adecuado. MPLAB incorpora todas las utilidades necesarias para la realización de cualquier proyecto y, para los que no dispongan de un emulador, el programa permite editar el archivo fuente en lenguaje ensamblador de nuestro proyecto, además de ensamblarlo y simularlo en pantalla, pudiendo ejecutarlo posteriormente en modo paso a paso y ver como evolucionarían de forma real tanto sus registros internos, la memoria RAM y/o EEPROM de usuario como la memoria de programa, según se fueran ejecutando las instrucciones. Además el entorno que se utiliza es el mismo que si se estuviera utilizando un emulador. Para comenzar un programa desde cero para luego grabarlo al μC en MPLAB® v7.XX los pasos a seguir son: 1) Crear un nuevo archivo con extensión .ASM y nombre cualquiera 2) Crear un Proyecto nuevo eligiendo un nombre y ubicación 3) Agregar el archivo .ASM como un SOURCE FILE 4) Elegir el microcontrolador a utilizar desde SELECT DEVICE del menú CONFIGURE Una vez realizado esto, se está en condiciones de empezar a escribir el programa respetando las directivas necesarias y la sintaxis para luego compilarlo y grabarlo en el PIC. Una vez escrito y depurado el programa, se procede a la compilación. Para esto, desde el menú PROJECT se elige la opción BUILD ALL (construir todo) que, si no existen errores, devolverá un mensaje como BUILD SUCCESFULL. Los errores que muestra el compilador son del tipo sintácticos, es decir que si el programa "construido" llegara a tener un error, por ejemplo que esperase a que se ponga un bit en “0” y nunca pasase, se estará en un bucle infinito a pesar de que el compilador compilará perfectamente porque no hay error de sintaxis.

VI.

BIBLIOGRAFÍA:  http://perso.wanadoo.es/pictob/mplab.htm  https://espanol.answers.yahoo.com/question/index?qid=20081205041556AA1wN0i  http://es.wikipedia.org/wiki/MPLAB  centros.edu.xunta.es/iesperdouro/files/MPLAB-V8.00.pdf  es.slideshare.net/victorpe/uso-mplab-presentation  www.info-ab.uclm.es/labelec/Solar/Microcontroladores/UsodeMplab.htm  www.unioviedo.es/ate/alberto/Entorno%20MPLAB_v7xx.pdf

MICROCONTROLADORES Y MICROPROCESADORES

Página 17