Tutorial — Práctica 8: Comunicación serial
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
Enviar y recibir datos por UART a 9600 baud entre el PIC y una PC.
-
1 Configura RC6 (TX) y RC7 (RX)
RC7 entrada (RX), RC6 salida (TX). Si usas MAX232, el cableado es PIC ↔ MAX232 ↔ DB9/USB-serial. `ADCON1 = 0x0F` para digitales.BSF TRISC, 7 ; RX BCF TRISC, 6 ; TX -
2 Calcula SPBRG para 9600 baudios
A 20 MHz con BRGH = 1: `SPBRG = (Fosc / (16 × baud)) - 1` → ~129. Documenta el cálculo en el informe. Configura TXSTA (async, BRGH, TXEN) y RCSTA (SPEN, CREN).uart_init: BCF TXSTA, SYNC BSF TXSTA, BRGH MOVLW D'129' MOVWF SPBRG BSF RCSTA, SPEN BSF TXSTA, TXEN BSF RCSTA, CREN RETURNConsejo: Fórmulas: /comunicacion/uart/
-
3 Rutina de transmisión uart_tx
Espera TXIF = 1, escribe el byte en TXREG. Envía un saludo (`PIC18 UART\r\n`) al arrancar para confirmar que la PC recibe.uart_tx: BTFSS PIR1, TXIF GOTO uart_tx MOVWF TXREG RETURN -
4 Bucle de eco en el main
Si RCIF = 1, lee RCREG (limpia el flag), reenvía el mismo byte con `uart_tx`. Abre terminal a 9600 8N1. Cada tecla debe repetirse en pantalla.bucle: BTFSS PIR1, RCIF GOTO bucle MOVF RCREG, W CALL uart_tx GOTO bucle -
5 Prueba con terminal en PC
PuTTY o Tera Term: COM correcto, 9600 baud. Si ves basura, revisa BRGH/SPBRG o cristal. Si no hay datos, revisa MAX232 y TX/RX cruzados. Guarda captura para el informe.
Antes de programar — pre-laboratorio
Pre-laboratorio — investigación de referencia
Investigación para la Práctica 8 (Comunicación serial, UNEXPO). Relaciona con EUSART del curso.
P 1 Módulo EUSART del PIC18F4550
El EUSART (*Enhanced Universal Synchronous/Asynchronous Receiver Transmitter*) envía y recibe bytes serie de forma asíncrona:
- TXSTA — control transmisión (TXEN, BRGH, etc.).
- RCSTA — control recepción (SPEN, CREN, RX9).
- SPBRG — baud rate generator.
- TXREG / RCREG — buffer de transmisión / recepción.
Pines: RC6 = TX, RC7 = RX. Hay que configurar `TRISC` para funciones alternativas y habilitar SPEN en RCSTA.
P 2 Cálculo de SPBRG para baudios deseados
Con BRGH = 1 (high speed, común a 20 MHz):
`SPBRG = (Fosc / (4 × baud)) - 1`
Ejemplo: Fosc = 20 MHz, baud = 9600:
`SPBRG = (20_000_000 / (4 × 9600)) - 1 ≈ 520`
Para 115200 el valor es menor. En el informe muestra el cálculo con tu Fosc y el error porcentual respecto al baud ideal.
P 3 ¿Para qué sirve el MAX232 en el diagrama?
El PIC trabaja en niveles TTL (0–5 V). El puerto serial de PC (RS-232) usa niveles ±12 V aproximadamente. El MAX232 convierte TTL ↔ RS-232 con condensadores externos (charge pump). Sin él, la PC no interpreta correctamente los bits del PIC.
RC6 = TX y RC7 = RX son pines dedicados a UART en el montaje típico.
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: cálculo SPBRG, configuración TXSTA/RCSTA, espera TXIF, lectura RCIF/RCREG y protocolo simple opcional.
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 EUSART (SPBRG, TXSTA, RCSTA)
TRISC.6 ← salida, TRISC.7 ← entrada
REPITIR SIEMPRE
SI RCIF ENTONCES
dato_rx ← RCREG
procesar_comando(dato_rx)
FIN SI
SI necesita_enviar ENTONCES
MIENTRAS TXIF = 0 HACER
TXREG ← dato_tx
FIN SI
FIN REPITIR Diagrama de flujo de referencia
Construye y adapta el codigo
Practica · UNEXPO
Práctica 8 de Laboratorio
Establecer comunicación serial entre el PIC18F4550 y una PC usando EUSART. Enviar y recibir datos (terminal serial).
Requisitos
Sección titulada «Requisitos»- Configurar EUSART a 9600 o 115200 baudios
- Pines RC6 (TX) y RC7 (RX)
- Terminal en PC (PuTTY, Tera Term, Arduino Serial Monitor)
- Opcional: protocolo simple de comandos
Evaluación
Sección titulada «Evaluación»Código funcional, simulación o prueba física, informe con diagrama y explicación del cálculo de SPBRG.
Código fuente de referencia
Sección titulada «Código fuente de referencia»Despues de programar — post-laboratorio
Post-laboratorio — investigación de referencia
Preguntas tras probar UART con terminal en PC o Proteus.
P 1 ¿Cómo sabes que un byte se transmitió correctamente?
Antes de escribir en TXREG verificas que TXIF esté en 1 (buffer de transmisión libre). Tras escribir el byte, esperas a que TXIF vuelva a 1 antes de enviar el siguiente. En recepción, RCIF indica byte listo en RCREG; debes leer RCREG para limpiar el flag.
P 2 Errores típicos si la terminal muestra basura
Causas frecuentes: baud rate incorrecto (SPBRG mal calculado), BRGH distinto entre código y supuesto, cable TX/RX cruzado mal, MAX232 mal cableado, o terminal configurada a 9600 mientras el PIC usa 115200. Verifica Fosc real del proyecto (20 MHz HS).
Adjunta captura de la terminal serial con datos enviados y recibidos.
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 — UART y diagrama 3 preguntas
EUSART, pines y MAX232.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASIntermedio Nivel intermedio — Registros EUSART 3 preguntas
TXSTA, RCSTA, TXIF y RCIF.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETASUNEXPO Nivel UNEXPO — Oral UART 2 preguntas
Cálculo SPBRG, errores y prueba con terminal.
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS