Tutorial — Práctica 1: Operaciones matemáticas
Aprende programando: sigue cada paso, escribe tu propio codigo y valida con las preguntas y el examen del laboratorio. Adapta pines y rutinas a tu placa cuando haga falta.
Lo que vas a construir
Una calculadora ALU con switches en PORTB/PORTD, resultado en LEDs y cambio de operacion con RA0.
-
1 Monta el hardware según el diagrama
Operandos en PORTB y PORTD (DIP switches con pull-up). Resultado en LATC y LATE (LEDs). Pulsador en RA0 para cambiar de operación. Revisa el diagrama antes de escribir una línea de código. -
2 Configura direcciones de puerto
RB y RD como entradas (`TRISB`/`TRISD` = 0xFF`). RC y RE como salidas (`TRISC`/`TRISE` = 0x00`). RA0 entrada para el pulsador. Lee operandos con `MOVF PORTB, W` y `MOVF PORTD, W`.MOVLW 0xFF MOVWF TRISB MOVWF TRISD CLRF TRISC CLRF TRISE BSF TRISA, 0 ; RA0 entrada -
3 Implementa una operación ALU
Empieza por la suma: `MOVF PORTB, W` → `ADDWF PORTD, W` → resultado en W → `MOVWF LATC`. Cuando funcione, duplica la rutina para resta (`SUBWF`), OR (`IORWF`), etc.suma: MOVF PORTB, W ADDWF PORTD, W MOVWF LATC -
4 Añade multiplicación y división por software
`MULWF` deja el producto en `PRODH:PRODL` — muestra ambos bytes en RC y RE. La división no tiene instrucción nativa: resta el divisor repetidamente y cuenta cuántas veces cabe. -
5 Usa RA0 para cambiar de modo
Guarda el modo actual en una variable RAM (`operacion`). Cada pulsación en RA0 incrementa el modo (0…8 y vuelve a 0). En el bucle principal, salta a la rutina según el valor de `operacion`. -
6 Simula, prueba en físico y documenta
Verifica cada modo en Proteus con distintas combinaciones de switches. En placa física, repite las pruebas. Completa el informe pre/post laboratorio con capturas y explicación de cada operación.
Antes de programar — pre-laboratorio
Pre-laboratorio — investigación de referencia
Respuestas alineadas al PDF oficial (Práctica 1, UNEXPO). Son una base para orientar tu investigación: analízalas, amplíalas con el datasheet y redacta el informe con tus propias palabras.
P 1 Conexión del sistema mínimo para el PIC18F4550
El sistema mínimo permite que el PIC oscile, se reinicie y se alimente de forma estable:
- Alimentación: VDD = +5 V DC y VSS = tierra (común) en los pines correspondientes.
- Oscilador HS (20 MHz): cristal de 20 MHz entre los pines OSC1 y OSC2, con un condensador de 1 nF de cada pin del cristal a tierra (según la hoja de la práctica).
- Reset (MCLR): resistencia de 10 kΩ de MCLR a VDD (pull-up), condensador de 10 nF de MCLR a tierra para filtrar ruido, y pulsador de reset opcional entre MCLR y tierra.
- Programación: ICSP (PGC/PGD/MCLR/VDD/VSS) si usas PICkit 2/3.
Con CONFIG FOSC = HS el PIC usa el cristal externo. Sin este bloque el programa no ejecuta ciclos de reloj estables.
P 2 Explique los puertos del PIC18F4550 usados en esta práctica
En esta práctica se usan cinco puertos con roles distintos:
| Puerto | Dirección | Función en el montaje | | --- | --- | --- | | **PORTB** | Entrada (`TRISB = 0xFF`) | Operando **A** — DIP switch de 8 bits (RB0–RB7) | | **PORTD** | Entrada (`TRISD = 0xFF`) | Operando **B** — segundo DIP switch (RD0–RD7) | | **PORTC** | Salida (`TRISC = 0`) | LEDs del byte **bajo** del resultado (RC0–RC7 → `LATC`) | | **PORTE** | Salida (`TRISE = 0`) | LEDs del byte **alto** en multiplicación (RE0–RE7 → `LATE`) | | **PORTA** | RA0 entrada | Pulsador NA para **cambiar de operación** |
Cada puerto digital usa el trio TRISx (dirección), PORTx (lectura) y LATx (escritura de salidas). Los switches llevan resistencias de 10 kΩ como pull-up; los LEDs llevan 220–330 Ω en serie.
P 3 ¿Qué es la ALU?
La ALU (*Arithmetic Logic Unit*, unidad aritmético-lógica) es el bloque de la CPU que ejecuta operaciones sobre datos en registros: sumas, restas, AND, OR, XOR, complemento, incrementos, etc.
En el PIC18F4550 la ALU trabaja principalmente con el registro WREG y registros de memoria de datos. No ejecuta programas completos: solo la operación de una instrucción por ciclo (salvo algunas instrucciones de dos ciclos). El resultado puede quedar en WREG, en un registro o en pares especiales como PRODH:PRODL (multiplicación).
P 4 ¿Cuántas operaciones puede realizar la ALU del PIC18F4550?
La ALU no tiene un contador fijo de "modos", pero el juego de instrucciones del PIC18 incluye decenas de operaciones aritméticas y lógicas sobre bytes de 8 bits, entre ellas:
- Aritmética: suma (`ADDWF`, `ADDLW`), resta (`SUBWF`, `SUBLW`), incremento/decremento (`INCF`, `DECF`), multiplicación (`MULWF`).
- Lógica: AND (`ANDWF`), OR (`IORWF`), XOR (`XORWF`), complemento (`COMF`).
- Desplazamientos/rotaciones: `RLCF`, `RRCF`, `RLNCF`, `RRNCF`.
Operaciones como la división entera no tienen instrucción dedicada en PIC18: se resuelven por software (restas repetidas), como pide esta práctica.
P 5 ¿Qué instrucciones dispone el PIC18F4550 para operaciones lógicas y matemáticas?
Instrucciones usadas directamente en la Práctica 1:
| Operación del laboratorio | Instrucciones MPASM | | --- | --- | | Suma | `ADDWF` | | Resta | `SUBWF` | | Multiplicación | `MULWF` → resultado en `PRODH:PRODL` | | División (software) | `MOVF`, `SUBWF`, `ADDWF`, `INCF`, `BCF`/`BSF`, `GOTO` (bucle) | | OR / AND / XOR | `IORWF`, `ANDWF`, `XORWF` | | Complemento | `COMF` | | Rotar sin acarreo | `RLNCF` |
También se usan instrucciones de configuración y control: `MOVLW`, `MOVWF`, `CLRF`, `BCF`, `BSF`, `BTFSC`, `BTFSS`, `CALL`, `RETURN`, `GOTO` para inicializar puertos, leer switches y seleccionar la operación activa.
No copies textualmente al informe. El profesor espera tu redacción, tus cálculos y tu diagrama. Esta guía sirve para comparar y mejorar lo tuyo.
Disena tu solucion
Diseño antes del código
La guía oficial pide pseudocódigo y diagrama de flujo antes del .ASM. Escribe los tuyos primero; después desbloqueas la guía de referencia.
- 1. Pseudocódigo
- 2. Diagrama de flujo
- 3. Guía de referencia
Escribe tu pseudocódigo
Incluye: configuración de puertos, bucle principal, SEGÚN con 9 modos, RA0 para cambiar modo, rutina de división por software.
0 caracteres (mínimo 80)
Describe tu diagrama de flujo
En papel o aquí: lista cada símbolo en orden. Tu informe necesita óvalos, rectángulos, rombos y el bucle principal.
0 caracteres (mínimo 60)
Mi borrador de pseudocódigo
Mi borrador de diagrama de flujo
Pseudocódigo de referencia
INICIO
Configurar ADCON1 ← digital
LATC ← 0, LATE ← 0, modo ← 0
TRISB ← 0xFF, TRISD ← 0xFF
TRISA.0 ← 1, TRISC ← 0, TRISE ← 0
REPITIR SIEMPRE
oper_a ← PORTB, oper_b ← PORTD
SEGUN modo: suma, resta, mul, div, OR, AND, XOR, NOT, rotar
LATC ← byte_bajo, LATE ← byte_alto
SI flanco_bajada(RA0) ENTONCES modo ← (modo+1) mod 9
FIN REPITIR Diagrama de flujo de referencia
Construye y adapta el codigo
Practica · UNEXPO
Práctica 1 de Laboratorio
Sistema mínimo PIC18F4550. Operandos en puerto B y D (switches). Resultado en puerto C y E (LEDs). Pulsador RA0 cambia la operación.
Mapa de hardware
Sección titulada «Mapa de hardware»| Pin / puerto | Función en el programa |
|---|---|
PORTB | Operando A (DIP switch de 8 bits) |
PORTD | Operando B (DIP switch de 8 bits) |
LATC | Resultado bits 0–7 (LEDs) |
LATE | Resultado bits 8–15 (LEDs; multiplicación) |
RA0 | Pulsador NA — cambia la operación activa |
Operaciones incluidas
Sección titulada «Operaciones incluidas»Pulsa RA0 para avanzar entre modos (vuelve a 0 después del último):
| Modo | Operación | Instrucciones clave |
|---|---|---|
| 0 | Suma | ADDWF |
| 1 | Resta | SUBWF |
| 2 | Multiplicación | MULWF → PRODH:PRODL |
| 3 | División (software) | Restas repetidas |
| 4 | OR lógico | IORWF |
| 5 | AND lógico | ANDWF |
| 6 | XOR lógico | XORWF |
| 7 | Complemento | COMF (operando A) |
| 8 | Rotar izq. sin acarreo | RLNCF (operando A) |
Código fuente de referencia
Sección titulada «Código fuente de referencia»Proteus / MPLAB
Sección titulada «Proteus / MPLAB»- Crear proyecto MPASM para PIC18F4550 (cristal HS 20 MHz).
- Importar el diagrama de la práctica (página 2 del PDF).
- Switches en
RB0–RB7yRD0–RD7con pull-up 10 kΩ. - LEDs en
RC0–RC7yRE0–RE7con resistencia 220–330 Ω. - Pulsador en
RA0a tierra con pull-up. - Compilar →
.hex→ simular → verificar cada modo.
Herramientas
Sección titulada «Herramientas»- MPLAB IDE 8.88 · PICkit 2/3 · Proteus · Datasheet PIC18F4550
Despues de programar — post-laboratorio
Post-laboratorio — investigación de referencia
Respuestas a las preguntas de cierre del PDF. Úsalas como punto de partida y complementa con lo que observaste en Proteus o en placa física.
P 1 ¿Cuál es la diferencia entre una operación matemática por hardware y por software?
Por hardware (ALU nativa): el PIC ejecuta una instrucción y la ALU produce el resultado en uno o pocos ciclos. Ejemplos: `ADDWF`, `SUBWF`, `MULWF`, `IORWF`/`ANDWF`/`XORWF`.
Por software (algoritmo): no existe instrucción directa; escribes una rutina con varias instrucciones. Ejemplo: división entera — repite restas hasta que el dividendo es menor que el divisor.
En oral puedes decir: *"La suma la hace la ALU con ADDWF; la división la implementamos nosotros porque el PIC18 no trae DIV."*
P 2 ¿Por qué no se puede utilizar todo el puerto C como salida?
Los pines RC6 y RC7 tienen funciones alternativas (UART TX/RX). Si activas EUSART, esos pines dejan de ser GPIO simple. En esta práctica se usa `TRISC = 0` porque no usamos UART a la vez, pero debes explicar en el informe que no todos los pines son GPIO dedicados en todo momento.
En el informe final incluye conclusiones propias sobre limitaciones del PIC18 (8 bits, división por software, pines compartidos con UART).
Comprueba lo aprendido
Exámenes por nivel de dificultad
Abre cada nivel cuando estés listo. El básico es público; intermedio y UNEXPO requieren cuenta CALETAS para calificar respuestas.
Básico Nivel básico — Repaso del enunciado 4 preguntas
Preguntas directas sobre el diagrama y la descripción de la práctica. Ideal antes del laboratorio.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASIntermedio Nivel intermedio — Puertos y ALU 4 preguntas
Registros TRIS/LAT/PORT, ALU e instrucciones aritméticas. Nivel pregunta de informe.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASUNEXPO Nivel UNEXPO — Código y oral de laboratorio 10 preguntas
Preguntas tipo profesor: análisis línea a línea del .ASM, registros, memoria e instrucciones.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS