Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pic Comunicación Serial PDF
Pic Comunicación Serial PDF
com/usart-pic-comunicacion-serial/
USART PIC, viene de receptor transmisor síncrono asíncrono universal, es una forma de
comunicación entre dispositivos que tengan esta capacidad, donde los datos son enviados
en grupos de 8 bits o de 9 bits pero bit por bit, esto es en serie, por eso se dice que esta
es una comunicación serial, en esta sección se comentará sobre este tipo de comunicación
utilizando el módulo USART del microcontrolador PIC, con el módulo USART PIC el
microcontrolador puede comunicarse e intercambiar datos con el ordenador, con otros
microcontroladores, etc.
Para la comunicación entre microcontroladores y para la comunicación entre el
microcontrolador y el ordenador, se necesitan 2 hilos de conducción para la transmisión y
recepción de datos, y un hilo de conducción para la conexión de los comunes o GND que
tienen que ser los mismos, para la comunicación serial entre el microcontrolador y el
ordenador se seguirá la norma RS232.
Si la comunicación USART PIC es asíncrona, uno de los hilos será para la transmisión
de los datos de un dispositivo a otro y el otro hilo será para la recepción de datos entre un
dispositivo a otro, la transmisión y la recepción pueden ocurrir en forma simultanea, lo
que si se tiene que cumplir es que la frecuencia de trabajo de ambos dispositivos tiene
que ser la misma, a esto se le conoce como los baudios que viene a ser la cantidad de bits
por segundo que se transmitirán entre ambos dispositivos.
Si la comunicación USART PIC es síncrona, uno de los hilos será utilizado tanto para
la transmisión y la recepción de datos por lo que la transmisión no puede ocurrir en forma
simultanea, el otro hilo será utilizado para enviar la señal de reloj de sincronización entre
ambos dispositivos, en este caso uno de los dispositivos es llamado maestro y el otro
esclavo, el maestro es el que controla la señal de reloj y cuando se inicia o finaliza la
comunicación.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 1
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El microcontrolador PIC utilizado como modelo será el PIC16F877A, los pines de este
microcontrolador que trabajan con el módulo USART PIC son el pin RX o pin receptor y
el pin TX o pin transmisor, los que en la imagen están resaltados resaltados.
El pin RX es el pin para la recepción de datos y tendrá que ser configurado como una
entrada digital.
El pin TX es el pin para la transmisión de datos y tendrá que ser configurado como una
salida digital.
El pin RX del PIC tiene que ser conectado al pin TX del otro dispositivo.
El pin TX del PIC tiene que ser conectado al pin RX del otro dispositivo
Los comunes de ambos dispositivos también tienen que estar conectados entres si.
Los niveles de tensión con los que trabajan los pines del módulo USART PIC son de 0V y
5V un bajo será 0V mientras que un alto será 5V, por eso cuando la comunicación es entre
microcontroladores la conexión entre pines se puede hacer directamente, pero cuando la
comunicación es entre el microcontrolador y un ordenador la conexión entre pines tiene
que hacerse a través de un conversor de nivel como el MAX232, ya que los niveles de
tensión para la comunicación serial del ordenador son mayores que para el PIC
típicamente entre -12V y 12V, además de trabajar con lógica negativa, esto es para el
ordenador un bajo será 12V mientras un alto será -12V.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 2
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
Hay otra manera de conectar el PIC con el ordenador para la comunicación serial mediante
resistencias y la compuerta inversora tipo Schmitt 74HC14 como se ve en la siguiente
imagen.
El socket donde se conectará el PIC con el ordenador para la comunicación serial es del
tipo DB9 y se conoce como puerto serie, pero resulta que este tipo de puerto ya no viene
en los ordenadores portátiles que son los que hoy en día la mayoría utiliza, lo que traen
ahora son puertos USB, por lo que para realizar la comunicación serial con el módulo
USART PIC será necesario la utilización de un conversor SERIE-USB como el que se
muestra en la siguiente imagen.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 3
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El conector DB9 es el que se utiliza para la comunicación serial con el módulo USART PIC,
este conector consta de de 9 pines, los hay hembra y macho, de este conector solo se
utilizarán 3 pines, uno para el pin RX, otro para el pin TX y el otro para el tierra, estos
pines tiene una numeración que hay que respetar.
El conversor serie-USB viene con el conector DB9 macho, si el cable que trae es corto se tendrá que
conseguir un cable serie DB9 del que la hembra se conectará al conector DB9 macho del conversor
serie-USB y el DB9 macho del cable serie DB9 al microcontrolador PIC ya sea a través del MAX232 o
con el uso de la compuerta inversora como se comento lineas arriba, por lo que los pines a conectar
del DB9 macho con el módulo USART PIC son en el siguiente orden:
•El pin 2 que es pin receptor RX del conector DB9 macho que viene del ordenador, se
conectará a través del MAX232 o con el uso de la compuerta inversora y la resistencia
de 1K al pin transmisor o pin TX del microcontrolador.
•El pin 3 que es pin transmisor TX del conector DB9 macho que viene del ordenador, se
conectará a través del MAX232 o con el uso de la compuerta inversora y la resistencia
de 22K al pin receptor o pin RX del microcontrolador.
•El pin 5 que es pin GND o tierra o común del conector DB9 macho que viene del
ordenador, se conectará al pin Vss del microcontrolador.
Las conexiones del módulo USART PIC con el ordenador a través de la compuerta
inversora y las resistencias, con el uso del conversor serie-USB será como se indica en la
siguiente imagen.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 4
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El bit7 CSRC es útil cuando se utiliza la comunicación serial síncrona, mediante este bit
se elige la fuente de reloj esto es quien de los dispositivos será el maestro, en la
comunicación serial asíncrona este bit no tiene efecto.
El bit6 TX9 Es para elegir si la transmisión de datos será a 9 bits o a 8 bits, si este bit se
pone a 1 la transmisión será a 9 bits y se este bit se pone a 0 la transmisión será a 8 bits.
El bit5 TXEN Este es el bit que habilita la transmisión de datos, al ponerlo a 1 se habilita
la transmisión de datos y si se lo pone a 0 la transmisión de datos estará deshabilitada.
El bit4 SYNC Con este bit se elige el tipo de comunicación serial a utilizar con el módulo
USART PIC, al ponerlo a 1 la comunicación serial será síncrona y al ponerlo a 0 la
comunicación será asíncrona.
El bit3 no se utiliza.
El bit2 BRGH Este bit es para seleccionar la velocidad de los baudios, que es la cantidad
de bits que se enviarán por segundo en el modo asíncrono, si se pone a 1 será de alta
velocidad, si se pone a 0 será de baja velocidad.
El bit1 TRMT Este bit indica el estado del registro TSR utilizado para la transmisión de
datos, trabaja automáticamente, si está a 1 indica que el registro esta vació, si está a 0
indica que el registro está lleno.
El bit 0 TX9D Este bit será el noveno bit se se utilizan 9 bits en la transmisión de datos.
El bit7 SPEN Este bit es que permite la habilitación del uso del módulo USART PIC, si se
pone a 1 se habilita el uso del módulo USART PIC, si se pone a 0 no es posible utilizar el
módulo USART PIC.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 5
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El bit6 RX9 Es para elegir si la recepción de datos será a 9 bits o a 8 bits, si este bit se
pone a 1 la recepción será a 9 bits y se este bit se pone a 0 la recepción será a 8 bits.
El bit5 SREN Este es el bit se utiliza en el modo síncrono para habilitar la recepción
síncrona, en el modo asíncrono no es utilizado.
El bit4 CREN Con este bit se habilita la recepción continua de datos al ponerlo a 1, si se
pone a 0 la recepción continua de datos está deshabilitada.
El bit 0 RX9D Este bit será el noveno bit se se utilizan 9 bits en la recepción de datos.
El registro SPBRG Es el registro donde se debe cargar el valor con el que se elige la
velocidad de transmisión de los datos, esto es los baudios o la cantidad de bits por
segundo que se enviarán en la comunicación serial con el módulo USART PIC, trabaja
junto con el bit BRGH del registro TXSTA.
El valor a cargar en el registro SPBFG se calcula con las siguientes fórmulas que
dependerán de la velocidad elegida con el bit BRGH, de la frecuencia del oscilador utilizado
y de si la comunicación será síncrona o asíncrona.
Los ejemplos que se harán serán para la transmisión asíncrona a alta velocidad por lo que la fórmula
que se utilizará será:
Velocidad en baudios=Fosc/(16*(SPBRG+1))
SPBRG=(Fosc/(16*9600))-1
de donde:
SPBRG=(Fosc/153600)-1
SPBRG=(4000000/153600)-1=25
Por lo que para obtener un una velocidad de 9600 baudios se tendrá que cargar el registro
SPBRG con 25.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 6
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
Hay un cuadro en la hoja de datos donde se tienen algunos valores a cargar en este
registro para el modo síncrono y asíncrono dependiendo de la frecuencia del oscilador
utilizado y de la velocidad elegida.
El registro TXREG Es el registro donde se debe escribir el dato que se quiera enviar el la
comunicación serial con el módulo USART PIC.
El registro RCREG Es el registro donde se debe leer al recibir algún dato en la
comunicación serial con el módulo USART PIC.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 7
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
Los pines del PIC116F877A para el manejo del módulo USART PIC son el pin RC7 para la
recepción de datos por lo que en este caso se le llama pin RX, y el pin RC6 para la
transmisión de datos, en este caso se le llama pin TX, el pin RX se tiene que configurar
como una entrada digital y el pin TX se tiene que configurar como una salida digital, esto
en el XC8 se puede hacer así:
El bit2 se pondrá a 1 para que el módulo USART PIC trabaje a alta velocidad.
El bit1 es un bit de estado trabaja automáticamente e indica cuando el registro donde se
coloca el dato a transmitir está lleno o vacío, se lo puede poner a 1 o a 0 para iniciar, en
este caso se lo pondrá a 1 porque se está iniciando y tendría que estar vacío.
Luego en la inicialización del módulo USART PIC el registro TXSTA en el XC8 quedará así:
Configuración del registro RCSTA para el control de la recepción de datos, en este caso
se hará para que la recepción sea a 8 bits en forma asíncrona de alta velocidad por lo que:
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 8
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El bit2 este bit trabaja automáticamente cuando se pone a 1 indica que se ha recibido un
dato no válido.
El bit1 este bit trabaja automáticamente cuando se pone a 1 indica que se ha producido
un error por sobreescritura de algún dato recibido.
Luego en la inicialización del módulo USART PIC el registro RCSTA en el XC8 quedará así:
Carga del registro SPBRG para los baudios o la cantidad de bits por segundo para la
comunicación serial, como será a alta velocidad por lo que el bit BRGH del registro TXSTA
se puso a 1 y en forma asíncrona, se utilizará la fórmula.
Velocidad en baudios=baudios=Fosc/(16*(SPBRG+1))
En los ejemplos que se harán se utilizará una Fosc de 4Mhz y la velocidad será de 9600
baudios, por lo que al reemplazar se tendrá que el valor a cargar en el registro SPBRG
será de 25, luego en el XC8 será:
La inicialización podría hacerse dentro de una función a la que se le puede dar el nombre
que se quiera, en este caso se la llamará iniciar_usart() lo que en el XC8 será así:
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 9
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
///////////////////////////////////////////////
Los datos que se transmiten son de tipo caracter, cuando se va transmitir un dato a través
del pin TX se tendrá que esperar a que el registro TSR donde se ponen los datos que se
van a enviar esté vacío, esto se hace esperando a que el bit1 TRMT del registro TXSTA se
ponga a 1, este bit indica que se ha completado la transmisión de un dato anterior
mientras el dato que está en espera se coloca en el registro TXREG, cuando se vacíe el
registro TSR se podrá enviar el otro dato que está esperando en el registro TXREG
pasándolo en forma automática al registro TSR, el dato transmitido es de tipo caracter
char, cuando se pasa el dato del registro TXREG al registro TSR este bit se pondrá
automáticamente a 0, la transmisión de los datos en el XC8 se hará en una función a la
que se le puede llamar como se desee, en este caso se le
llamará envia_caracter_usart().
///////////////////////////////////////////////
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 10
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//Archivo de cabecera para el uso del módulo USART PIC con el XC8///
///////////////////////////////////////////////////////////////////
#ifndef USART_H
#define USART_H
void iniciar_usart();//función para iniciar el USART PIC asíncron, 8 bits, 9600 baudios
unsigned char recibe_caracter_usart();//función para la recepción de caracteres
void envia_caracter_usart(unsigned char);//función para la transmisión de caracteres
void envia_cadena_usart(char*);//función para la transmisión de cadenas de caracteres
///////////////////////////////////////////////
//inicialización del módulo USART PIC modo asíncrono
//en una función, a 8bits,a 9600 baudios
/////////////////////////////////////////////////////
void iniciar_usart(){
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 11
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
///////////////////////////////////////////////
//recepción de datos del módulo USART PIC modo asíncrono
////////////////////////////////////////////////////////////
unsigned char recibe_caracter_usart(){
if(PIR1bits.RCIF==1){//si el bit5 del registro PIR1 se ha puesto a 1
return RCREG;//devuelve el dato almacenado en el registro RCREG
}
else//sino
return;//retorna sin hacer nada
}
///////////////////////////////////////////////
//transmisión de datos del módulo USART PIC modo asíncrono
///////////////////////////////////////////////
void envia_caracter_usart(unsigned char caracter){
while(TXSTAbits.TRMT==0);// mientras el registro TSR esté lleno espera
TXREG = caracter;//cuando el el registro TSR está vacio se envia el caracter
}
///////////////////////////////////////////////
//transmisión de cadenas de caracteres con el módulo USART PIC modo asíncrono
///////////////////////////////////////////////
void envia_cadena_usart(char* cadena){//cadena de caracteres de tipo char
while(*cadena !=0x00){//mientras el último valor de la cadena sea diferente
//de el caracter nulo
envia_caracter_usart(*cadena);//transmite los caracteres de cadena
cadena++;//incrementa la ubicación de los caracteres en cadena
//para enviar el siguiente caracter de cadena
}
}
#endif /* USART_H */
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 12
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
USART PIC ejemplos 1 En este primer ejemplo se realizará la comunicación serial entre
2 microcontroladores PIC16F877A, mediante dos pulsadores conectados en los pines RA0
y RA1 de uno de los PIC se podrá encender o apagar un led conectado en el pin RB1 del
otro PIC.
Para utilizar los pines RA0 y RA1 como entradas digitales, aparte configurarlos con el
registro TRISA, es necesario poner el registro ADCON1 del módulo ADC a 6, esto es
ADCON1=6.
El ejemplo es sencillo para no complicar el código, pero se puede hacer lo que se quiera
mediante la comunicación serial, la idea será la misma si se quiere hacer cualquier tipo de
control de un microcontrolador con otro microcontrolador.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 13
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
A partir de este momento ya se puede utilizar el archivo de cabecera usart.h para realizar
la comunicación serial con el módulo USART PIC
Con el pulsador del pin RA0 del PIC 1 se encenderá el led del pin RB1 del PIC 2, con el
pulsador del pin RA1 del PIC 1 se apagará el led del pin RB1 del PIC 2.
En el código para el PIC 1 se tiene que hacer que al presionar el pulsador para encender el
led se transmitirá el caracter ‘e’ al PIC 2, al presionar el pulsador para apagar el led se
transmitirá el caracter ‘a’ al PIC 2, el siguiente será el código para el PIC 1.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 14
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
///////////////////////////////////////////////
///////*********************************///////
///*** microcontroladores-mrelberni.com ***////
///////*****************************//////////
//* USART PIC ejemplos 1 código para el PIC 1* //
///////********************************///////
void main(void)
{
ADCON1=6;//para que RA0 y RA1 sean entradas digitales
while(1){
if(PORTAbits.RA0==0){//si se preciona el pulsador para encender el led
envia_caracter_usart('e');//se transmitirá el caracter 'e' hacia PIC 2
}
if(PORTAbits.RA1==0){//si se preciona el pulsador para apagar el led
envia_caracter_usart('a');//se transmitirá el caracter 'a' hacia PIC 2
}
}
return;
}
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 15
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
En el código para el PIC 2 se tiene que hacer que cuando reciba el caracter ‘e’ el led se
encienda y cuando reciba el caracter ‘a’ el led se apague. El siguiente será el código para
el PIC 2
///////*********************************///////
///*** microcontroladores-mrelberni.com ***////
///////*****************************//////////
//* USART PIC ejemplos 1 código para el PIC 2* //
///////********************************///////
//bits de configuración del PIC16F877A
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit S
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit
#pragma config WRT = OFF // Flash Program Memory Write Enable bits
#pragma config CP = OFF // Flash Program Memory Code Protection bit
while(1){
dato=recibe_caracter_usart();//para leer el caracter recibido de PIC 1
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 16
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
En el código para el PIC16F88 se creará la variable que aumentará en una unidad cada
medio segundo, cuando aumente en cuatro unidades se transmitirá un caracter al
PIC16F877A, el código es el siguiente:
//////////////////////////////////////////////////
/////*********************************///////
///*** microcontroladores-mrelberni.com ***////
///////*****************************//////////
//* USART PIC ejemplos 2 código para el PIC16F88 * //
///////********************************///////
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 17
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
// CONFIG2
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable bit
#pragma config IESO = ON
void main(void) {
OSCCON=0b01101110;//selecciona oscilador interno del PIC16F88 a 4MHz
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 18
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
if(i>=12&&i<16){
envia_caracter_usart('4');
}
if(i==16)
i=0;
}
return;
}
//////////////////////////////////////////////////
/////*********************************///////
///*** microcontroladores-mrelberni.com ***////
///////*****************************//////////
//* USART PIC ejemplos 2 código para el PIC16F877A * //
///////********************************///////
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 19
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
void main(void)
{
unsigned char dato;//variable tipo char para guardar el caracter recibido
TRISD&=~((1<<4)|(1<<5)|(1<<6)|(1<<7));//RD4, RD5, RD6 y RD7 como salidas digitales
PORTD&=~((1<<4)|(1<<5)|(1<<6)|(1<<7));//leds inician apagador
while(1){//ciclo de programa
dato=recibe_caracter_usart();//para leer el caracter recibido del PIC16F877A
switch(dato){
case '1'://En caso el caracter recibido sea 1
PORTD|=(1<<4);//enciende el led en el pin RD4
PORTD&=~((1<<5)|(1<<6)|(1<<7));//leds en RD5, RD6 y RD7 apagados
break;
case '2'://En caso el caracter recibido sea 2
PORTD|=(1<<5);//enciende el led en el pin RD5
PORTD&=~((1<<4)|(1<<6)|(1<<7));//leds en RD4, RD6 y RD7 apagados
break;
case '3'://En caso el caracter recibido sea 3
PORTD|=(1<<6);//enciende el led en el pin RD6
PORTD&=~((1<<4)|(1<<5)|(1<<7));//leds en RD4, RD5 y RD7 apagados
break;
case '4'://En caso el caracter recibido sea 4
PORTD|=(1<<7);//enciende el led en el pin RD7
PORTD&=~((1<<4)|(1<<5)|(1<<6));//leds en RD4, RD5 y RD6 apagados
break;
}
}
return;
}
Se necesitará una ventana conocida como terminal donde se podrá ver lo que se transmite
del microcontrolador al ordenador, y también para ver los datos que se transmiten del
ordenador al microcontrolador.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 20
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El circuito a utilizar será el siguiente, hay que ser muy cuidadoso en cuanto a las
conexiones a realizar entre el ordenador, el conversor serial-usb, la compuerta inversora,
las resistencias y el microcontrolador.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 21
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 22
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
//////////////////////////////////////////////////
/////*********************************///////
///*** microcontroladores-mrelberni.com ***////
///////*****************************//////////
//* USART PIC ejemplos 3 código para el PIC16F877A * //
///////********************************///////
void main(void)
{
iniciar_usart();//inicia el módulo USART PIC
while(1){
envia_cadena_usart("microcontroladores-mrelberni.com");//mensaje a enviar al ordenador
//que será visto en el tera term
return;
}
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 23
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
El circuito a utilizar será el siguiente, hay que ser muy cuidadoso en cuanto a las
conexiones a realizar entre el ordenador, el conversor serial-usb, la compuerta inversora,
las resistencias y el microcontrolador.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 24
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
//////////////////////////////////////////////////
/////*********************************///////
///*** microcontroladores-mrelberni.com ***////
///////*****************************//////////
//* USART PIC ejemplos 4 código para el PIC16F877A * //
///////********************************///////
void main(void)
{
unsigned char dato;//para guardar el caracter recibido del ordenador
while(1){
dato=recibe_caracter_usart();//guarda en daato el caracter recibido del
//ordenador
if(dato=='+'){//si el caracter recibido es '+'
PORTDbits.RD1=1;//se enciende el led
envia_cadena_usart("led encendido");//mensaje a enviar al ordenador
//que será visto en el tera term
envia_caracter_usart(13);//para retorno de carro
envia_caracter_usart(10);//para nueva linea
}
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 25
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
return;
}
La siguiente es la imagen del caracter enviado por el ordenador y del mensaje visto en
pantalla en el tera term, para poder ver el caracter enviado, en el tera term hay que ir a
setup -> terminal y habilitar Local echo.
El módulo USART PIC también puede ser utilizado mediante interrupciones, la forma de
proceder en este caso se puede ver aquí.
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 26
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/
http://microcontroladores-mrelberni.com/usart-pic-comunicacion-serial/ página 27