Vous êtes sur la page 1sur 21

MICROCONTROLADORES

M.Sc. César Augusto Peña C.

Profesor de planta – Ingeniería mecatrónica


Universidad de Pamplona
TRANSMISIÓN Y RECEPCIÓN
ASÍNCRONA SERIAL
TRANSMISIÓN Y RECEPCIÓN
ASÍNCRONA SERIAL
GENERADOR DE BAUDIOS

FrecuenciaBaudios = Fosc/ ( K * ( X + 1 ) )

X = Valor cargado en el registro SPBRG

K = 64 si el Bit BRGH = 0 (Baja velocidad)

K = 16 si el Bit BRGH = 1 (Alta velocidad)


GENERADOR DE BAUDIOS
Despejando X:

X = ( Fosc/ (FrecuenciaBaudios* K) ) - 1

Con BRGH = 1 tendremos K = 16, obtener una frecuencia


de 9600 Bps

X = ( 4 Mhz / (9600 * 16) ) – 1

X = 25.042 Aproximando 25
GENERADOR DE BAUDIOS
Reemplazando X por 25:

FrecuenciaBaudios = 4Mhz/ ( 16 * ( 25 + 1 ) )

FrecuenciaBaudios = 9615.38 Bps

Error = (9615.38 – 9600)/9600

Error = 0.16025 %
BAUDIOS (BRGH = 1)
BAUDIOS (BRGH = 0)
REGISTRO TXSTA
CSRC TX9 TXEN SYNC - BRGH TRMT TX9D

CSRC: Bit de selección de reloj, en modo asincrono no influye

TX9: Habilita el bit 9 de transmisión


1 – Selecciona transmisión de 9 bits.
0 – Selecciona transmisión de 8 bits.

TXEN: Activa la transmisión


1 – Transmisión activada
0 – Transmisión desactivada

SYNC: Bit de selección del modo del USART


1 – Modo síncrono
0 – Modo asíncrono
REGISTRO TXSTA

CSRC TX9 TXEN SYNC - BRGH TRMT TX9D

BRGH: Bit de selección de la velocidad en baudios


1 – Alta velocidad
0 – Baja velocidad

TRMT: Bit de estado del registro de desplazamiento de transmisión


1 – TSR vacio
0 – TSR NO vacio

TX9D: Bit 9 del dato a transmitir


REGISTRO RCSTA
SPEN RX9 SREN CREN ADDEN FERR OERR RX9D

SPEN: Habilitación del puerto serie


1 – Puerto serie habilitado
0 – Puerto serie No habilitado

RX9: Habilita el bit 9 de recepción


1 – Selecciona recepción de 9 Bits
0 – Selecciona recepción de 8 Bits

SREN: No influye en modo asíncrono

CREN: Configura recepción continua


1 – Habilita modo de recepción continua
0 – Deshabilita modo de recepción continua
PROGRAMA PARA RECIBIR Y
TRANSMITIR DATOS AL PC
• Si utiliza el PIC16f628 no olvide apagar los comparadores con el
registro CMCON, Si utiliza el puerto A como E/S digitales.
• Configure los pines RX (RB1) como entrada y TX (RB2) como
salida.
• Configurar modo asíncrono SYNC = 0 (TXSTA)
• Especificar la velocidad a través del registro SPBRG y el Bit BRGH
de TXSTA
• Se habilita el puerto serie (SPEN = 1) y se selecciona el modo de
recepción continua (CREN = 1)
• Activar Transmisión (TXEN = 1)
• Habilitar Interrupciones correspondidentes si se quiere, en el
registro PIE1: bit RCIE(Recepción) y TXIE(transmisión)
PROGRAMA PARA RECIBIR Y
TRANSMITIR DATOS AL PC
Para el programa que se propone solamente la recepción
se configura para interrupción.

Por lo tanto cuando el PIC termina de recibir un dato del


computador se produce una interrupción donde se debe
tratar bajando la bandera RCIF para volver a recibir y a la
vez se lee el dato enviado por el PC del registro RCREG

Para la transmisión basta con bajar la bandera TXIF e


insertar el dato a transmitir en el registro TXREG y esperar
a que el bit TMRT del registro TXSTA vuelva a 1
REGISTRO DE CONTROL DE
INTERRUPCIONES INTCON (PIC16F628)

GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

PEIE: Permiso de interrupciones de periféricos


1 – Permite interrupciones de periféricos
0 – Prohíbe interrupciones de periféricos
REGISTRO PIE1 (PIC16F628)

EEIE CMIE RCIE TXIE - CCP1IE TMR2IE TMR1IE

RCIE: Bit de activación de la interrupción por recepción USART


1 – interrupción activa
0 – interrupción inactiva

TXIE: Bit de activación de la interrupción por transmisión USART


1 – interrupción activa
0 – interrupción inactiva
REGISTRO PIR1 (PIC16F628)

