Ir al contenido

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.

Diagrama electronico de la Practica 8 con MAX232 y comunicacion serial
UART del PIC (RC6 TX, RC7 RX) a traves de MAX232 hacia conector serial de la PC. — Practica 8 — Comunicacion serial · UNEXPO
  1. 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. 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
            RETURN
    							

    Consejo: Fórmulas: /comunicacion/uart/

  3. 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. 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. 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. 1. Pseudocódigo
  2. 2. Diagrama de flujo
  3. 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)

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).

  • 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

Código funcional, simulación o prueba física, informe con diagrama y explicación del cálculo de SPBRG.

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

SPBRG se calcula a partir de…
MAX232 en el diagrama de Práctica 8 sirve para…
TX y RX del PIC en UART típico están en…
Intermedio Nivel intermedio — Registros EUSART 3 preguntas

TXSTA, RCSTA, TXIF y RCIF.

0 de 0 respondidas

Antes de escribir TXREG debes verificar…
RCIF = 1 significa…
SPEN en RCSTA…
UNEXPO Nivel UNEXPO — Oral UART 2 preguntas

Cálculo SPBRG, errores y prueba con terminal.

0 de 0 respondidas

Fosc = 20 MHz, baud = 9600, BRGH = 1 → SPBRG ≈
Si la terminal muestra caracteres basura, revisa primero…

Panel de tutoriales · Ejercicios