PROGRAMACIÓN DE MICROCONTROLADORES
Laboratorio N°2
MPLAB X IDE y Lenguaje de
Programación ASSEMBLY
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Ing. César Ciriaco Martínez Pág. 2
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
MPLABX y Lenguaje de Programación
Objetivos
1. Utilizar las instrucciones para programar al microcontrolador PIC18F4550
2. Utilizar software de desarrollo proporcionada por el fabricante MPLAB X IDE última
versión.
3. Utilizar módulo de desarrollo
Introducción
Los PICs constituyen en la actualidad una forma de proveer inteligencia a equipos o
sistemas para un mejor desempeño de los mismos. Esta alternativa de automatización se
encuentra prácticamente a la mano pues la información y herramientas de desarrollo son,
en cierta medida, proporcionadas por el fabricante. El campo de acción de los PICs va
desde la activación o desactivación de entradas o salidas en general hasta el
procesamiento digital de señales pasando por aplicaciones específicas como la conversión
A/D, modulación PWM y muchas más.
Para que realicen los eventos que queramos es necesario programarlos insertándoles un
lenguaje apropiado, conformado por instrucciones, que estos puedan entender y por
tanto realizar las tareas específicas que se les asigna.
Preparación
Para la realización de este laboratorio se requiere la lectura previa de la información
proporcionada para el curso, como el texto y el manual del fabricante.
Equipos y Materiales
● Computadora
● Software de desarrollo
● Proyector multimedia
● Texto del curso
● Manual del fabricante
● Tarjeta de desarrollo
Ing. César Ciriaco Martínez Pág. 3
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Seguridad
Trabajar con Seguridad evita que las personas sufran daños, y provee un ambiente
satisfactorio de trabajo.
Al trabajar en este laboratorio o taller y cualquiera de los subsiguientes, realice el
siguiente procedimiento:
1. Al ingresar, inspeccione:
Las vías de acceso.
Orden y limpieza.
2. En su estación de trabajo evalúe las condiciones de:
Orden y Limpieza.
Herramientas y equipos.
3. Realice su trabajo teniendo en cuenta:
Orden y limpieza.
Seguridad.
Proceda a realizar las conexiones de los equipos o implementación de los circuitos
comprobando que la línea eléctrica se encuentre desconectada.
Solicite visto bueno al profesor antes de aplicar energía eléctrica.
4. Realice el análisis de riesgo personal:
¿Qué es lo que voy a hacer?
¿Qué es lo que puede salir mal?
¿Qué debo hacer para que no salga mal?
5. Al terminar sus labores, deje su estación de trabajo en buenas condiciones:
Ordenado y limpio.
Seguro.
Desconecte el suministro de energía eléctrica.
Ing. César Ciriaco Martínez Pág. 4
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Procedimiento - PARTE I
¿Qué es MPLABX IDE?
MPLAB X IDE es un software que corre en una PC para desarrollar aplicaciones para
microcontroladores y controladores de señal digital de Microchip. Es llamado como Entorno
de Desarrollo Integrado (IDE), para desarrollar códigos en sistemas embebidos.
1. Para hacer la simulación en el MPLAB primero vamos a crear un proyecto, seguimos
los siguientes pasos:
✓ Dar doble click sobre el ícono del MPLABX IDE v 5.15 o versión actualizada
✓ Aparecerá una ventana como en la figura N°1
Figura N°1. Ventana principal MPLAB X IDE
✓ Hacer click en CREATE NEW apareciendo como la figura que se muestra abajo.
Figura N°2. Crear nuevo proyecto
Ing. César Ciriaco Martínez Pág. 5
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
✓ Aparece la siguiente ventana
Microchip Embedded Standalone Project Next
Figura N°3. Escoger tipo de proyecto
✓ En la ventana Select Device All families PIC18F4550 Next
Figura N°4. Selección de PIC
✓ En la ventana Select Tool, seleccionamos Simulator, que servirá para poder realizar
pruebas en nuestro IDE, de lo contrario si se tiene un hardware, se selecciona el
hardware indicado y puede depurar en tiempo real.
Ing. César Ciriaco Martínez Pág. 6
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Figura N°5. Selección de herramienta a utilizar
✓ Seleccionamos nuestro compilador el cual vamos a trabajar durante todo este curso
MPASM Next
Figura N°6. Selección de compilador
✓ Creamos una carpeta en el disco D, llamado “LABORATORIO_PIC”, en Browse…
escoger la carpeta creada y abrir. Colocar el nombre del proyecto LAB_PIC18F, el cual
será nuestro proyecto durante todo el curso. Quedará de la siguiente manera, como
se muestra la figura de abajo y finalmente FINISH para terminar nuestra creación del
nuevo proyecto.
Ing. César Ciriaco Martínez Pág. 7
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Figura N°7. Nombre de proyecto.
✓ Para hacer el nuestro primer programa hacemos clic derecho en el proyecto
“LAB_PIC18F”, New, AssemblyFile.asm
Figura N°8. Nuevo programa en Assembly
Ing. César Ciriaco Martínez Pág. 8
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
✓ Escribimos para nuestro primer programa el nombre “ejemplo_1” y Finish.
Figura N°9. Nombre de archivo .asm
1.1 Programa con instrucciones orientadas con BYTES
;***********PROGRAMA CON INSTRUCCIONES ORIENTADAS A OPERACIONES CON BYTES************
;************************************************************************************
#include<P18F4550.inc> ; definición para los SFR (Registros de funciones especiales)
;-----CONFIGURACIÓN DE BITS --------CRISTAL 20 Mhz y sin PLL-------------
;CONFIG1H
CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator (HS))
; CONFIG2L
CONFIG PWRT = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOR = OFF ; Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and software)
; CONFIG2H
CONFIG WDT = OFF ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
; CONFIG3H
CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on Reset)
CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
; CONFIG4L
CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
;---------------------------------------------------
CBLOCK 0X000
var1
var2
ENDC
Ing. César Ciriaco Martínez Pág. 9
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
ORG 0x000000 ;Vector de Reset
goto MAIN
ORG 0x000008 ;Vector de interrupción de alta prioridad
ORG 0x000018 ;Vector de interrupción de baja prioridad
ORG 0x000020 ;Cualquier dirección mayor a 0x18
MAIN: ; inicia nuestro código del programa
MOVLW .25 ;copia el valor decimal 25 al registro W
MOVWF var1 ;mueve lo que está en el registro W a SRAM 0x000
MOVLW .20
ADDWF var1 ;Suma W con el var1 y el resultado queda en var1
MOVF var1,W ;mueve del SRAM var1 a W
MOVWF var2 ;mueve de W a var2 (0x001);
NEGF var2 ;complementa var2
MOVFF var2,var1 ;mueve el valor de var2 al registro var1
MOVF var1,W
SETF var2 ;obliga todos los bits de var2 a 1
SWAPF var1 ;intercambia los valores de los nibbles
NOP ; no opera
NOP
END ;Directiva que indica el fin del programa
✓ A continuación ensamblamos el proyecto, haciendo clic en el siguiente icono.
Figura N°10. Icono de ensamblado de programa
✓ Si el programa está ok, saldrá el siguiente comando.
Figura N°11. Mensaje de salida de proyecto
Ing. César Ciriaco Martínez Pág. 10
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
✓ Para simular nuestro programa.
Figura N°12. Icono de depuración de proyecto
✓ En el menú Window desplegar las siguientes ventanas para visualizar el trabajo interno
del PIC, sus configuraciones, registros y el tiempo que demoran las instrucciones.
Figura N°13. Selección de Stopwatch
✓ En el Stopwatch, nos damos cuenta el tiempo de un ciclo de instrucción (200 ns) y las
de salto son el doble.
Figura N°14. Ventana de Stopwatch
Ing. César Ciriaco Martínez Pág. 11
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
1.2 Programa con instrucciones orientadas a operaciones con bits
En el Ítem anterior se vio la manera de simular operaciones con bytes y además se
enseñó a simular su comportamiento. Ahora se verá la simulación de operaciones con
bits, los procedimientos son los mismos con algunos cambios mínimos.
✓ Cerramos el archivo: ejemplo_1.asm
✓ Excluimos el archivo ejemplo_1.asm del proyecto, para esto damos click derecho sobre
el archivo y en el menú desplegable damos click en Exclude file from current
configuration.
Figura N°15. Excluir programa del proyecto
✓ Luego abrimos un nuevo archivo para nuestro segundo ejemplo.
✓ Seguimos los mismos pasos del ítem anterior con nombre de ejemplo_2 y lo agregamos
a nuestro proyecto.
Después agregar la programación respectiva que se muestra en la gráfica de abajo.
Figura N°16. Creación de nuevo programa
Ing. César Ciriaco Martínez Pág. 12
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
En el siguiente programa se realizará instrucciones con operaciones con bits.
;***********PROGRAMA CON INSTRUCCIONES ORIENTADAS A OPERACIONES CON BITS************
;************************************************************************************
#include<P18F4550.inc> ; definición para los SFR (Registros de funciones especiales)
;-----CONFIGURACIÓN DE BITS --------CRISTAL 20 Mhz y sin PLL-------------
; CONFIG1H
CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator (HS))
; CONFIG2L
CONFIG PWRT = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOR = OFF ; Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and
software)
; CONFIG2H
CONFIG WDT = OFF ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN
bit))
; CONFIG3H
CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on
Reset)
CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
; CONFIG4L
CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
;---------------------------------------------------
CBLOCK 0X000
valor_1
ENDC
ORG 0x000000 ;Vector de Reset
goto MAIN
ORG 0x000008 ;Vector de interrupción de alta prioridad
ORG 0x000018 ;Vector de interrupción de baja prioridad
ORG 0x000020 ;Cualquier dirección mayor a 0x18
MAIN: ; inicia nuestro código del programa
MOVLW b'10001111'
MOVWF 0x001 ;mueve al SRAM 0x001
BCF 0x001,7 ;obliga a ‘0’ el bit 7 del registro 0x001
BCF 0x001,3 ;obliga a ‘0’ el bit 3 del registro 0x001
BSF 0x001,6 ;obliga a ‘1’ el bit 6 del registro 0x001
MOVLW B'10101010'
MOVWF valor_1
BTFSS valor_1,7 ;testea el bit 7 si es ‘1’
CLRF valor_1 ;limpia si no cumple
INCF valor_1 ;si es verdadera incrementa el registro valor_1
BTFSC 0x001,3 ; testea el bit 3 del registro 0x001 si es ‘0’
CLRF 0x001 ;si no se cumple limpie el registro
BTG 0x001,7 ;si se cumple invierte el estado del bit 7 del registro 0x001
NOP
END ;Directiva que indica el fin del programa
Ing. César Ciriaco Martínez Pág. 13
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
1.3 Programa con instrucciones orientadas a operaciones con literales
Crear un programa llamado ejemplo_3
;***********PROGRAMA CON INSTRUCCIONES ORIENTADAS A OPERACIONES CON BITS************
;************************************************************************************
#include<P18F4550.inc> ; definición para los SFR (Registros de funciones especiales)
;-----CONFIGURACIÓN DE BITS --------CRISTAL 20 Mhz y sin PLL-------------
; CONFIG1H
CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator (HS))
; CONFIG2L
CONFIG PWRT = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOR = OFF ; Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and
software)
; CONFIG2H
CONFIG WDT = OFF ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN
bit))
; CONFIG3H
CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on
Reset)
CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
; CONFIG4L
CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
;---------------------------------------------------
CBLOCK 0X000
valor_1
ENDC
ORG 0x000000 ;Vector de Reset
goto MAIN
ORG 0x000008 ;Vector de interrupción de alta prioridad
ORG 0x000018 ;Vector de interrupción de baja prioridad
ORG 0x000020 ;Cualquier dirección mayor a 0x18
MAIN: ; inicia nuestro código del programa
MOVLW .10
ANDLW B'01010101' ;realiza la operación AND con el literal y W
MOVLW .20
ADDLW 0x20 ;suma el literal con W
IORLW B'11110000' ;realiza un operación OR el literal con W
MOVLW .5
MULLW .2 ;multiplica el literal con W y el resultado se almacena en PRODH:PRODL
MOVFF PRODL,auxiliar ;se mueve PRODL al registro auxiliar
NOP
END ;Directiva que indica el fin del programa
Ing. César Ciriaco Martínez Pág. 14
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
1.4 Programa con instrucciones orientadas a operaciones de control
Crear un programa llamado ejemplo_4
;***********PROGRAMA CON INSTRUCCIONES ORIENTADAS A OPERACIONES DE CONTROL************
;************************************************************************************
#include<P18F4550.inc> ; definición para los SFR (Registros de funciones especiales)
;-----CONFIGURACIÓN DE BITS --------CRISTAL 20 Mhz y sin PLL-------------
; CONFIG1H
CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator (HS))
; CONFIG2L
CONFIG PWRT = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOR = OFF ; Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and
software)
; CONFIG2H
CONFIG WDT = OFF ; Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN
bit))
; CONFIG3H
CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins are configured as digital I/O on
Reset)
CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)
; CONFIG4L
CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
;---------------------------------------------------
CBLOCK 0X000
ENDC
ORG 0x000000 ;Vector de Reset
goto MAIN
ORG 0x000008 ;Vector de interrupción de alta prioridad
ORG 0x000018 ;Vector de interrupción de baja prioridad
ORG 0x000020 ;Cualquier dirección mayor a 0x18
MAIN: ; inicia nuestro código del programa
MOVLW .255
ADDLW .1
BC 0X20 ;si hay acarreo en el STATUS "Carry=1" entonces
;salta a la dirección 0x000020 de la memoria de programa
SETF 0X20 ;setea la dirección 0x20 de la SRAM
NOP
GOTO MAIN
END ;Directiva que indica el fin del programa
Ing. César Ciriaco Martínez Pág. 15
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Figura N°17. Registro STATUS del PIC18F4550
Fuente: Microchip
Ing. César Ciriaco Martínez Pág. 16
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Copiar el siguiente programa en el MPLAB, analizar, comentar y simular paso a paso:
#include<P18F4550.inc>
CONFIG FOSC = HS
CONFIG PWRT = OFF
CONFIG BOR = OFF
CONFIG WDT = OFF
CONFIG PBADEN = OFF
CONFIG MCLRE = ON
CONFIG LVP = OFF
CBLOCK 0X020
Reg1
Reg2
ENDC
ORG 0x000000
goto MAIN
ORG 0x000008
ORG 0x000018
ORG 0x000020
MAIN:
bsf Reg1,0
bcf Reg2,7
btfss Reg1,7
clrf Reg1
MOVLW .10
movwf 0x40
REPETIR:
call suma
BUCLE:
bc BUCLE
goto REPETIR
suma:
movlw .2
addwf 0X40
return
END
Ing. César Ciriaco Martínez Pág. 17
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Ejercicio de clase
Diseñar un programa en clase que reste 2 números y si el resultado es positivo, en el
registro 0x002 de la memoria SRAM que grabe el número 1, si el resultado es ‘0’ que grabe
el 2 y si es negativo que grabe el número 3.
2. Mostrar evidencias de ejecución de los programas del Ejercicio de clase.
● Capturar ventanas que muestran el resultado de la creación del proyecto.
● Capturar ventanas que muestran el resultado del ensamblaje del proyecto.
● Capturar ventanas que muestran la simulación paso a paso.
Modelo de Informe
Deberá contener lo siguiente:
Carátula
1. Nombre del laboratorio
2. Nombres de los integrantes
3. Sección a la que pertenecen
4. Fecha de realización
5. Fecha de presentación
Fundamento Teórico
Deberá ser conciso y redactado con lenguaje propio. Estará basado en las lecturas recomendadas o
cualquier otra información relacionada con el tema. En cualquier caso no será mayor de tres (03) páginas.
Resultados del Laboratorio
Deberá contemplar lo siguiente:
1. Los datos, tablas, resultados de los programas y respuestas a las preguntas que se
soliciten en el procedimiento.
2. Los programas deberán contar con líneas de comentarios
3. Deberá acompañarse al programa, el diagrama de flujo del mismo.
Observaciones y Conclusiones
Serán únicamente referidas a la experiencia de laboratorio y redactadas en lenguaje propio.
Ing. César Ciriaco Martínez Pág. 18
Lab. N° 2 MPLAB X IDE y Lenguaje de Programación
Aplicación de lo aprendido
GRUPO_1 Diseñar un programa en el cual se coloquen 2 números (num1 y num2), se comparen y
según el resultado en un registro de la RAM de Datos colocar de la siguiente manera:
Si: num1>numB = 1; Si: num1<num2 = 2 y Si: num1=num2 = 3. Según corresponda.
GRUPO_2 Diseñar un programa que al colocar 3 números, estos se sumen y almacene en
un registro de la memoria de datos llamado valor_suma, luego hacer un bucle
con la instrucción goto 5 veces y rotar a la izquierda y por último 3 veces a la
derecha, del resultado invertir los nibbles, todo ello quedando en el registro
valor_suma.
GRUPO_3 Diseñar un programa que al colocar 2 números, estos se resten y luego
decrementar en 1 unidad 3 veces (haciendo con bucles), almacenarlo en un
registro, si el registro llega ser cero, entonces automáticamente colocar en la
memoria de datos el número 100, si es diferente de cero el número 200, el
registro se llamará valor_resta.
GRUPO_4 Diseñar un programa que al colocar 2 números, estos se multipliquen,
inmediatamente después realice una operación AND con el valor b’10101010’ y
luego una IOR con el valor 0x54, para luego invertir los nibles del resultado, el
cual se almacenarán en un registro que se denominará ALMACENAMIENTO.
Observaciones Generales
1. La presentación del informe se realiza al ingresar al Laboratorio. En la clase siguiente a su
realización.
2. Se tomará en cuenta las reglas de ortografía en la redacción del informe.
3. La evaluación se realizará del siguiente modo.
Programación de Microcontroladores Sección
Curso:
Lab. No: 02 Mesa No:
MPLAB X IDE Y
LENGUAJE DE
Tema: Fecha:
PROGRAMACIÓN
ASSEMBLY
Participantes:
1
2
3
4
Ing. César Ciriaco Martínez Pág. 19