Ir al contenido

MPLAB v8, MPLAB X, Proteus y placa

Hasta aqui aprendiste que escribir en ensamblador (MPASM), como va la palabra de configuracion (config bits) y el sistema minimo del PIC. Esta pagina cierra Fundamentos: explica con que herramientas compilas, simulas y pruebas en el curso UNEXPO.

En el flujo academico trabajamos principalmente con MPLAB v8 + MPASM + Proteus. Tambien veras MPLAB X para reconocer el entorno moderno si lo usas en otro equipo.

En informes y laboratorio se mezclan tres nombres. Conviene separarlos:

HerramientaQue esQue hace en el curso
MPLAB v8 / XIDE — entorno de desarrolloEditar .ASM, crear proyecto, lanzar el build, grabar con PICkit
MPASMEnsambladorTraduce .ASM.HEX (programa + palabra de configuracion)
Proteus ISISSimuladorEjecuta el .HEX en un circuito virtual — no compila
PICkit / programadorGrabadorEscribe el .HEX en la Flash del PIC real

MPLAB no es el ensamblador. MPLAB es la carpeta de trabajo; cuando pulsas Build, MPLAB llama a MPASM por ti.

Abres o creas un proyecto para PIC18F4550 y editas tu fuente con el estilo sandwich: LIST, #include, CONFIG, ORG, subrutinas, programa: al final.

El archivo en disco es texto plano (.ASM / .asm). MPLAB solo lo guarda y colorea — aun no hay .HEX.

Project → Build All invoca MPASM. Si no hay errores, obtienes el .HEX:

tu_programa.ASM
↓ MPASM (desde MPLAB)
tu_programa.HEX ← programa Flash + config bits
tu_programa.COD ← listado (opcional, depuracion)

Si falta END, hay un simbolo sin #include o una etiqueta mal escrita, el build falla y no debes simular hasta corregir la ventana Output.

Montas el sistema minimo + LED, cargas el mismo .HEX en el PIC virtual y pulsas Play. Proteus interpreta bytes del .HEX; no lee tu .ASM directamente.

Con el mismo .HEX (recompilado si cambiaste codigo), conectas PICkit, Program en MPLAB y validas el LED o periferico en protoboard.

El .HEX es el puente entre software y hardware. No es el .ASM legible — es formato Intel HEX con dos bloques conceptuales:

Contenido del .HEXOrigen en tu .ASMDonde termina
Programa (instrucciones)ORG, GOTO, MOVLW, BSFFlash ejecutable
Palabra de configuracionDirectivas CONFIGMemoria de config (arranque)

Por eso un solo archivo alimenta Proteus y el programador: ambos necesitan programa y config bits coherentes con el cristal de 20 MHz y la plantilla del curso.

Editor MPLAB (.ASM)
↓ Build / ensamblar
MPASM → archivo .HEX (+ .cod opcional)
┌────────────────┴────────────────┐
↓ ↓
Proteus (simulacion) PICkit / programador
↓ ↓
LED virtual, pines logicos Placa fisica UNEXPO
EtapaHerramientaEntradaSalida
EscribirMPLAB v8 / XTu codigo fuente.ASM
EnsamblarMPASM.ASM.HEX (programa + config bits)
SimularProteus ISIS.HEX + esquematicoComportamiento virtual
GrabarPICkit 2/3, etc..HEXFlash del PIC18F4550

Recorrido completo — ejemplo minimo (Primer LED)

Sección titulada «Recorrido completo — ejemplo minimo (Primer LED)»

Supongamos encender RB0. El flujo entero seria:

1. Fuente en MPLAB — fragmento minimo (ver Ensamblador — LED):

LIST P=18F4550
#include <P18F4550.INC>
CONFIG FOSC = HS, WDT = OFF, LVP = OFF, PBADEN = OFF
ORG 0x0000
GOTO programa ; salto al main
programa:
BCF TRISB, 0
BSF LATB, 0
bucle:
GOTO bucle ; salto → destino bucle: (arriba)
END

2. Build en MPLAB → aparece proyecto.hex sin errores en Output.

3. Proteus — PIC18F4550 + cristal 20 MHz + LED en RB0 → Program File = ese .HEXClock Frequency = 20 MHzPlay.

4. Placa — mismo .HEX, PICkit, Program → LED encendido si cableado y config bits coinciden.

Si cambias una linea del .ASM, vuelve al paso 2 antes de Proteus o placa. Un .HEX viejo es la causa nº1 de “en simulacion no se ve mi cambio”.

MPASM lee tu archivo ensamblador y:

  1. Traduce mnemonicos (MOVLW, BSF…) a codigo maquina.
  2. Resuelve etiquetas, simbolos del #include y directivas CONFIG.
  3. Genera el .HEX para el programador o Proteus.
  4. Reporta errores si falta END, hay etiqueta duplicada o simbolo indefinido.
ArchivoPara que sirve
.HEXLo que cargas en Proteus o programador — el importante
.CODListado con direcciones y codigo maquina (depuracion)
.LSTListado con codigo fuente mezclado (si lo activas)
.ERRErrores de ensamblado (si falla el build)

Si el build falla, no habra .HEX util — corrige errores en la ventana de salida antes de simular.

Mensaje en OutputCausa frecuenteDonde repasar
Symbol not definedFalta #include <P18F4550.INC> o typo (TRISB)Ensamblador — directivas
Label requiredEtiqueta sin : (programa vs programa:)Etiquetas
END directive requiredFalta END al finalSandwich
Bank select errorVariable en otro banco sin BSRRegistros — bancos
Argument out of rangeLiteral fuera de 0–255Literales

