Está en la página 1de 42

PROGRAMACIÓN DE MICROCONTROLADORES

IV Ciclo

Laboratorio N°2

MPLABX y Lenguaje de Programación


INTEGRANTES:
• García Riveros Pohl
• Taipe Otarola Jerson
• Aguilar Huamani Pedro

SECCIÓN: B
DOCENTE
Cesar Augusto Ciriaco Martínez

Fecha de realización 23/08/2017


Fecha de entrega 06/09/2017
ÍNDICE
Capítulo 1 ...................................................................................................................................... 3
I. Introducción. ..................................................................................................................... 3
II. Objetivos. .......................................................................................................................... 4
III. Fundamento teórico...................................................................................................... 4
1. ¿QUE ES MPLAB X IDE? ................................................................................................. 4
2. Directivas ....................................................................................................................... 5
2.1. Compilación del Programa y carga al PIC .............................................................. 7
Capítulo 2 ...................................................................................................................................... 8
IV. Preparación. .................................................................................................................. 8
1. Equipos y Materiales ..................................................................................................... 8
2. Seguridad....................................................................................................................... 8
V. Procedimientos parte I. ................................................................................................... 10
1. Diseñar un programa en clase que reste 2 números y si el resultado es positivo en un
registro de la memoria que grabe el número 1 si son iguales que grabe el 2 y si es negativo
que grave el número 3. Dibuje su diagrama de flujo. ........................................................ 10
1.1. diagrama de flujo ................................................................................................ 10
............................................................................................................................................. 12
............................................................................................................................................. 14
............................................................................................................................................. 15
1.2. Mostrar evidencias de ejecución de los programas de los ítems 1, 2 y 3 ........... 15
VI. PROCEDIMIENTO – PARTE II ........................................................................................ 22
1. Instrucciones con literales........................................................................................... 22
1.1. Copiar el siguiente programa en el MPLAB, analizar y simular paso a paso: ...... 23
2. Instrucciones de acceso a la memoria de datos (F) .................................................... 25
2.1. Copiar el siguiente programa en el MPLAB, analizar y simular paso a paso: ...... 26
3. Instrucciones de manipulación de bits........................................................................ 27
3.1. Copiar el siguiente programa en el MPLAB y simular paso a paso: .................... 28
Capítulo 3 .................................................................................................................................... 32
VII. Conclusiones................................................................................................................ 32
VIII. Sugerencias. ................................................................................................................ 32
IX. Bibliografía. ................................................................................................................. 33
X. Anexos. ............................................................................................................................ 34
Capítulo 1

I. 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 Objetivos.
II. Objetivos.

• Utilizar las instrucciones para programar al microcontroladorPIC16F877A

• Utilizar software de desarrollo proporcionada por el fabricante

• Utilizar módulo de desarrollo

III. Fundamento teórico.

1. ¿QUE ES MPLAB X IDE?

MPLAB X IDE es un programa de software que se ejecuta en una PC (Windows, Mac


OS, Linux) para desarrollar aplicaciones para microcontroladores Microchip y
controladores de señales digitales. Se llama un entorno de desarrollo integrado
(IDE), ya que proporciona un único "entorno" integrado para desarrollar código para
microcontroladores integrados.

MPLAB X Integrated Development Environment trae muchos cambios a la cadena de