EEIF CMIF RCIF TXIF - CCP1IF TMR2IF TMR1IF

RCIF: Bandera de activación de la interrupción por recepción USART


1 – El buffer de recepción esta lleno
0 – El buffer de recepción esta vacio

TXIF: Bandera de activación de la interrupción por transmisión USART


1 – El buffer de recepción esta vacio
0 – El buffer de recepción esta lleno
PROGRAMA PARA RECIBIR Y
TRANSMITIR DATOS AL PC
;AUTOR: CÉSAR AUGUSTO PEÑA C
;PIC: 16F268
;FUNCION: PROGRAMA QUE RECIBE DATOS DEL COMPUTADOR, LOS MUESTRA POR EL PUERTO A
;Y LOS VUELVE A ENVIAR AL COMPUTADOR
;CARACTERISTICAS:
;OSCILLATOR: INTRC I/O
;WATCHDOG TIMER: OFF
;POWER UP TIMER: ON
;BROWN OUT DETECT: DISABLE
;MASTER CLEAR ENABLE: DISABLE
;LOW VOLTAGE PROGRAM: DISABLE
;DATA EE READ PROTECT: DISABLE
;CODE PROTECT: OFF

list p=16f628 ;Tipo de procesador


INCLUDE "P16F628.Inc" ;Librerias de Registros del PIC
;**************************** DEFINICION DE REGISTROS ***********************************
CBLOCK .32
LEIDO_COMP
endc

RX equ 1 ;PORTB<1>: Pin RX PIC 16F628


TX equ 2 ;PORTB<2>: Pin TX PIC 16F628
;****************************************************************************************
org 00
goto INICIO
PROGRAMA PARA RECIBIR Y
TRANSMITIR DATOS AL PC
org 04
bcf STATUS, RP1
bcf STATUS, RP0 ;Banco 0
INTER_RX btfss PIR1,RCIF ;Interrupcion producida por recepcion?
goto REGRESAR ;No. Otro tipo de interrupción
bcf PIR1,RCIF ;Si. Bajar bandera
movf RCREG,W ;Lectura dato recibido
movwf LEIDO_COMP ;carga valor leido del computador a este registro
movwf PORTA ;Mostrar el valor por el puerto A
call TX_REG ;llama subrutina para enviar el dato
REGRESAR retfie ;retorna de la interrupcion.

;Rutina de transmisión del dato contenido en W al PC


TX_REG bcf PIR1,TXIF ;baja Bandera de transmisión
movwf TXREG ;Carga el valor al registro a transmitir
bsf STATUS, RP0 ;Banco 1
bcf STATUS, RP1
TX_ON btfss TXSTA,TRMT ;Registro transmitido
goto TX_ON ;No.
bcf STATUS, RP0 ;Banco 0
return
PROGRAMA PARA RECIBIR Y
TRANSMITIR DATOS AL PC
INICIO clrf PORTA ;Inicializa el puerto A
movlw 0X07 ;Apaga los comparadores y
movwf CMCON ;Activa los pines como I/O
bsf STATUS,RP0 ;Banco 1
clrf TRISA ;Puerto A como salida
clrf TRISB ;Puerto B como salida
bsf TRISB,RX ;Configura pin de RX
bcf TRISB,TX ;Configura pin de TX
movlw b'00100100' ;Configuracion USART
movwf TXSTA ;y activacion de transmision
movlw .25 ;9600 baudios
movwf SPBRG
bsf PIE1,RCIE ;Habilitacion interrupcion RX
bcf STATUS,RP0 ;Banco 0
clrf PORTA
clrf PORTB
PROGRAMA PARA RECIBIR Y
TRANSMITIR DATOS AL PC

movlw b'10010000' ;Configuracion de la usart


movwf RCSTA ;Habilitacion del puerto serie SPEN<7>
;Modor de recepcion continua CREN<4>
movlw b'11000000'
movwf INTCON ;Permiso Interrupciones generales GIE<7>
;Permiso perifericos que NO se controlan con INTCON

bsf PORTA,0
bsf PORTA,2
movlw .7 ;Carga Valor decimal
addlw 30h ;Transformacion ASCII
call TX_REG ;Envia dato al computador
ciclo nop
goto ciclo
END
PROGRAMA MATLAB

% NOMBRE: uC_PC.m
% AUTOR: M.Sc. Cesar Augusto Peña C
% FUNCION: Envia un caracter (ASCII) por el puerto serial 1 del computador
% y recibe un byte binario

clc % Borra pantalla


PUERTO1 = serial('COM1'); % Especifica que se trabaja con el puerto serial 1
set(PUERTO1,'BaudRate',1200); % 1200 Baudios
fopen(PUERTO1) % Abre el puerto
fprintf(PUERTO1,'7') % Envia el caracter ASCII en este caso '7'
X = fread(PUERTO1,1); % X = dato binario recibido por el computador
fclose(PUERTO1) % Cierra el puerto

Vous aimerez peut-être aussi