El Project Wizard no escribe codigo por ti; organiza archivos y le dice a MPASM que micro y que herramienta usar:

Elemento del proyectoFuncion
Dispositivo PIC18F4550MPASM genera opcodes correctos para ese chip
Toolchain MPASMNo XC8 si el curso es ensamblador puro
Archivo .asm agregadoFuente que compilas
Carpeta del proyectoAhi aparece el .HEX tras Build All

Tras compilar, busca el .HEX en la carpeta del proyecto (a veces Debug/, a veces la raiz). Esa ruta es la que cargas en Proteus → Program File.

MPLAB v8 es el IDE clasico de Microchip. En laboratorio UNEXPO suele usarse porque encaja bien con MPASM y proyectos .ASM puros.

  1. Project → Project Wizard
  2. Selecciona PIC18F4550
  3. Herramienta: MPASM (no XC8 si solo usas ensamblador)
  4. Nombre del proyecto y carpeta
  5. Agrega tu archivo .asm al proyecto
  1. Project → Build All (o el icono de martillo)
  2. Revisa la ventana Output — debe decir Build succeeded
  3. Busca el .hex en la carpeta del proyecto (ej. Debug/ o raiz)

Puedes editarlos con Configure → Configuration Bits, pero en el curso es mejor declararlos en el .ASM (config bits) para que informe y .HEX coincidan.

MensajeCausa frecuente
Symbol not definedFalta #include <P18F4550.INC> o typo en TRISB
Label requiredEtiqueta sin : (inicio vs inicio:)
END directive requiredFalta END al final del archivo
Bank select errorAcceso a variable en otro banco sin BSR correcto

MPLAB vs Proteus vs placa — quien hace que

Sección titulada «MPLAB vs Proteus vs placa — quien hace que»
TareaMPLAB + MPASMProteusPlaca fisica
Escribir codigo
Compilar .HEX
Simular sin hardware
Medir tiempos reales de cristalAproximado
Probar ruido, contactos, rebotesLimitado
Grabar Flash del PICCon programadorSolo simula

Regla del curso: primero compila sin errores, luego simula en Proteus, después monta en protoboard.

Antes de decir “no funciona”, verifica que todo coincida:

  • Dispositivo: PIC18F4550 en MPLAB, Proteus y placa
  • CONFIG FOSC = HS y cristal 20 MHz en esquematico y Proteus
  • Mismo .HEX en Proteus y programador (recompila tras cada cambio)
  • PBADEN = OFF, LVP = OFF, WDT = OFF (plantilla del curso)
  • Pin del LED coincide con codigo (RB0BCF TRISB,0 y BSF LATB,0)
  • Recompilaste despues de editar el .ASM

Ejercicio · Parcial

Ordena el flujo

Orden correcto para la Practica del Primer LED:

  1. Escribir .ASM con LIST, #include, CONFIG, ORG, codigo GPIO
  2. Build en MPLAB → obtener .HEX
  3. Montar esquematico en Proteus con cristal 20 MHz
  4. Cargar .HEX en el PIC de Proteus
  5. Simular y verificar LED
  6. Montar protoboard y grabar con PICkit

Error tipico: cargar un .HEX viejo en Proteus despues de cambiar el codigo sin recompilar — la simulacion no refleja tus ultimos cambios.

  • Proteus sin .HEX cargado: el PIC simula con memoria vacia o programa anterior.
  • Reloj en Proteus distinto de 20 MHz: tiempos y algunos perifericos no coinciden con la placa.
  • Compilar en MPLAB X y abrir proyecto v8 (o al reves): rutas y toolchains mezclados.
  • Simulacion OK, placa no: revisa alimentacion, MCLR, cristal, orientacion del PIC, LVP/PBADEN.
  • Placa OK, simulacion no: .HEX desactualizado o frecuencia mal puesta en Proteus.
  • Confundir Proteus con compilador: Proteus no reemplaza MPASM — solo ejecuta el .HEX.

¿Cual es la diferencia entre MPLAB y MPASM?

MPLAB es el entorno (editor, proyecto, grabador). MPASM es el ensamblador que traduce .ASM.HEX cuando haces Build.

¿Que archivo entrega MPASM al compilar correctamente?

Un archivo .HEX con el programa y los config bits para grabar o simular.

¿Para que se usa Proteus en el curso?

Para simular el circuito y el programa antes de la placa fisica, cargando el .HEX generado en MPLAB.

¿MPLAB compila ensamblador directamente o usa otra herramienta?

MPLAB invoca MPASM (en proyectos de ensamblador puro del curso).

¿Por que debe coincidir la frecuencia de reloj en Proteus con el cristal?

Porque el tiempo de ejecucion y perifericos dependen de Fosc; con FOSC = HS y cristal 20 MHz, Proteus debe usar 20 MHz.

Examen interactivo

MPLAB y Proteus

0 de 0 respondidas

En el flujo del curso, Proteus se usa principalmente para...
MPASM genera principalmente un archivo...
El orden correcto del flujo academico es...
En Proteus, la frecuencia de reloj del PIC debe coincidir con...
Proteus NO puede...
En MPLAB v8 del curso, la herramienta de ensamblado es...
Si cambias el .ASM pero no recompilas, en Proteus...
Para grabar la placa fisica UNEXPO se usa el mismo...
Simulacion OK pero placa no funciona — revisa primero...
El .HEX contiene ademas del programa...
MPLAB v8 en si mismo...
Cambias una linea del .ASM pero no recompilas. En Proteus...