herramientas de desarrollo de microcontroladores PIC. A diferencia de las versiones
anteriores del MPLAB IDE que se desarrollaron completamente en casa, MPLAB X
IDE se basa en el IDE NetBeans de código abierto de Oracle. Tomar este camino nos
ha permitido agregar muchas características frecuentemente solicitadas de forma
rápida y sencilla, al mismo tiempo que nos proporciona una arquitectura mucho más
extensible para ofrecerle aún más nuevas características en el futuro (Fuente:
http://www.microchip.com/mplab/mplab-x-ide).

MPLAB es un editor IDE gratuito, destinado a productos de la marca Microchip. Este


editor es modular, permite seleccionar los distintos microcontroladores soportados,
además de permitir la grabación de estos circuitos integrados directamente al
programador.

Es un programa que corre bajo Windows, Mac OS y Linux. Presenta las clásicas barras
de programa, de menú, de herramientas de estado, etc. El ambiente MPLAB® posee
editor de texto, compilador y simulación (no en tiempo real). Para comenzar un
programa desde cero para luego grabarlo al μC en MPLAB® v7.XX los pasos a seguir
son:

• Crear un nuevo archivo con extensión .ASM y nombre cualquiera

• Crear un Proyecto nuevo eligiendo un nombre y ubicación

• Agregar el archivo .ASM como un SOURCE FILE


• 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.

2. Directivas

Las directivas son palabras reservadas para indicarle al MPLAB® que funciones debe
configurar cuando compile nuestro programa. Las indispensables para la correcta
compilación del programa son:
Ilustración 1.Funciones básicas de programa (Fuente: Wikipedia)
2.1. Compilación del Programa y carga al 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.

También existen mensajes y advertencias; los mensajes pueden ser, por ejemplo,
que se está trabajando en un banco de memoria que no es el bank 0, etc. Las
advertencias tienen un poco más de peso, por ejemplo: el PIC seleccionado no
es el mismo que está definido en el programa, etc. En ambos casos, mensajes y
advertencias, la compilación termina satisfactoriamente, pero hay que tener en
cuenta siempre lo que nos dicen estos para prevenir errores.

Terminada la compilación el MPLAB® nos genera un archivo de extensión. hex el


cual es completamente entendible para el PIC. Es decir, solo resta grabarlo al PIC
por medio de una interfaz como por ejemplo el programador Picstart Plus de
microchip. Una vez completado esto, se alimenta al mismo y el programa ya se
estará ejecutando.
Arquitectura e información del 16F877

Capítulo 2

IV. 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.

1. Equipos y Materiales

• Computadora

• Software de desarrollo

• Proyector multimedia

• Texto del curso

• Manual del fabricante

• Tarjeta de desarrollo

2. 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:

a) Al ingresar, inspeccione:

• Las vías de acceso.

• Orden y limpieza.

b) En su estación de trabajo evalúe las condiciones de:

• Orden y Limpieza.

• Herramientas y equipos.

c) Realice su trabajo teniendo en cuenta:

• Orden y limpieza.

• Seguridad.

pág. 8
Arquitectura e información del 16F877

• 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.

d) 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?

e) 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.

pág. 9
Arquitectura e información del 16F877

V. Procedimientos parte I.

1. Diseñar un programa en clase que reste 2 números y si el resultado es positivo


en un registro de la memoria que grabe el número 1 si son iguales que grabe
el 2 y si es negativo que grave el número 3. Dibuje su diagrama de flujo.

1.1. diagrama de flujo

pág. 10
Arquitectura e información del 16F877

• Probando:

pág. 11
Arquitectura e información del 16F877

• Lo cual se verifica que cumple

LIST P=16F877A
INCLUDE<P16F877A.INC>
pág. 12
Arquitectura e información del 16F877

ORG 0
;Comparar dos números
numero1 EQU .10
numero2 EQU .5
MOVLW numero1
MOVWF 20h
MOVLW numero2
SUBWF 20h,W ; 20h-numero2 --> numero1 - numero2
BTFSS STATUS,C
GOTO menor
BTFSS STATUS,Z
GOTO mayor
GOTO igual
menor
MOVLW b'00000011'
MOVWF 23h
GOTO fin
mayor
MOVLW b'00000010'
MOVWF 24h
GOTO fin
igual
MOVLW b'00000001'
MOVWF 25h
GOTO fin
fin
GOTO $
END

Código ingresado

pág. 13
1.2. Mostrar evidencias de ejecución de los programas de los ítems 1, 2 y 3

● Capturar ventanas que muestran el resultado de la creación del proyecto.


Creando el proyecto
Arquitectura e información del 16F877

pág. 16
Arquitectura e información del 16F877

pág. 17
Arquitectura e información del 16F877

pág. 18
Arquitectura e información del 16F877

pág. 19
Arquitectura e información del 16F877

● Capturar ventanas que muestran el resultado del ensamblaje del proyecto.

● Capturar ventanas que muestren la simulación paso a paso.


pág. 20
Arquitectura e información del 16F877

pág. 21
Arquitectura e información del 16F877

VI. PROCEDIMIENTO – PARTE II

1. Instrucciones con literales

Al hablar de literales, es hablar de datos de 8 bits que según el código de


operación de la instrucción hará que éstos se sumen, se resten o hagan
operaciones lógicas trabajando en conjunto con el registro de trabajo W que es
un registro de 8 bits y sirve como soporte a las operaciones del ALU.

Forma de operar:

Valor 1 Valor 2
Resultado

pág. 22
Arquitectura e información del 16F877

Se observa que pasa el literal, que viene con la instrucción, al ALU y junto con
un valor proveniente del registro de trabajo W se operarán y el tipo de operación
que realizará el ALU a depender de lo que contenga el código de operación de
la instrucción. Una vez que se lleva a cabo la operación, el resultado se guarda
por defecto en el registro de trabajo W.

El valor inicial que contenía W es reemplazado, “chancado”, por el nuevo


resultado de la operación dada.

1.1. Copiar el siguiente programa en el MPLAB, analizar y simular paso a paso:

LIST P=16F877 ; Escoge el tipo de microcontrolador a usar

org 0000h ;Empieza el programa en la


dirección cero

movlw .10 ;W =

addlw .20 ;W =

addlw .30 ;W =

sublw .80 ;W =

clrw ;W =

movlw b’11110000’ ;W =

andlw b’00001111’ ;W =

iorlw b’01010101’ ;W =

iorlw b’10101010’ ;W =

addlw .35 ;W =

addlw 0x23 ;W =

goto $ ; Bucle infinito

end ; Fin del programa

pág. 23
Arquitectura e información del 16F877

pág. 24
Arquitectura e información del 16F877

2. Instrucciones de acceso a la memoria de datos (F)

MOVF DireccF,d ; d <-[DireccF]


SWAPF DireccF,d ; d <-Intercambia nibbles[DireccF]
ADDWF DireccF,d ; d <-[DireccF]+ W
SUBWF DireccF,d ; d <-[DireccF]- W
INCF DireccF,d ; d <-[DireccF]+ 1
DECF DireccF,d ; d <-[DireccF]- 1
ANDWF DireccF,d ; d <-[DireccF]and W
IORWF DireccF,d ; d <-[DireccF] or W
XORWF DireccF,d ; d <-[DireccF] xor W
COMF DireccF,d ; d <-negación[DireccF]
RLF DireccF,d ; d <-rota izquierda[DireccF]
RRF DireccF,d ; d <-rota derecha[DireccF]
INCFSZ DireccF,d ; d <-incrementa y salta si es 0[DireccF]
DECFSZ DireccF,d ; d <-decrementa y salta si es 0[DireccF]

La imagen siguiente nos servirá para representar el proceso de operar con la


memoria de datos en el cual se pueden leer los datos como también escribir.

COMPARADOR.

pág. 25
Arquitectura e información del 16F877

2.1. Copiar el siguiente programa en el MPLAB, analizar y simular paso a paso:

;***********************************************************
;Operaciones con instrucciones de acceso a memoria
;Programación y aplicaciones PIC16F877A
;***********************************************************
List P=16F877

Memoria1 EQU 0X20


Memoria2 EQU 0X21
Memoria3 EQU 0X22

org 0000h
nop ;no operación
movlw .18 ;W=
movwf Memoria1 ;[Memoria1]=
movlw .15 ;W=
movwf Memoria2 ;[Memoria2]=
movlw .20 ;W=
movwf Memoria3 ;[Memoria3]=
nop ;no operación
movf Memoria2,0 ;W=
addwf Memoria1,0 ;W=
movwf Memoria3 ;[Memoria3]=
comf Memoria3,0 ;negación bit a bit, W=
movwf Memoria1 ;[Memoria1]=
movf Memoria2,0 ;W=
subwf Memoria3,0 ;W=
movwf Memoria2 ;[Memoria2]=
swapf Memoria2,1 ;intercambio de nibbles[Memoria2]=
nop ;no operación
nop ;no operación
goto $
end

pág. 26
Arquitectura e información del 16F877

3. Instrucciones de manipulación de bits

Son instrucciones que van a forzar el valor de un bit, quiere decir que el valor del
bit es cero o bien uno.

BSF 0X02,0 ; Pone en 1 el bit “0” de la dirección 02H

Ahora si queremos poner en cero el bit 6 de la dirección 03H entonces


procedemos a escribir la siguiente instrucción:

BCF 0X03,6 ; Pone en “0” el bit 6 de la dirección 03H

pág. 27
Arquitectura e información del 16F877

3.1. Copiar el siguiente programa en el MPLAB y simular paso a paso:

;******************************************************
*****
;Operaciones con instrucciones de manipulación de bits
;Programación y aplicaciones PIC16F877A
;******************************************************
*****

List P=16F877

Registro1 EQU 0X20


Registro2 EQU 0X21

org 0000h
;----------------------------------------------
;carga valores a los registros

clrf Registro1 ;[Registro1]=


movlw 0xff
movwf Registro2 ;[Registro2]=
;----------------------------------------------
;Manipulación de bits de los registros

bsf Registro1,0 ;[Registro1]=


bcf Registro2,7 ;[Registro2]=

bsf Registro1,1 ;[Registro1]=


bcf Registro2,6 ;[Registro2]=

bsf Registro1,2 ;[Registro1]=


bcf Registro2,5 ;[Registro2]=

bsf Registro1,3 ;[Registro1]=


bcf Registro2,4 ;[Registro2]=

bsf Registro1,4 ;[Registro1]=


bcf Registro2,3 ;[Registro2]=

bsf Registro1,5 ;[Registro1]=


bcf Registro2,2 ;[Registro2]=

bsf Registro1,6 ;[Registro1]=


bcf Registro2,1 ;[Registro2]=

bsf Registro1,7 ;[Registro1]=

pág. 28
Arquitectura e información del 16F877

bcf Registro2,0 ;[Registro2]=

goto $
end

detallando la creación de nuevo proyecto

pág. 29
Arquitectura e información del 16F877

• Funcionamiento de los estados por partes

• En (10) :El registro 1 se llevará a cabo en la dirección 20

• En (11) El registro 2 se llevará a cabo en la dirección 21

• En (17) -Limpia el registro 1 dejandolo en 0

• En (18) Mueve 0xff (hexadecimal) =decimal sería (255) a W.

• En (19) Mueve W=(255) al registro 2

• En (23) Ahora “W” se mueve a 20.

• En (24) bsf permite setear (poner en 1). En este caso al bit N°0. Como se
sabe, anteriormente el registro 1 se limpió por lo que sus 8 bits se encuentran
en 0. Finalmente se obtiene el número 1.

• En (26) bdf permite limpiar (poner en 0). En este caso al bit N°7. Como se
sabe, anteriormente el registro 2 está dado por =255= (1111111 en binario).
Por lo tanto se obtiene el número 127 (01111111).

• En (27) Ahora el bit N°1 del registro1 cambiará de 0 a 1pasando de 1


(00000001) a 3 (00000011)

• En (29) El bit N°6 del registro2 cambiará de 1 a 0, o sea, de 127 (01111111) a


63 (00111111)

• En (30) El bit N°2 del registro1 cambiará de 0 a 1, osea de 3 (00000011) a 7


(00000111)

• En (32) El bit N°5 del registro2 cambiará de 1 a 0, o sea ,de 63 (00111111) a


31 (00011111)

• - En (33) El bit N°3 del registro1 cambiará de 0 a 1, o sea, de 7 (00000111) a


15 (00001111)

• En (35) El bit N°4 del registro2 cambiará de 1 a 0, o sea ,31 (00011111) a 15


(00001111)

• En (36) El bit N°4 del registro1 cambiará de 0 a 1 o sea, 15 (00001111) a 31


(00011111)

pág. 30
Arquitectura e información del 16F877

• En (38) El bit N°3 del registro2 cambiará de 1 a 0, o sea ,15 (00001111)


cambiará a 7 (00000111)

• En (39) El bit N°5 del registro1 cambiará de 0 a 1, o sea ,31 (00011111) a 63


(00111111)

• En (41) El bit N°2 del registro2 cambiará de 1 a 0, o sea ,7 (00000111) a 3


(00000011)

• En (42) El bit N°6 del registro1 cambiará de 0 a 1, o sea, de 63 (00111111) a


127 (01111111)

• En (44) El bit N°1 del registro2 cambiará de 1 a 0, o sea, de 3 (00000011) a 1


(00000001)

• En (45) El bit N°7 del registro1 cambiará de 0 a 1, o sea, de 127 (01111111) a


255 (11111111)

• En (47) El bit N°0 del registro2 cambiará de 1 a 0, o sea, de 1 (00000001) a 0


(00000000)

• En (48) Se produce un salto infinito.

pág. 31
Arquitectura e información del 16F877

Capítulo 3

VII. Conclusiones.

• Se logro utilizar correctamente las instrucciones de para programar el


microcontrolador PIC16F877A , simulado a su vez en MPLABX IDE V 4.00, de
esta manera facilitó el reconocimiento de cada una de las instrucciones y se
logró establecer relación entre ellas.

• Se reitera que se utilizó el programa desarrollado por el fabricante

• Se logró entender el funcionamiento del PIC 16F877A teniendo en cuenta su


hoja técnica o Datasheet, a su vez saber el funcionamiento de su bloque
funcional.

VIII. Sugerencias.

• Es necesario conocer las directivas e instrucciones a gamma media por lo


menos, con su debida sintaxis para el entendimiento correcto de lo que se
desea o pretende obtener (verificar Anexos X).

• Al momento de compilar verificar que solo hay un proyecto ingresado en la


pestaña superior izquierda o está habilitado solo 1 , ya que si hay mas es
mejor deshabilitarlo o eliminarlo una vez realizado el back up.

pág. 32
Arquitectura e información del 16F877

IX. Bibliografía.

• MICROCONTROLADORES SEM.2.pptm . obtenida por docente del curso.

• https://www.youtube.com/watch?v=O5he-1qhaSg.

• https://www.todopic.com.ar/foros/index.php?topic=12345.5;wap2.

• http://perso.wanadoo.es/luis_ju/pic4/pic4_08.html.

• http://www.cec.uchile.cl/~mcarter/EL54B/Informe%20SPDI%20presentacio
nes/pic.pdf.

• http://perso.wanadoo.es/pictob/mpasm.htm.

pág. 33
Arquitectura e información del 16F877

X. Anexos.

pág. 34
Arquitectura e información del 16F877

pág. 35
Arquitectura e información del 16F877

pág. 36
Arquitectura e información del 16F877

pág. 37
Arquitectura e información del 16F877

pág. 38
Arquitectura e información del 16F877

pág. 39
Arquitectura e información del 16F877

Curso: PROGRAMACIÓN DE MICROCONTROLADORES Sección B

Lab. No: 02 Mesa No: 01

Tema: MPLABX y Fecha: 23/08/2017


Lenguaje de
Programación

Participantes:

1 • Pohl Jason García Riveros

2 • Taipe Otarola Jerson

3 • Aguilar Huamani Pedro

No Puntaje
CRITERIOS A EVALUAR Muy bueno Bueno Requiere Mejora
aceptable Alcanzado

Desarrollo del Laboratorio

Implementación del
Laboratorio: conexiones,
seguridad, orden. 3 2 1 0

Implementación del
Laboratorio: Sustento de la
labor realizada en clase a 3 2 1 0
través de un ejercicio en grupo
como reto.

Culminación del
procedimiento del laboratorio,
de los cálculos, toma de datos 4 3 2 1-0
necesarios y respuesta a las
preguntas del test.

Informe y sustentación

pág. 40
Arquitectura e información del 16F877

Informe: Llenado de datos,


estructura, redacción y
ortografía, gráficos y 3 2 1 0
diagramas, referencias.

Informe: contenido
tecnológico, análisis de los
resultados, observaciones y 3 2 1 0
conclusiones.

Presenta la aplicación de lo
aprendido y funciona correcta
mente en físico o presenta su 4 3 2 1-0
análisis.

Puntaje Total

Comentarios o sugerencias

CRITERIOS DE SEGURIDAD USADOS PARA EQUIPOS Y PERSONAS:

FIRMA DEL PROFESOR:

………………………………………

pág. 41
Arquitectura e información del 16F877

pág. 42

También podría gustarte