Está en la página 1de 22

COMUNICACIÓN SERIE

PARA SISTEMAS BASADOS EN


MICROCONTROLADORES PIC
- Comunicación serie: Los datos se envían bit a bit por una misma línea y
durante un tiempo fijo.

- La velocidad de transmisión: Es el numero de bit enviados por segundos


(baudios).

- Transferencia Síncrona: Se envía una señal de reloj para sincronizar cada bit.

- Transferencia Asíncrona: No se envía la señal de reloj. Se necesitan reloj en el


emisor y receptor a la misma frecuencia.

- Codificación de bit: NRZ (Non Return to Zero)


-Nivel alto: 1
-Nivel bajo: 0

bit de inicio 8 o 9 bit de datos bit de parada


Transferencia síncrona

- Dispositivo maestro: El que genera la señal de reloj y el que tiene capacidad de iniciar
o finalizar una transferencia.

- Dispositivo esclavo: recibe la señal de reloj no tiene la capacidad de iniciar una


transferencia.

- Un dispositivo maestro y varios esclavos.

Transferencia Asíncrona

- Dispositivo emisor y receptor


- Se emplea reloj de igual frecuencia (velocidad de transmisión) en ambos dispositivos.
- Se utiliza un bit de arranque (nivel bajo) y de parada (nivel alto).
- La línea de dado inactiva permanece a nivel alto.
Modulo de comunicación Serie PIC16F877

- Modulo SCI (Serial Communication interface) o Modulo USART (Universal


Synchronous Asynchronous Receiver Transmitter.

- Modo Asíncrono (Full Dúplex)


- Modo síncrono (Half Dúplex)

- Modulo MSSP (Master Synchronous Serial Port)

- SPI (Serial Peripheral Interface)


- I2C (Inter-Integrated Circuit )
USART (Universal Synchronous Asynchronous Receiver Transmitter)

Registros asociados:

Registro de control y estado TXSTA


RCSTA
Registro de relación de baudio SPBRG
Registro de transmisión TXREG
Registro de recepción RCREG

TXSTA: TRANSMIT STATUS AND CONTROL REGISTER

CSRC TX9 TXEN SYNC — BRGH TRMT TX9D

RCSTA: RECEIVE STATUS AND CONTROL REGISTER

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D


TXSTA: TRANSMIT STATUS AND CONTROL REGISTER

CSRC TX9 TXEN SYNC — BRGH TRMT TX9D

bit 7 CSRC: Clock Source Select bit

Asynchronous mode: Don’t care

bit 6 TX9: 9-bit Transmit Enable bit

1 = Selects 9-bit transmission


0 = Selects 8-bit transmission

bit 5 TXEN: Transmit Enable bit

1 = Transmit enabled
0 = Transmit disabled
Note: SREN/CREN overrides TXEN in SYNC mode.

bit 4 SYNC: USART Mode Select bit

1 = Synchronous mode
0 = Asynchronous mode
TXSTA: TRANSMIT STATUS AND CONTROL REGISTER

CSRC TX9 TXEN SYNC — BRGH TRMT TX9D

bit 3 Unimplemented: Read as '0'

bit 2 BRGH: High Baud Rate Select bit

Asynchronous mode:
1 = High speed
0 = Low speed

bit 1 TRMT: Transmit Shift Register Status bit

1 = TSR empty
0 = TSR full

bit 0 TX9D: 9th bit of Transmit Data, can be parity bit


RCSTA: RECEIVE STATUS AND CONTROL REGISTER

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

bit 7 SPEN: Serial Port Enable bit


1 = Serial port enabled (configures RC7/RX/DT and RC6/TX/CK pins as serial port pins)
0 = Serial port disabled

bit 6 RX9: 9-bit Receive Enable bit


1 = Selects 9-bit reception
0 = Selects 8-bit reception

bit 5 SREN: Single Receive Enable bit

Asynchronous mode: Don’t care

bit 4 CREN: Continuous Receive Enable bit

Asynchronous mode:
1 = Enables continuous receive
0 = Disables continuous receive
RCSTA: RECEIVE STATUS AND CONTROL REGISTER

SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

bit 3 ADDEN: Address Detect Enable bit

Asynchronous mode 9-bit (RX9 = 1):

1 = Enables address detection, enables interrupt and load of the receive buffer when RSR<8> is set
0 = Disables address detection, all bytes are received, and ninth bit can be used as parity bit

bit 2 FERR: Framing Error bit

1 = Framing error (can be updated by reading RCREG register and receive next valid byte)
0 = No framing error

bit 1 OERR: Overrun Error bit

1 = Overrun error (can be cleared by clearing bit CREN)


0 = No overrun error

bit 0 RX9D: 9th bit of Received Data (can be parity bit, but must be calculated by user firmware)
 Generador de relación de Baudio (BRG)

BRGH=0 (velocidad baja)

BRGH=1 (velocidad alta)

Donde: X = valor en SPBRG (0 a 255)


 Generador de relación de Baudio (BRG)

Ejemplo: BRG=9600 baudio y Fosc=16MHz con BRGH=0


Pasos para preparar una transmisión serie asíncrona
Pasos para preparar una resección serie asíncrona
Pasos para configurar Modulo SCI en modo asíncrono (full dúplex)

1- Configurar puertos
- RC6 Como salida
- RC7 Como entrada

2- Cargar valor en SPBRG

3- Configurar el registro TXSTA


- Seleccionar tamaño bit de datos de transmisión de 8 bit. (TX9=0)
- habilitar transmisión . (TXEN=1)
- Definirlo como Asíncrono. (SYNC=0)
- Seleccionar velocidad de transmisión alta . (BRGH=1)

4 Configurar el registro RCSTA


- Habilitar el modulo SCI (SPEN=1)
- Seleccionar tamaño bit de datos de resección de 8 .(RX9=0)
- activar resección continua (CREN=1)

5 Habilitar interrupción (opcional)


para iniciar una transmisión
-Cargar el 9bit si es necesario
- Cargar el dato en TXREG (se inicia la transmisión)

Para obtener el dato recibido


- Al completarse la resección de un dato: RCIF=1, y si se habilitaron
interrupciones se generara una.
- Leer el dado en RCREG.
- leer el 9bit si es necesario
CONFIGURAR_TRANSMISOR _RECEPTOR
BCF STATUS,RP1
BSF STATUS,RP0

MOVLW B'10000000'
MOVWF TRISC

MOVLW D'129'
MOVWF SPBRG

MOVLW B'00100100'
MOVWF TXSTA

BCF STATUS,RP0

MOVLW B'10010000'
MOVWF RCSTA

RETURN
RECIBIR_DATO
BTFSS PIR1,RCIF
GOTO RECIBIR_DATO
MOVF RCREG,W
MOVWF DATO_RX
RETURN

ENVIAR_DATO
BTFSS PIR1,TXIF
GOTO ENVIAR_DATO
MOVWF TXREG
CALL Retardo_5ms
RETURN

También podría gustarte