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.
Que es MPLAB (y que no es)
Sección titulada «Que es MPLAB (y que no es)»En informes y laboratorio se mezclan tres nombres. Conviene separarlos:
| Herramienta | Que es | Que hace en el curso |
|---|---|---|
| MPLAB v8 / X | IDE — entorno de desarrollo | Editar .ASM, crear proyecto, lanzar el build, grabar con PICkit |
| MPASM | Ensamblador | Traduce .ASM → .HEX (programa + palabra de configuracion) |
| Proteus ISIS | Simulador | Ejecuta el .HEX en un circuito virtual — no compila |
| PICkit / programador | Grabador | Escribe 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.
Paso 1 — Escribir el .ASM en MPLAB
Sección titulada «Paso 1 — Escribir el .ASM en MPLAB»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.
Paso 2 — Compilar con MPASM (Build)
Sección titulada «Paso 2 — Compilar con MPASM (Build)»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.
Paso 3 — Simular en Proteus
Sección titulada «Paso 3 — Simular en Proteus»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.
Paso 4 — Placa fisica
Sección titulada «Paso 4 — Placa fisica»Con el mismo .HEX (recompilado si cambiaste codigo), conectas PICkit, Program en MPLAB y validas el LED o periferico en protoboard.
Que lleva el archivo .HEX
Sección titulada «Que lleva el archivo .HEX»El .HEX es el puente entre software y hardware. No es el .ASM legible — es formato Intel HEX con dos bloques conceptuales:
Contenido del .HEX | Origen en tu .ASM | Donde termina |
|---|---|---|
| Programa (instrucciones) | ORG, GOTO, MOVLW, BSF… | Flash ejecutable |
| Palabra de configuracion | Directivas CONFIG | Memoria 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.
Cadena completa — del texto al PIC
Sección titulada «Cadena completa — del texto al PIC» Editor MPLAB (.ASM) ↓ Build / ensamblar MPASM → archivo .HEX (+ .cod opcional) ↓ ┌────────────────┴────────────────┐ ↓ ↓Proteus (simulacion) PICkit / programador ↓ ↓LED virtual, pines logicos Placa fisica UNEXPO| Etapa | Herramienta | Entrada | Salida |
|---|---|---|---|
| Escribir | MPLAB v8 / X | Tu codigo fuente | .ASM |
| Ensamblar | MPASM | .ASM | .HEX (programa + config bits) |
| Simular | Proteus ISIS | .HEX + esquematico | Comportamiento virtual |
| Grabar | PICkit 2/3, etc. | .HEX | Flash 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, 0bucle: GOTO bucle ; salto → destino bucle: (arriba)
END2. Build en MPLAB → aparece proyecto.hex sin errores en Output.
3. Proteus — PIC18F4550 + cristal 20 MHz + LED en RB0 → Program File = ese .HEX → Clock Frequency = 20 MHz → Play.
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 — que hace al compilar
Sección titulada «MPASM — que hace al compilar»MPASM lee tu archivo ensamblador y:
- Traduce mnemonicos (
MOVLW,BSF…) a codigo maquina. - Resuelve etiquetas, simbolos del
#includey directivasCONFIG. - Genera el
.HEXpara el programador o Proteus. - Reporta errores si falta
END, hay etiqueta duplicada o simbolo indefinido.
Archivos que veras tras compilar
Sección titulada «Archivos que veras tras compilar»| Archivo | Para que sirve |
|---|---|
.HEX | Lo que cargas en Proteus o programador — el importante |
.COD | Listado con direcciones y codigo maquina (depuracion) |
.LST | Listado con codigo fuente mezclado (si lo activas) |
.ERR | Errores de ensamblado (si falla el build) |
Si el build falla, no habra .HEX util — corrige errores en la ventana de salida antes de simular.
Errores de MPASM que veras en MPLAB
Sección titulada «Errores de MPASM que veras en MPLAB»| Mensaje en Output | Causa frecuente | Donde repasar |
|---|---|---|
Symbol not defined | Falta #include <P18F4550.INC> o typo (TRISB) | Ensamblador — directivas |
Label required | Etiqueta sin : (programa vs programa:) | Etiquetas |
END directive required | Falta END al final | Sandwich |
Bank select error | Variable en otro banco sin BSR | Registros — bancos |
Argument out of range | Literal fuera de 0–255 | Literales |
Proyecto MPLAB v8 — que crea el asistente
Sección titulada «Proyecto MPLAB v8 — que crea el asistente»El Project Wizard no escribe codigo por ti; organiza archivos y le dice a MPASM que micro y que herramienta usar:
| Elemento del proyecto | Funcion |
|---|---|
| Dispositivo PIC18F4550 | MPASM genera opcodes correctos para ese chip |
| Toolchain MPASM | No XC8 si el curso es ensamblador puro |
Archivo .asm agregado | Fuente que compilas |
| Carpeta del proyecto | Ahi 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 — entorno principal del curso
Sección titulada «MPLAB v8 — entorno principal del curso»MPLAB v8 es el IDE clasico de Microchip. En laboratorio UNEXPO suele usarse porque encaja bien con MPASM y proyectos .ASM puros.
Crear proyecto
Sección titulada «Crear proyecto»- Project → Project Wizard
- Selecciona PIC18F4550
- Herramienta: MPASM (no XC8 si solo usas ensamblador)
- Nombre del proyecto y carpeta
- Agrega tu archivo
.asmal proyecto
Compilar
Sección titulada «Compilar»- Project → Build All (o el icono de martillo)
- Revisa la ventana Output — debe decir Build succeeded
- Busca el
.hexen la carpeta del proyecto (ej.Debug/o raiz)
Config bits en MPLAB v8
Sección titulada «Config bits en MPLAB v8»Puedes editarlos con Configure → Configuration Bits, pero en el curso es mejor declararlos en el .ASM (config bits) para que informe y .HEX coincidan.
Errores tipicos al compilar
Sección titulada «Errores tipicos al compilar»| Mensaje | Causa frecuente |
|---|---|
Symbol not defined | Falta #include <P18F4550.INC> o typo en TRISB |
Label required | Etiqueta sin : (inicio vs inicio:) |
END directive required | Falta END al final del archivo |
Bank select error | Acceso a variable en otro banco sin BSR correcto |
Cuando usarlo
Sección titulada «Cuando usarlo»MPLAB X es el IDE moderno (basado en NetBeans). Microchip lo promueve para proyectos nuevos en XC8, pero tambien puede ensamblar .ASM con el toolchain adecuado.
Pasos resumidos
Sección titulada «Pasos resumidos»- File → New Project → Standalone Project
- Device: PIC18F4550
- Selecciona toolchain compatible con ensamblador
- Agrega tu
.asmal proyecto - Production → Build Main Project
- Revisa Output y localiza el
.hex
En el curso UNEXPO, si tu profesor pide MPLAB v8, no mezcles proyectos v8 y X en la misma carpeta — las rutas y configuraciones difieren.
Montar el circuito
Sección titulada «Montar el circuito»- Coloca PIC18F4550 en el esquematico
- Conecta sistema minimo: cristal 20 MHz, condensadores, MCLR con pull-up, VDD/VSS, desacople
- Agrega LED + resistencia en RB0 (o el pin de tu practica)
- Verifica tierras comunes y polaridad del LED
Cargar el .HEX
Sección titulada «Cargar el .HEX»- Doble clic en el PIC → pestaña Program File
- Selecciona el
.hexgenerado por MPASM - En Clock Frequency pon 20 MHz (coherente con
FOSC = HSy cristal) - Acepta y guarda el esquematico
Simular
Sección titulada «Simular»- Boton Play (Run simulation)
- Observa el LED virtual y los niveles en RB0
- Usa Debug para ver registros si tu version lo permite
- Si no arranca: revisa
.HEXcargado, frecuencia de reloj y config bits
Proteus no compila ensamblador — solo ejecuta el .HEX que tu generaste en MPLAB.
Antes de grabar
Sección titulada «Antes de grabar»- Alimentacion 5 V estable y condensador de desacople
- Cristal 20 MHz + caps + MCLR con 10 kΩ (sistema minimo)
- Revisa cableado del LED (resistencia 220–330 Ω)
- Comprueba que no haya cortos en protoboard
Grabar el micro
Sección titulada «Grabar el micro»- Conecta PICkit 2/3 (o programador del laboratorio) a ICSP
- En MPLAB: Programmer → Select Programmer
- Program con el mismo
.HEXque usaste en Proteus - Verifica mensaje Programming/Verify complete
Validar
Sección titulada «Validar»- LED encendido o apagado segun tu codigo
- Multimetro en pines de salida si algo falla
- Compara con la simulacion — si Proteus OK y placa no, sospecha hardware (cableado, alimentacion, config bits distintos)
MPLAB vs Proteus vs placa — quien hace que
Sección titulada «MPLAB vs Proteus vs placa — quien hace que»| Tarea | MPLAB + MPASM | Proteus | Placa fisica |
|---|---|---|---|
| Escribir codigo | ✅ | ❌ | ❌ |
Compilar .HEX | ✅ | ❌ | ❌ |
| Simular sin hardware | ❌ | ✅ | ❌ |
| Medir tiempos reales de cristal | ❌ | Aproximado | ✅ |
| Probar ruido, contactos, rebotes | ❌ | Limitado | ✅ |
| Grabar Flash del PIC | Con programador | Solo simula | ✅ |
Regla del curso: primero compila sin errores, luego simula en Proteus, después monta en protoboard.
Coherencia entre herramientas — checklist
Sección titulada «Coherencia entre herramientas — checklist»Antes de decir “no funciona”, verifica que todo coincida:
- Dispositivo: PIC18F4550 en MPLAB, Proteus y placa
-
CONFIG FOSC = HSy cristal 20 MHz en esquematico y Proteus - Mismo
.HEXen Proteus y programador (recompila tras cada cambio) -
PBADEN = OFF,LVP = OFF,WDT = OFF(plantilla del curso) - Pin del LED coincide con codigo (
RB0→BCF TRISB,0yBSF LATB,0) - Recompilaste despues de editar el
.ASM
Ejercicio · Parcial
Ordena el flujo
Orden correcto para la Practica del Primer LED:
- Escribir
.ASMconLIST,#include,CONFIG,ORG, codigo GPIO - Build en MPLAB → obtener
.HEX - Montar esquematico en Proteus con cristal 20 MHz
- Cargar
.HEXen el PIC de Proteus - Simular y verificar LED
- 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.
Errores comunes
Sección titulada «Errores comunes»- Proteus sin
.HEXcargado: 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:
.HEXdesactualizado o frecuencia mal puesta en Proteus. - Confundir Proteus con compilador: Proteus no reemplaza MPASM — solo ejecuta el
.HEX.
Preguntas tipo parcial
Sección titulada «Preguntas tipo parcial»¿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.
MPLAB y Proteus
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS