You are on page 1of 9

INSTITUTO POLITÉCNICO NACIONAL

Escuela Superior de Ingeniería Mecánica y Eléctrica


UNIDAD ZACATENCO

Ingeniería en Comunicaciones y Electrónica

Acad emia d e Co mp u tació n


Asignatura de Microprocesadores

PRACTICA NO. 2

Alumno: Mera Zúñiga Yair Gersain


Docente: José Luis Bravo León
GRUPO: 6CM6
Boleta: 2016301066
Periodo: 2018-2

Fecha de entrega: 9 de marzo de 2018


PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

I. OBJETIVOS
-Utilizar las herramientas de desarrollo de MPLAB IDE.
-Aprender instrucciones para programar en Ensamblador.
-Simular el funcionamiento de programas-ejemplo
-Analizar los registros de memoria conforme va corriendo el programa.
-Entender el concepto de Direccionamiento Directo.

II. MARCO TEÓRICO


-MPLAB IDE.
MPLAB es un ambiente de desarrollo integrado (IDE, por sus siglas en inglés)
creado por Microchip Technology para dar soporte a la realización de proyectos
basados en microcontroladores PIC. Incluye varios módulos que permiten llevar a
cabo las distintas etapas de un proyecto: Edición, Ensamblaje, Simulación y
Programación. En el Laboratorio, cada equipo de trabajo cubrirá todas las etapas
con la versión 8,0 de MPLAB, exceptuando la Programación, que se ejecutará
mediante un software diferente y será responsabilidad del profesor o de un
asistente.
-Archivos del Proyecto
Al momento de compilar el programa se crean los siguientes archivos, este es un
ejemplo de cualquier programa:

 E001.asm  Archivo del programa en ensamblador


 E001.c  Archivo del programa en C
 E001.cod
 E001.err
 E001.hex  Archivo a cargar en el PIC
 E001.lst  Archivo donde encontramos las direcciones de instrucciones y
códigos de las instrucciones.
 E001.mcp  Archivo del proyecto
 E001.mcs
 E001.mcw  Archivo de espacio de trabajo

-Características de las instrucciones

2
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

Las instrucciones realizan operaciones y movimiento entre el “acumulador” o


“registro de trabajo” y los registros de la memoria RAM del microcontrolador.
El acumulador está representado con la letra W (work).
Dentro del programa utilizamos las siguientes instrucciones:
-Instrucciones para mover.
MOVLW k  Carga el número en el acumulador W.
El número que se va a cargar en el acumulador está representado por k, este
número puede escribirse en decimal, hexadecimal o binario.
Ejemplo:
MOVLW d’255’ ;decimal
MOVLW 0xFF ;hexadecimal
MOVLW b’11111111’ ;binario

MOVWF f  Mueve una copia del acumulador W al registro f.


MOVF f,d  Mueve una copia de registro f al destino d.
El destino puede ser:
Si d=0, el destino es el acumulador. Mueve una copia del registro f al
Acumulador W.
Si d=1, el destino es el registro f. En este caso el formato es un poco
confuso. Mueve del registro f al registro f. No pasa nada. El dato se queda en el
mismo lugar.
-Instrucciones para Cambiar el contenido de los registros.
CLRF f  El contenido del registro f se pone en ceros: 0x00
DECF f,d  Decrementa el registro f. El resultado de esta operación lo coloca
en el destino d.
Si d=0, el destino es el acumulador.
Si d=1, el destino es el registro f.

INCF f,d  Incrementa el registro f.


-Instrucciones para controlar el flujo del programa.
GOTO k  Salta a la etiqueta k.
NOP  Esta instrucción no hace nada durante un ciclo. Se puede ocupar para
realizar retardos.

3
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

-Instrucciones para controlar el microcontrolador


TRIS f  El contenido del acumulador determina las Entradas/Salidas del
Puerto f.
-Instrucciones para realizar operaciones aritméticas.
ADDWF f,d  Suma el contenido de W con el contenido del registro f.
ADDLW k  Suma el contenido del acumulador W con el numero k.
SUBLW k  Realiza la resta k – W
SUBWF f,d  Realiza la resta f – W

III. EQUIPO Y MATERIAL


 Software de desarrollo MPLAB IDE.
 Plantilla Forma.asm
 Manuel del PIC 18F4550
IV. DESARROLLO
1.- Creación del Proyecto:
1.1.- Crear una carpeta con el nombre: practica2

1.2.- Copiar en la carpeta creada el archivo: forma.asm y renombrar el


archivo como: practica2.asm

1.3.- Abrir MPLAB IDE


1.4.- Del Menú Principal, seleccionar la opción:

1.5.- Seleccionar el asistente de proyecto:

4
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

1.6.- Después seleccionar la opción: . Indique el dispositivo a


emplear:

1.7 Oprima la opción: . Posteriormente seleccione la


herramienta de Microchip MPASM Toolsuite:

1.8.- Salvar el proyecto. Asigne la carpeta practica2 como el lugar donde


se guardará el proyecto.
1.9.- Creación del proyecto. Seleccione la ruta de destino del proyecto.
1.10.- Adición de proyectos. Seleccionar el archivo: practica2.asm, para
agregarlo al proyecto. Haga uso de la opción: para agregar el archivo al
proyecto.

1.12.- Finalice el proceso.

5
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

2.- SIMULACIÓN
De acuerdo al diagrama de flujo mostrado a continuación, elaboré un programa
que utiliza DIRECCIONAMIENTO DIRECTO para leer un área de memoria que
inicia en la dirección 0050H, cinco datos almacenados en código BCD, realice la
conversión a su correspondiente código ASCII y los almacene en la misma área
de memoria.

