práctica 1: introducción al entorno mplab x y simulación ...€¦ · 1) cargar en un registro...

15
Departamento de Ingeniería Electrónica ETSI de Telecomunicación Universidad Politécnica de Madrid Práctica 1: Introducción al entorno MPLAB X y simulación de programas en ensamblador y C Autores: Pedro José Malagón Marzo Profesores del Dpto. de Ingeniería Electrónica Fecha última revisión: Abril 2017

Upload: others

Post on 01-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

DepartamentodeIngenieríaElectrónicaETSIdeTelecomunicaciónUniversidadPolitécnicadeMadrid

Práctica 1: Introducción al entorno

MPLAB X y simulación de programas en

ensamblador y C

Autores:

Pedro José Malagón Marzo

ProfesoresdelDpto.deIngenieríaElectrónica

Fechaúltimarevisión:Abril2017

Page 2: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

2

Contenido 1. Introducción.......................................................................................................................4

2. Proyectodeejemplo:ports_control.X...............................................................................4

3. Primerproyecto:p1.X........................................................................................................5

3.1. Ejercicio.Modificaports_control.S.................................................................................6

4. Entradasenelsimulador:Estímulos..................................................................................9

4.1. Ejercicio.FunciónmPORTA2PORTB..............................................................................10

5. BigEndianyLittleEndian.................................................................................................10

5.1. Ejercicio.Endianness....................................................................................................10

6. FuncionesenC.................................................................................................................11

Page 3: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

3

Tabla de figuras

Figura1. SeleccióndepinesparaelLogicAnalyzer...................................................................7Figura2. I/OPinsconregistrosdelpuertoA.............................................................................7Figura3. Breakpointinicial........................................................................................................8Figura4. Barradeherramientasdeldepurador........................................................................8Figura5. Personalizacióndelabarradeherramientas..............................................................9Figura6. Seleccióndeestímulos................................................................................................9Figura7. TipodeproyectoparaPIC32.....................................................................................12Figura8. Seleccióndedispositivo............................................................................................12Figura9. Escogerelsimuladorcomohardware.......................................................................13Figura10. EscogerelcompiladorXC32....................................................................................13Figura11. NombredeproyectoyestablecercomoMainProject...........................................14

Page 4: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

4

1. Introducción

Lasesiónpráctica1consisteenutilizarrealizarprogramasenensambladordeMIPSyenCparaunPICdelafamiliaPIC32MX.Losobjetivosmásimportantesdeestaprácticason:

• FamiliarizaciónconelentornodedesarrolloMPLABIDEdeMicrochip:

o Simulador

o Depuracióndeprogramas

• Consolidacióndeconceptosbásicosvistosenclase:

o Manipulacióndebits

o Controldeperiféricos:GPIO

Al igual que en la práctica 0 utilizaremos MPLAB X IDE para editar y simular el programa.UtilizaremoselcompiladorXC32paracompilar.

En primer lugar abriremos un proyecto existente en ensamblador, con un programa enensamblador, que iremos modificando y ampliando para conseguir lo que se pide.Aprenderemos a visualizar el estado de los pinesGPIO y provocar cambios en las entradas.Ademásveremosotrasutilidadesdedepuración:variables,registrosymemoria.

EnsegundolugarcrearemosunproyectoenCeimplementaremoslasmismasfuncionesquehayamostenidoquehacerenC,comprobandoqueobtenemosunresultadoequivalente.

El resultadoseráunficherocomprimido(.zip)conunconjuntodecapturasdepantalla,unfichero ensamblador y un fichero en C con todas las funciones que se hayan pedido. Porfavor,siguelanomenclaturaindicada.

2. Proyecto de ejemplo: ports_control.X

EnprimerlugartenemosqueabrirelprogramaMPLABIDE(buscarenelmenúinicio).

Vamos a trabajar con un proyecto de ejemplo proporcionado por Microchip. Se trata delproyecto ports_control.X, que realiza operaciones sobre el puerto A de GPIO. El códigooriginal,enotrasinstalaciones,sepuedeencontrareneldirectoriodeinstalacióndexc32:

PATH_DE_MICROCHIP\xc32\v1.40\examples\assembly_examples\ports_control

Ennuestrocasoyaestádisponibleenlacarpetadelentorno:

C:\Usuarios\usuario\MPLABXProjects

El proyecto tiene un único fichero fuente ports_control.S, en la carpeta Source Files. Esteficherotienedosfunciones:

• mPORTAClearBits que recibe un único argumento: la máscara con los pines delpuertoAquehayqueponera0.

• main,quepreparaelargumentopasadoamPORTAClearBits(máscaraparabit7).

La extensión típica para el fichero ensamblador es .s o .asm. En este caso se utiliza .S (enmayúscula) para poder utilizar el preprocesador de C (así lo interpreta el compilador xc32).Gracias a ello el fichero hace uso de etiquetas (típicas del preprocesador de C) como a0 o

Page 5: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

5

IOPORT_BIT_7,queestándefinidasenel ficheroxc.h.Los ficherosdecabecera incluídoscon<>sonlosdelsistema.Unodelosdirectoriosdelsistemaes

C:\Archivosdeprograma\Microchip\xc32\v1.40\pic32mx\include

LosregistrosdecontroldeunpuertodeGPIOson:

• TRISx:cadabitcontrolaladireccióndelpin(0essalida,1esentrada)

• PORTx:cadabitreflejaelvalordelpin(0esnivelbajo,1esnivelalto)

• LATx:cadabitreflejaelvalordelregistrodesalidadelpin.Estevalorcoincideconelpinsiestáconfiguradocomosalida,ypuedenocoincidirsiesentrada.

Para modificar un solo bit de un registro, manteniendo el resto con su valor original,normalmenteesnecesarioleerelvaloractualdelregistro,realizarunaoperaciónbinaria(ORoAND) con la máscara adecuada, y guardar el resultado en el registro. Se necesitan 3operaciones(Read/Modify/WriteoRMW)parahacerlo.Siobservamoselcódigo,sehacesoloenunaoperación.Noseaccedeal registroLATAenestecaso,sinoal registroLATACLR.Casitodos los registros de control de periféricos tienen asociados 3 registros que facilitan lamodificacióndebitsenunaúnica instrucción.Lafunciónqueserealizadependedelsfijodelregistro:CLR (paraponerbitsa0),SET (paraponerbitsa1)e INV (paracambiarbits). Los4registros (LATA, LATACLR, LATASET y LATAINV) son consecutivos y cada uno ocupa 32-bits,aunqueluegosoloalgunosdeellostienensentido,porquenohayatantasGPIO(sepuedeverenlasección11.2CLR,SETandINVRegistersdeldatasheet).

Losnombresde los registrosestándisponibleseneldatasheetdel componente.Paraqueelcompilador lospuedautilizar,estándefinidos losnombres,asociadosa lasdireccionesrealesdelregistro,enelficheroensamblador

C:\Archivosdeprograma\Microchip\xc32\v1.40\pic32-libs\proc\32MX250F128B\p32mx250f128b.S

ElficheroparaC(p32mx250f128b.h),quevimosenclase,conlasestructurasdeaccesoacadabitdelosregistros,tienelapalabraexternporquelavariableyaestádeclaradaenesteficheroconlapalabraclave.globalNOMBRE_DEL_REGISTRO(.globalLATACLRenestecaso).

El siguiente paso es generar el códigomáquina: compilar. Se compila el proyectomarcadocomoMainProject(ennegrita).Sinoeselabierto,póngalocomoMainProjecthaciendoclickenelbotónderechodelratónsobreelnombredelproyecto,yseleccionandolaopciónSetas

MainProject.LacompilaciónserealizaatravésdelmenúRun->BuildMainProject( )o

atravésdelmenúRun->CleanandBuildMainProject( ).Enelsegundocaso,selimpiantodoslosficherosintermediosgeneradosencompilacionesanterioresysecompiladesdecerotodoelproyecto.Elproyectodebecompilarcorrectamente.

3. Primer proyecto: p1.X

Enel anexo1detallamos lospasosa seguirpara crearunproyectoparanuestrodispositivoutilizandoelcompiladorgratuitoXC32,que incluyetodas lasherramientasparaconvertir losficherosenensambladoroCa códigomáquinadelMIPSdisponibleenelPIC32.Elproyectoincluye un conjunto de etiquetas de preprocesador para indicar el dispositivo y el lenguajeutilizado.Segúnlasetiquetasdefinidasseaccedeaunapartedelficheroxc.h,talycomosehavistoenclase.

Page 6: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

6

A continuación vamos a realizar nuestroprimerprograma, inspiradoenel ejemplo. Creeunnuevo proyecto y llámelo p1. Los ficheros fuente, tanto en ensamblador como en C, semuestranenlacarpetaSourceFiles.Noesposiblecrearenelentornounfichero.Smayúsculadeformacorrecta,por loquehayqueañadirunoyaexistente,creadofueradelentorno(enestecasoeldelejemploports_control).Hacemosclick conelbotónderechoen la carpetayseleccionamosAddExistingItem...

Navegaporelexploradordearchivoshastaseleccionarelficherodelejemplo,queestáen:

C:\Usuarios\usuario\MPLABXProjects\ports_control\source\ports_control.S

Marca las opcionesRelative (para que siga funcionando si copias el proyecto a otro sitio) ycopy(paraquehagaunacopiaymantengamoselejemplocomoreferencia).

Elsiguientepasoesgenerarelcódigomáquina:compilar.Lacompilaciónserealizaatravésdel

menúRun -> BuildMain Project ( ) o a través delmenúRun -> Clean and BuildMain

Project( ).

3.1. Ejercicio. Modifica ports_control.S

Elobjetivoestenerunanuevafunción,mPORTAToggleBits,conunargumento,queinviertalospines(Toggle)delpuertoAquesecorrespondanalosbitsdelargumentoqueesténa1.Enunarutinamain1seconfiguraránlospinesdelpuertoy,enunbucleinfinito,sellamaráalafunciónmPORTAToggleBitsconunargumentoparainvertirlos3bitsmenossignificativos.

Lasfasesson:

1. Modificarelnombredelaetiquetamainparaqueseamain02. Duplicarlarutinamain0yllamarlamain1.3. Añadirunanuevarutinamain,con3líneasdecódigo,antesdemain0.Tienequesaltar

amain1. main: j main1 nop4. Crear, además de la función mPORTAClearBits, la función mPORTAToggleBits. Esta

función,envezdeponera0,inviertelosbitsqueestána1enelargumento.¿Sepuedesimplificarlafunciónutilizandootroregistro?Siesasí,hazlo.

5. Modificarlarutinamain1paraqueconfigurelasGPIOcorrectamente(salidasdigitales)yllame,enunbucleinfinito,alafunciónmPORTAToggleBitsparamodificarlosbits0,1y2delpuerto(RA0,RA1yRA2).Elprogramanodeberíallegarnuncaalbucleinfinitoexistenteendless.

Paramodificar un registro como puede ser TRISA, es importante realizarlo en 3 fases, tal ycomosehaceenelejemploconLATACLR:

1)Cargarenunregistro(s0)ladirecciónconlapseudoinstrucciónla

2)Cargarenotroregistro(s1)laconstantequesequieraalmacenar(oleerlavariable)

3)Almacenarelregistros1enladirecciónalmacenadaens0

Page 7: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

7

Una vez el proyecto compile correctamente vamosa simularlo. El simulador tieneasociadasunasventanasquedebemosactivaratravésdelmenúWindow->Simulator.Activaremoslas3,yapareceranpestañasen laventanadeabajoparapodervisualizarlas:LogicAnalyzer, I/OPinsyStimulus.

EnprimerlugarseleccionaremosLogicAnalyzer,quenospermiteverelvalordelospinesqueseleccionemos,comosihubiésemospuestounosciloscopioamedirlaGPIO.Paraseleccionar

lospinesavisualizarpulsamoselicono .

Seleccionamos los pines que queremos modificar en el programa: RA0, RA1, RA2 y RA3,quedandoelresultadomostradoenlasiguientefigura

Figura1. SeleccióndepinesparaelLogicAnalyzer

AhoraseleccionamoslapestañaI/OPins.Estapestañamuestraelestadodelospines:modo,valor y módulo asociado. Recordamos que el número de pines es limitado y hay muchosperiféricosdisponibles.Tantoparaseñalesdeentradacomodesalidaaunmódulosepuedeelegirentrevariospinescomoalternativa(sección11.3PeripheralPinSelecteneldatasheet).Para lasentradas, losperiféricos tienenun registrode control (nombrede la señalmásRalfinal, como INT4R o U2RXR) en el que se elige qué pin de qué puerto se conecta. Para lassalidas,cadapintieneunregistrodecontrol(RPA0RoRPB3R)enelqueseeligequéseñaldesalidaseconectaaestepin(quémódulolocontrola).

El periférico del conversor analógico-digital (ADC) no es configurable, y se controla con elregistroANSELx (ANSELA,ANSELB, ...): cadabit controla si el pin está siendoutilizado comoentradaanalógicadelADC(1)ocomodigital(0).

En la ventana I/O Pins añade 4 filas, una para cada pin de interés, quedando el resultadomostradoenlasiguientefigura

Figura2. I/OPinsconregistrosdelpuertoA

Page 8: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

8

Porúltimo,antesdesimular,vamosaponerunpuntodeparada(breakpoint)alcomienzodelprograma. Los puntos de parada detienen el programa y nos permiten acceder al valor dememoria, registros y variables que tiene en ese momento el programa. De esta manerapodemoscomprobarsielcomportamientoeseladecuado.Lospuntosdeparadaseponenysequitanconunsimpleclickderatónenelnúmerodelíneaenelquesequiereponer.Enestecaso,hayqueponerunpuntodeparadaenlaprimerainstruccióndespuésdelmain(jmain1).Elsímbolodestopenvezdelnúmerodelíneaindicaquehayunpuntodeparada.

Figura3. Breakpointinicial

Yaestamospreparadosparasimularelprograma.SehaceutilizandoelmenúDebug->Debug

MainProjectoconelicono .

Enelmomentodelanzarelsimuladorseactivantodoslosiconosdecontroldelaejecucióndelsimuladorodepuradorenlabarradeherramientas,talycomomuestralasiguientefigura:

Figura4. Barradeherramientasdeldepurador

Elanexo2explicalafuncióndecadabotóndelsimulador.

Para poder visualizar correctamente los iconos de depuración puede que tengamos quepersonalizar la barra de herramientas del entorno, a través del menú View -> Toolbars.Tenemosquetenerseleccionadaslasopcionessegúnlasiguienteimagen

Page 9: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

9

Figura5. Personalizacióndelabarradeherramientas

Hayquedepurarelprogramahastaquefuncione.Recomendamosquesehagaconejecuciónpaso a paso, comprobandoel valor de los pines en LogicAnalyzer y en I/OPins. Si no es elcorrecto, tenencuenta loquehemoscomentadoanteriormentesobre ladirección (TRISx)ysobrelosADC(ANSELx).

Unavez terminado, realizaunacaptura (botónPrintpantalla)de laventanaLogicAnalyzeryotradeI/OPins.Guárdalasenlosficheroslogic_1.jpgyio_1.jpgrespectivamente,utilizandoelprogramaPaintdeWindows.

4. Entradas en el simulador: Estímulos

En el apartado anterior hemos visto las herramientas disponibles para ver el valor de lassalidas.Enelsimuladorpodemosasignarvaloresdeentradade lospines,simulandoelvalorque pondrían elementos externos. La ventana Stimulus nos permite controlarlos de formacómoda.

Hay5pestañasdiferentesparasimularentradas.Enesteprimerejemplovamosaverelmássimple:Asynchronous.Estaventanapermitecambiarelvalordeunpinmedianteunbotón(lacolumna Fire). Es necesario seleccionar el pin y la acción que se desea realizar. La figuramuestralasposiblesaccionesquesepuedenrealizar.

Figura6. Seleccióndeestímulos

SetHigh: Poneelpina1

SetLow: Poneelpina0

Toggle: Cambiaelvalordelpin

Page 10: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

10

PulseHigh: Pone el pin a 1 tantos tiempo como se indique en Value. Las unidades detiempopuedenser tiempo (ns,us,ms)o ciclosde reloj (independientede lafrecuenciadereloj).