2.1.- Para iniciar la edición, seleccioné el archivo fuente practica2.asm

2.2.- Inicie la edición del programa creado.

6
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

2.3.- Una vez concluida la edición, salve el programa y ejecute la

compilación: .
2.4.- Simulación del Programa. Del menú principal, elija la opción
Debugger y selccione la herramienta:

2.5.- De las opciones del menú principal, seleccione View y active la


visualización de registros con el comando:

2.6.- Oprima el icono para seleccionar y desplegar los registros SFR.

2.7.- Utilizando la opción agregue los registros WREG y PCL.

2.8.- Utilice la opción para desplegar el contenido de los registros


de memoria.

2.9.- Despliegue el contenido de los registros e introduzca datos BCD en


cinco localidades a partir de la dirección 50H.

2.10 En la carpeta del proyecto creado, localice y abre el archivo con


extensión .LST. Identifique las columnas de dirección, código de operación y
nemónicos del programa.

7
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

2.11 A partir del código del archivo .LST obtenga y anote en la tabla siguiente la
dirección y código de cada una de las instrucciones del programa.

2.12 Seleccione la opción Step Into y coloque el apuntador en la primera


instrucción para la ejecución paso por paso del programa.
2.13 Ejecute el programa paso por paso y anote los cambios en los registros FSR
y en los de memoria conforme se ejecuta cada una de las instrucciones
A continuación, esta es la tabla con los resultados paso a paso del programa:
REGISTROS SFR REGISTROS DE MEMORIA
DIRECCION CÓDIGO INSTRUCCIÓN
PCL W 50 51 52 52 54
001000 5050 movf 0x50,0 0x00 0x00 04 06 03 09 01
001002 0F30 addlw 0x30 0x02 0x04 04 06 03 09 01
001004 6E50 movwf 0x50 0x04 0x34 04 06 03 09 01
001006 5051 movf 0x51,0 0x06 0x34 34 06 03 09 01
001008 0F30 addlw 0x30 0x08 0x06 34 06 03 09 01
00100A 6E51 movwf 0x51 0x0A 0x36 34 06 03 09 01
00100C 5052 movf 0x52,0 0x0C 0x36 34 36 03 09 01
00100E 0F30 addlw 0x30 0x0E 0x03 34 36 03 09 01
001010 6E52 movwf 0x52 0x10 0x33 34 36 03 09 01
001012 5053 movf 0x53,0 0x12 0x33 34 36 33 09 01
001014 0F30 addlw 0x30 0x14 0x09 34 36 33 09 01
001016 6E53 movwf 0x53 0x16 0x39 34 36 33 09 01
001018 5054 movf 0x54,0 0x18 0x39 34 36 33 39 01
00101A 0F30 addlw 0x30 0x1A 0x01 34 36 33 39 01
00101C 6E54 movwf 0x54,0 0x1C 0x31 34 36 33 39 01

Los registros en color rojo son aquellas que fueron sucediendo conforme iba paso
a paso el programa para cada instrucción.
Como se puede ver en la tabla, el Counter Program (PCL), solo va recorriendo
cada paso con una dirección diferente. En el acumulador suceden cambios
cuando mandamos un registro o número al mismo. Se van pasando por cada
registro de memoria que se introduce en el acumulador y aparte le estamos
sumando a el acumulador 0x30 y después los traspasará de nuevo a el registro de
memoria.

3. Cuestionario
3.1 ¿Qué relación existe entre el registro PCL y las direcciones de las
instrucciones del programa?
R= El PCL va apuntando a las direcciones de las instrucciones del
programa.

8
PRACTICA NO. 2 PROGRAMADOR EN ENSAMBLADOR

3.2 ¿Cuál es la dirección inicial del programa?


R= 001000
3.3 ¿Cuál es la dirección final del programa?
R= 00101C
3.4 ¿Cuál es la longitud de código de cada instrucción?
R= 2 bytes (cada registro de 16 bits)
3.5 ¿Cuál es la longitud total del programa?
R= 30 bytes
3.6 ¿Qué sería el cambio en el código del programa si los registros de memoria
empleados fueran a partir de la dirección 0x40?
R= Cambiaría el código. Sería: 5040
3.7 ¿Cuál sería el cambio en el código del programa si la literal a sumar fuera
0x20?
R= El código de programa sería: 0F20

V. CONCLUSIONES
Se logró utilizar las diferentes herramientas de MPLAB IDE de acuerdo a la
realización de la práctica con el archivo forma.asm. También nos pudimos dar
cuenta como cambiaba los registros tanto de PCL como del acumulador cada vez
que le asignábamos “step into”, y a la par como en las instrucciones de regresar el
valor a su dirección correspondiente y ver el cambio en las direcciones de
memoria de manera directa.
Las herramientas de MPLAB IDE fueron de gran utilidad en esta práctica.
Aprendimos las diferentes instrucciones básicas del ensamblador para poder
realizar o diseñar programas para el PIC que vamos a utilizar.
Las configuraciones de las simulaciones fueron las más óptimas para que el
desarrollo del programa se llevara a cabo.

VI. BIBLIOGRAFÍA
 Introducción a los microcontroladores, José Adolfo González V., McGraw Hill
 Microcontroladores PIC, Tavernier, Editorial Paraninfo
 Microcontroladores PIC, La solución en un solo chip, Angulo y otros, Editorial
Paraninfo

You might also like