PulseLow: Pone el pin a 0 tantos tiempo como se indique en Value. Las unidades detiempopuedenser tiempo (ns,us,ms)o ciclosde reloj (independientede lafrecuenciadereloj).

SetVoltage: PoneelvalordetensiónquesedeseeenV(parasimularentradasanalógicas).

AñadelospinesRA0aRA3alaventanadeestímulos.AñadealLogicAnalizeryalI/OPinslospinesRB0aRB3.

4.1. Ejercicio. Función mPORTA2PORTB.

Debesreutilizarelprogramaprevio.CreaunanuevafunciónmPORTA2PORTBqueleaelvalorquehayenelpuertoAypongaesevalorenelpuertoB.Utilizalaventanadeestímulosparavariar su valor y comprobar su correcto funcionamiento. Llama a esta función de formaindefinida desde una nueva rutinamain2 (inspirada enmain1), a la que se tiene que saltardesdelarutinamain.

Una vez hayas terminado realiza una captura (botón Print pantalla) de la ventana LogicAnalyzer y otra de I/O Pins. Guárdalas en los ficheros logic_2.jpg y io_2.jpg, utilizando elprogramaPaintdeWindows.

5. Big Endian y Little Endian

Paradistinguirsiunsistemaesbig-endianolittle-endiantenemosquevercuáleselordenenelquesealmacenanlosbytesenmemoria:elmássignificativoenladirecciónmásbaja(big-endian)oelmenossignificativoenladirecciónmásbaja(little-endian).Sitenemosencuentaque podemos hacer operaciones sobre 32-bits, sobre 16-bits y sobre 8-bits, podemoscomprobarfácilmenteelendiannessdelsistema.

Enclasehemoshecholaoperaciónalmacenandounvalorde32-bitsenmemoriaycargandoenunregistroelbyte1deesazonadememoria.UtilizandolosestímulosqueacabamosdeveryelpuertoA¿puedescomprobarlo?TenencuentaquelosregistrosdelpuertoAtienen32-bits,aunquesólohaya5disponiblesennuestromicrocontrolador.Enunaoperacióndelecturalospinesnodisponiblesdansiempre0.

5.1. Ejercicio. Endianness

Crea una nueva función endianness que te ayude en la tarea. Añade una rutina main3(inspirada enmain2) que llame a la función de forma indefinida, ymodificamain para quesalteamain3.Lafunción,parecidaalaanterior,debeutilizarcargade8-bitsenvezde32-bits(lb en vez de lw). Al leer un solo byte, si es el menos significativo tendrá el valor de losestímulos,mientrasqueelmássignificativo tendrá todo0.¿El sistemaesLittleEndianoBigEndian?Adjuntaunacapturadelsimuladorquejustifiquelarespuesta.Elnombredelacapturatiene que ser big.jpg si consideras que es big endian y little.jpg si consideras que es littleendian.

Page 11: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

11

6. Funciones en C

Desde un fichero ensamblador se puede llamar a funciones de un fichero en C y viceversa.Cadaficherosecompilaporseparadoy,alenlazar(linker),segeneraunficheroejecutablequecontienetodaslasfunciones.Sidesdeunficherosellamaaunafuncióndelaquenosetieneimplementación,ellinkersequejaconelmensajeundefinedreferenceto.

6.1. Ejercicio. Implementación en C

Elobjetivodeesteejercicioesimplementarfuncionesequivalentesalasquehemoshechoenensamblador en un fichero C, que llamamos ports_control.c. Para crear el ficheroseleccionamoslacarpetaSourceFilesyseleccionamoselmenúFile->NewFile.EscogemoseltipoC->CSourceFile.

Enesteficherotenemosquehacerlaimplementacióndelassiguientesfunciones:

voidmPORTAClearBitsenC(intarg);

voidmPORTAToggleBitsenC(intarg);

voidmPORTA2PORTBenC(void);

voidendiannessenC(void);

Lasfuncionesyasuponenquelospinessehanconfiguradocorrectamente.

EnelcasodeendiannessenC,lamejormaneradecargarunbytedeunadireccióndememoriadataesalmacenarladirecciónenunavariabledetipochar*.Leerelcontenidodeestavariablees equivalente a cargar un byte de memoria en registro. Para forzar la asignación de ladirección del registro PORTA, que es de tipo int, hay que hacer un casting, para que elprogramadorindiquequesabequeestácambiandoeltipo(sinosaleunaviso).LainstrucciónparaalmacenarladireccióndePORTAquedaríacomosigue:

char*ptr=(char*)(&PORTA);

Para poder llamar a las funciones y comprobar el funcionamiento debemos sustituir en elfichero ports_control.S todas las llamadas a las funciones originales. Añadiremos al final elsufijo enC para que llame a las funciones implementadas en C. Al depurar paso a paso elsimuladorcambiadeficherocuandollega.Compruebaquetodastenganelmismoresultado.Es posible ver el código ensamblador generado por el compilador en el menúWindow ->Debugging -> Disassembly. Se ve que cada instrucción en C se corresponde con varias enensamblador.

Todaslasimágenesyficherosgenerados,conlanomenclaturaindicada,setienenqueañadiraunficheroP1_NOMBRE_APELLIDO_puesto_XX.zip.NOMBREtienequesersustituidoporelnombredelalumno,APELLIDOporelapellidoyXXtienequesersustituidoporelnúmerodepuesto. Ambos miembros de la pareja tienen que generar el fichero (se puede copiar ycambiarelnombre).

El fichero .zip se puede crear seleccionando los ficheros, pulsando el botón derecho,seleccionandoEnviara->ficherocomprimido.

Page 12: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

12

ANEXO1:CreacióndeunproyectoBlink.X

SecreaunproyectonuevoatravésdelmenúFile->Newproject,outilizandoelicono

1.Chooseproject:MicrochipEmbedded->StandaloneProject

Figura7. TipodeproyectoparaPIC32

2.SelectDevice:Family32-bitMCUs(PIC32),Device:PIC32MX250F128B

Figura8. Seleccióndedispositivo

Page 13: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

13

3.Selecttool:Simulator

Figura9. Escogerelsimuladorcomohardware

6.Selectcompiler:XC32(v1.40)(C:\Archivosdeprograma\Microchip\xc32\...)

Figura10. EscogerelcompiladorXC32

7.SelectProjectNameandFolder:dejartodosloscampospordefectoyponerelnombrequecorresponda.Porejemploelprogramasepuedellamarblink(típicoprimerprograma).

Elcampo"Setasmainproject" indicaqueesteeselproyectoquesevaacompilarysimularcuandoseutilicenlasherramientasdelmenú.

Page 14: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

14

Figura11. NombredeproyectoyestablecercomoMainProject

PulsamosFinish.Enestemomentoapareceenellateralizquierdounascarpetasgeneradasporelproyecto.

Page 15: Práctica 1: Introducción al entorno MPLAB X y simulación ...€¦ · 1) Cargar en un registro (s0) la dirección con la pseudoinstrucción la 2) Cargar en otro registro (s1) la

SELC–IntroducciónalentornoMPLABXysimulacióndeprogramasenensamblador

15

ANEXO2:Botonesdelsimulador

Paraelprocesodedepuración.Detieneelprograma.

Pause.Sielprogramaseestáejecutandodeformalibre(nopasoapaso)sepuedeparar, además de con los puntos de parada, pulsando este botón. Esto activa el resto deopcionesdisponibles.

Reset.Comienzadenuevoelprogramayladepuración.

Continue.Ejecutahastaqueencuentreunpuntodeparada.

Stepover.Ejecutalasiguienteinstrucción.Siesunallamadaafunción,laejecutacomosifueraunaúnicainstrucción(enensamblador,jal)

Step into. Ejecuta la siguiente instrucción. Si es una llamada a función, sigue laejecuciónpasoapasodentrodelafunción.

Stepout.Ejecutahastaqueencuentreunretornodefunción(enensambladorjr$ra)

Runtocursor.Ejecutahastaquelleguealcursor.Esequivalenteaponerunpuntodeparadadondeestáelcursoryquitarlosegúnsepara.

SetPCtocursor.Empiezaaejecutardesdelainstrucciónenlaquesehapuestoelcursor.Esinteresanteparadepurarfuncionesconcretas.

Focus cursor at PC. Pone en la pantalla la instrucción que se va a ejecutar acontinuación.