Está en la página 1de 17

Lenguaje C aplicado a microcontroladores PIC

(Compiladores de CCS)

1
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

COMUNICACIÓN SERIE ASÍNCRONA en C (compiladores de CCS)

La Configuración de una Comunicación Serie Asíncrona desde el compilador PCM


de CCS está gobernada, de manera fundamental por la directiva #USE RS232

Aunque la directiva se llame así, sirve para configurar cualquier transferencia


serie asíncrona y no sólo RS232, que no deja de ser una de las posibles normas

Los niveles eléctricos asociados a los niveles lógicos de recepción/transmisión


son los correspondientes a la tensión de alimentación del microcontrolador y no
a los de la norma RS232

El asistente del entorno PCW (PIC Wizard) permite definir, para esta directiva:

• Velocidad de transmisión (en baudios)


• Qué pin se empleará para la transmisión
• Qué pin se utilizará para la recepción
• Si se va a utilizar o no bit de paridad y de qué tipo (par o impar)

2
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Comunicación serie asíncrona

Posible más de un puerto

PIC Wizard para configuración


de comunicaciones

3
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Opciones de la directiva #USE RS232 :

• BAUD= x
x sería la velocidad de comunicación (en baudios). Para que el compilador
inserte el código necesario para transmitir/recibir a la velocidad indicada,
debe “conocer” la frecuencia del oscilador que se va a utilizar.
Deberá pues existir previamente una directiva #USE DELAY(clock=frec.)

Si la velocidad de transmisión indicada no se pudiera alcanzar con un


error inferior al 3%, se generaría a la hora de realizar la compilación un
mensaje de error del tipo: “Baud rate out of range” salvo que se incluya
una opción BRGH1OK en la directiva (asumimos ese error)

• XMIT=pin Pin de transmisión que se va a utilizar (p.e.: xmit=PIN_C6)

• RCV=pin Pin de recepción que se va a utilizar (p.e.: rcv=PIN_C7)

Si el microcontrolador seleccionado tiene módulo SCI y se especifican los pines


asociados como los que se deben utilizar, la transmisión y/o recepción se hará
con el hardware disponible, en caso contrario será implementado por software
4
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

• ENABLE=pin
Durante la transmisión, el pin especificado estará en estado alto y durante
la recepción en estado bajo . Ese pin se puede utilizar para habilitar
bien la transmisión o bien la recepción en una comunicación semi-dúplex
como puede ser el caso del control de los drivers de un bus RS485

• RESTART_WDT
Se insertará código para resetear el Watchdog durante la espera
por un byte (para funciones que se quedan esperando) a que “llegue algo”

• INVERT
Con esta opción, se invierte la polaridad de los niveles asociados a los
pines de la comunicación: el 0 correspondería a tensión y el 1 a masa.
El estado inactivo o de reposo (a 1) se correspondería con tensión nula
Esta opción no debería utilizarse si se emplea el módulo SCI interno

• BITS=x
Se especifica el tamaño de los datos que serán enviados, x puede tomar
un valor comprendido entre 5 y 9 si se implementa por software
la comunicación o bien de 8 ó 9 si se emplea el módulo SCI interno
5
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

• FLOAT_HIGH
En estado alto, la línea no estará en un nivel alto sino en un estado de
tensión flotante debido a que la salida que la controla es del tipo
drenador (o colector) abierto

• BRGH1OK
Con esta opción el compilador permite la generación de código aún en
aquellos dispositivos que presentarán problemas en su velocidad de
transmisión

• PARITY=x -> x puede ser N (none: sin), O (odd: impar) o E (even: par)
Si se especifica el empleo de paridad, se envía un bit adicional como
comprobación y en el supuesto de que se produzca un error, éste
quedaría registrado en una variable denominada RS232_ERRORS

• ERRORS
Si se emplea esta opción, el compilador define una variable llamada
RS232_ERRORS que “recoge” los errores en cada recepción y los
“resetea” después de que éstos se produzcan
6
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

La variable RS232_ERRORS (definida por el compilador) contiene:

a) Si se está utilizando una implementación software:

• En el bit 7, el 9º bit si se está utilizando tamaño de 9 bits en transmisión


• El bit 6 se pone a 1 si se produjo un fallo en el envío con el modo de
tensión flotante de salida

b) Si se está empleando una UART interna:

• Es una copia del registro RCSTA (sólo para recepción), salvo el bit 0
que se emplea para indicar error de paridad

Registro RCSTA

7
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Más acerca de la Directiva #USE RS232(opción, opción,...)

Si la implementación va a realizarse por software (no se va a utilizar un


módulo SCI interno), es importante que las directivas #USE FAST_IO
o bien #USE FIXED_IO vayan delante de esta directiva pero no la
directiva #USE STANDARD_IO por la manera en que se generaría el
código de puesta a 1 o puesta a 0 de las líneas de salida

Las funciones integradas del compilador más usadas para comunicación serie
asíncrona a las que afecta esta directiva son las siguientes:

• Para CONFIGURACIÓN: set_uart_speed( )

• Para TRANSMISIÓN: putc() o su equivalente: putchar()


puts()
printf()

• Para RECEPCIÓN: kbhit()


getc() o sus equivalentes getch() y getchar()
gets()
8
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Las Funciones Integradas para la Com. Serie Asíncrona (Configuración):

set_uart_speed(baudios)

Esta función sólo se puede emplear en aquellos dispositivos que utilizan


el módulo SCI (USART) interno hardware. La función se emplea para
cambiar la velocidad de transmisión/recepción en tiempo de ejecución
(no en la compilación)

P.e.: switch( input_d() & 0x03)


{
case 0: set_uart_speed(2400);
break;
case 1: set_uart_speed(4800);
break;
case 2: set_uart_speed(9600);
break;
case 3: set_uart_speed(19200);
break;
} //Con los pines RD0 y RD1 se selecciona la velocidad
9
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Las Funciones Integradas para la Com. Serie Asíncrona (Transmisión):

putc() ó putchar() (son idénticas) putc(caracter)

Se envía un carácter a través del pin especificado para envío (XMIT)


en la directiva #USE RS232 anterior

Ejemplo: char mensaje[10];


...
putc(‘*’);
for(i=0;i<10;i++) putc(mensaje[i]);

puts() Llamada: puts(tira_caracteres)

La tira de caracteres debe finalizar con un 0. Se envía cada uno de los


caracteres de la tira usando la función putc(). Después del envío de la
tira de caracteres, se envía un retorno de carro (carácter 13 =0x0D)
y un avance de línea (carácter 10 =0x0A)

Ejemplo: puts(“Hola que tal”);


10
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

printf() printf(tira_caracteres)
printf(tira_car_constantes,Valores...)
printf(Función, tira_car_constantes, Valores...)

Valores son variables en una lista separadas por comas


Función es el nombre de la función que se debe emplear para sacar los
caracteres (si no se especifica nada es la putc() por defecto)

Esta función saca, mediante la Función de salida especificada, los


caracteres y los valores para su representación. Si se especifican
Valores, la tira de caracteres debe ser constante y se puede insertar
la representación de los valores utilizando el carácter especial % seguido
del número de caracteres a utilizar (opcional de 1 a 9 ó 01 a 09 si se
desean representar los ceros a izq.) y del tipo de dato, que puede ser:

C como carácter U como entero sin signo X como hexadecimal


D entero con signo lu entero largo sin signo LX hexadecimal “largo”
ld entero largo con signo

11
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Ejemplos:
Especificación Valor_1=0x12 Valor_2=0xFE

%03u 018 254


%u 18 254
%2u 18 ?Indefinido
%d 18 -2
%X 12 FE

Representación que se vería


Otros ejemplos:

printf(“Temporizador 0: %2X”,get_rtcc());

printf(“%2u %X %4X \n\r”, A,B,C);

printf(lcd_putc, “N = %u”, numero);

12
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Las Funciones Integradas para la Com. Serie Asíncrona (Recepción):

Importante: Estas funciones tienen un comportamiento diferente si la


comunicación está implementada mediante el hardware o por software

getc() ó getch() ó getchar() (son idénticas) valor = getc( )

Cuando se la llama, espera por la llegada de un byte en el pin de recepción


RCV especificado en la directiva #USE RS232 y devuelve dicho byte como
resultado.

Si la recepción está implementada mediante el módulo USART


hardware, se puede hacer uso del triple buffer existente sin perder datos.
Si está implementada por software, debemos estar esperando cada byte
con getc() para no perder recepciones.

Para evitar que el microcontrolador quede “colgado” esperando de manera


indefinida la recepción de un byte que no llega, se debería usar la
función kbhit() para verificar si ha llegado un carácter y está disponible

13
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

kbhit() Llamada: valor = kbhit( )

Esta función devuelve 0 (FALSE) ó 1 (TRUE) si la función getc()


necesitara conocer la disponibilidad de un carácter (byte) para
ser leído.

Si la comunicación está gestionada por software, la función devuelve


TRUE si se ha detectado un bit de START en el pin de recepción

Si está implementada con la USART hardware, devuelve TRUE si el


byte ha sido recibido y está disponible en el buffer para ser leído
mediante getc()
Ejemplo de Función que
char getc_con_tiempo( ) { espera 0,5 segundos como máximo
int t_maximo=0;
while(!kbhit( ) && (t_maximo++ < 50) delay_ms(10);
if(kbhit( ))
return(getc( )); //devuelve carácter recibido
else
return(0); } //si no llegó nada devuelve 0
14
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

gets(puntero_a_tira_caracteres) Llamada gets(puntero)

Esta función espera y lee caracteres que va colocando a partir de la


posición señalada por el puntero utilizado como parámetro.

Lee hasta que recibe un retorno de carro (13 en decimal 0x0D).


La tira de caracteres se finaliza con la inclusión de un cero.

Ejemplo:
Ejemplo para solicitar clave por pantalla
char tira[30];
do{
printf(“Clave:”); //se saca mensaje solicitando clave

gets(tira); //se espera por clave con retorno de carro final

if(strcmp(tira,password)) //se compara clave introducida con real


printf(“Correcta”); //si coincide correcta
else printf(“Clave Incorrecta”);
} while !strcmp(tira,password);
15
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Hablando de Tiras de Caracteres...

Funciones Estándar para tiras de caracteres:

strcat(s1,s2) Para encadenar tiras de caracteres


strchr(s1,c) Localiza c en tira por 1ª vez y devuelve dirección (&s1[i])
strrchr(s1,c) Idem a la anterior pero empieza búsqueda desde final
strcmp(s1,s2) Compara tiras s1 y s2 y devuelve TRUE si coinciden
strncmp(s1,s2,n) Compara n caracteres entre s1 y s2
stricmp(s1,s2) Compara ignorando si son mayúsculas o minúsculas
strncpy(s1,s2,n) Copia n caracteres de s2 en s1
strcspn(s1,s2) Cuenta caracteres de s1 que no están en s2
strspn(s1,s2) Cuenta caracteres de s1 que también están en s2
strlen(s1) Cuenta los caracteres de s1
strlwr(s1) Convierte todas las mayúsculas a minúsculas
strpbrk(s1,s2) Busca posición en s2 donde empieza copia de s1

s1 y s2 son punteros a arrays de caracteres

16
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

La Norma RS232

En principio nació con la idea de recoger todas las posibilidades de comunicación


entre un computador o equipo terminal de datos (DTE o Data Terminal
Equipment) y un módem o equipo de comunicación de datos (DCE o Data
Communications Equipment).

Sin embargo su uso se extendió a otras aplicaciones que nada tienen que ver
con la intención original y se emplea para comunicar equipos que no respetan
íntegramente la norma o la cumplen sólo de manera parcial. De hecho se emplea
para comunicar equipos que son ambos DTE (dos PCs ó un PC con un micro p.e.)
que no necesitan la mayoría de las líneas de la norma original: detector de
portadora (DCD), indicador de llamada (RI), canal secundario,…

Los conectores que se suelen utilizar en los equipos son:

• Conector SUB-D de 25 pines


• Conector SUB-D de 9 pines
• Conector SUB-D de 15 pines de alta densidad (más extraño)

17
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

El conector de 25 pines es el que dispone de todas las señales definidas en


la norma inicial, los otros dos prescinden de algunas de las señales.

Como recomendación general: si necesitamos comunicar nuestro micro con


otro equipo que disponga de un puerto de comunicación serie “según norma
RS232” y dado que cada fabricante hace su interpretación particular de
la norma, consultemos los correspondientes manuales y esquemas para saber
exactamente qué tipo de señales está utilizando y en qué pines.

Como ejemplo tenemos los puertos serie de un PC (COMn), que presentan de


manera mayoritaria unos conectores SUB-D de 9 pines hembra
(aunque la norma original decía que los DTE deberían ser machos)

Vista desde el exterior del conector del PC


18
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Funcionalidad de los pines en el conector SUB-D 9 del PC :

Pin 1 DCD (Entrada al Puerto: Detección de Portadora)


Pin 2 RXD (Entrada de Recepción de Datos)
Pin 3 TXD (Salida de Transmisión de Datos)
Pin 4 DTR (Salida: PC listo para recibir, es la respuesta a CTS)
Pin 5 MASA COMÚN
Pin 6 DSR (Entrada: PC puede enviar datos, como respuesta a RTS)
Pin 7 RTS (Salida: PC pide envío de datos, le responderían con DSR )
Pin 8 CTS (Entrada: Pregunta exterior sobre si PC listo para recibir,
contestará con DTR)
Pin 9 RI (Entrada: Indicador de llamada, sólo si es realmente un módem
el otro equipo)

Protocolos de envío y de recepción:

RTS-DSR funcionan como pregunta-respuesta para enviar datos desde el PC

CTS-DTR también son pregunta-respuesta para recibir datos en el PC


19
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Para realizar la conexión entre un microcontrolador y un PC, será necesario


realizar la correspondiente adaptación de los niveles de tensión que utiliza
el microcontrolador a los niveles de la norma RS232

“1” -> 5V “1” -> -5V a -15V “1” -> -3V a -15V
“0” -> 0V “0” -> +5V a +15V “0” -> +3V a +15V
Micro a 5V
lectura y Escritura RS232 Lectura RS232
escritura

Existen varios circuitos integrados comerciales que realizan esta adaptación


con muy pocos componentes (p.e. la familia MAX220 a 249)

La conexión puede realizarse utilizando las líneas que se consideren oportunas.


Se puede simplificar el conexionado y obviar las líneas de pregunta-respuesta
“engañando” al emisor para hacerle creer que el receptor está siempre listo.
El truco pasa por “puentear” las líneas de petición de envío y las respuestas.

20
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Emisores/Receptores de 2 canales para adaptación TTL - RS232 y viceversa


Una sola alimentación de 5V para generar tensiones de +10V y -10V

21
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Conexión serie según norma RS232: Comunicación PIC - PC (puerto serie)

Niveles escritura RS232


“1” -> 5V “1” -> -5V a -15V
“0” -> 0V “0” -> +5V a +15V

RX Driver TX Pin3
RS232 Pin2
TX RX
(MAX232) Pin5
GND GND

Niveles lectura RS232


EJEMPLO DE “1” -> -3V a -15V
CONEXIÓN A 3 HILOS “0” -> +3V a +15V
FULL DÚPLEX

22
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

La Norma RS485

Es una norma de comunicación serie asíncrona que utiliza dos líneas (A y B)


de manera que la tensión diferencial entre ambas marca el nivel lógico que
se está enviando.

La transferencia es semi-dúplex ya que sólo es posible que un equipo envíe,


gobernando las líneas de datos A y B, y otro u otros equipos reciban. Está
pensada para una comunicación multipunto.

La norma RS485 define únicamente la especificación eléctrica del interface


y no un conector específico. El medio físico es un par de hilos trenzados entre
sí para reducir el posible ruido electromagnético inducido.

El estándar RS485 permite la interconexión de hasta 32 dispositivos sobre


un único par de hilos, con velocidades de hasta 10Mbits por segundo y una
distancia máxima de 1200 metros. Ambas magnitudes, velocidad y distancia
están ligadas entre sí, de manera que si se aumenta una, se debe reducir la
otra.

23
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Posibles Circuitos de adaptación a un bus RS485

Impedancias de terminación a ambos lados

Emisor Receptor Emisor/Receptor


(driver) (receiver) (transceiver)

El margen de la tensión de modo común permitida en los terminales de


entrada A y B respecto a la masa del receptor está comprendida entre
-7V y 12V. Si el terminal A está a una tensión superior a B (con un valor
diferencial superior a 0,2V) se estará recibiendo un “1” y en caso contrario
(tensión de B superior en más de 0,2V a A) se interpreta un “0”

24
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Circuitos de Interface RS485

Las señales eléctricas que es capaz de generar y leer la USART interna del
microcontrolador (o su implementación software) deben adaptarse a los
niveles diferenciales RS485 mediante algún circuito de interface.

Para permitir el envío y la recepción con un mismo circuito se debe emplear


un transceiver. Son circuitos que además pueden soportar “colisiones”, es
decir que más de un circuito transmisor esté emitiendo (o tratando de emitir
ya que se producirá un error en los mensajes de ambos)

El transceiver integrado más popular probablemente sea el 75176, capaz de


realizar la adaptación TTL-RS485 y viceversa.

Otro transceiver utilizado con frecuencia es el 75184 que es totalmente


compatible en patillaje y funcionalidad con el 75176 pero que además incluye
una red de entrada supresora de transitorios de tensión sobre las líneas
del bus.

25
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Transceiver 75176

Se alimenta con una tensión única de 5V y combinan el funcionamiento de un


driver diferencial triestado de salida con una entrada diferencial para la
recepción.

Encapsulado DIP8 Diagrama lógico

Tabla de verdad como emisor Tabla de verdad como receptor

26
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Conexión del transceiver RS485 al microcontrolador

Además de los pines de Recepción y Transmisión, necesitaremos un pin


adicional que controle el sentido de los datos en cada momento (entrada
o salida) para habilitar el bloque envío o de recepción del transceiver.

Con dicho pin se podría controlar el terminal DE (habilita envío) y RE


(habilita recepción) del 75176. Como presentan una lógica opuesta, se puede
emplear un único pin para controlar ambos: si pin=0 se habilita la recepción
y se anula el envío, si pin=1 se activa envío y se anula recepción.

Microcontrolador 75176

TX D A
RX R B
Enable DE
RE
27
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Programación en C para transferencia sobre RS485:

La directiva #USE RS232 permite definir, además de los pines de envío y


recepción, un pin de habilitación que se coloca a 1 durante el envío y a 0
durante la recepción. Dicho pin se activará por software ya que dicha salida
no está disponible en la USART integrada, pero desde el punto de vista
del programador, una vez definida la directiva, será posible utilizar las
funciones integradas del compilador.

Ejemplo:

#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)


...
if (kbhit())
{ cola_circular[cola]=getch();
cola++;
if (cola>(TAM_BUF_UART-1))
cola=0;
}
28
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Nota de Interés:

Es posible tener activas varias transferencias asíncronas del mismo o de


diferentes tipos (RS232, RS485,...) con el mismo microcontrolador PIC.

La configuración realizada con la directiva #USE RS232 tiene efecto desde


el lugar en que se encuentra dicha directiva para las funciones getc(), putc(),
printf() y kbhit() que aparezcan a continuación y hasta que aparezca una
nueva directiva #USE RS232

#USE RS232 no es una línea de código ejecutable si no una configuración


para las funciones que le siguen, trabaja de manera similar a una directiva
#DEFINE.

De este modo, podríamos incluir una directiva #USE RS232 justo antes de
cada una de las funciones que queramos utilizar para una transferencia
asíncrona con una determinada configuración o bien definir unas nuevas
funciones con la cabecera de configuración correspondiente al tipo de
comunicación serie asíncrona que queramos emplear.

29
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

Ejemplo: Se incluyen dos directivas y se definen funciones específicas


#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2) PARA RS485
void enviar_RS485( char c) //Para enviar por RS485
{ putc( c );
}
char tomar_RS485( ) //Para recibir por RS485
{ return(getc( ));
}

#use rs232(baud=9600 ,xmit=PIN_B1,rcv=PIN_B2)


PARA RS232

void enviar_RS232( char c) //Para enviar por RS232


{ putc( c );
}
char tomar_RS232( ) //Para recibir por RS232
{ return(getc( ));
}
main( )
{ ... caracter=tomar_RS485(); Recibo por RS485

enviar_RS232(carácter-’0’); Envío por RS232

enviar_RS485(nuevo); Envío por RS485


}
30
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

El mismo ejemplo:

Se incluye la directiva justo antes de la llamada a la función integrada

main()
{...
#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)

carácter = getc( ); //Recibir con la configuración para RS485

#use rs232(baud=9600 ,xmit=PIN_B1,rcv=PIN_B2)

putc(carácter-’0’); //Enviar con la configuración de RS232

#use rs232(baud=14400 ,xmit=PIN_C6,rcv=PIN_C7,enable=PIN_C2)

putc(nuevo); //Enviar con la configuración RS232

31
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño

Lenguaje C aplicado a microcontroladores PIC

A CONTINUACIÓN ALGUNOS EJEMPLOS DE CONEXIÓN


ENTRE EL PIC EN PICDEM2 plus Y EL PUERTO SERIE DE UN PC,
TRABAJANDO ÉSTE COMO EMULADOR DE TERMINAL

Programas >
Accesorios > Configuración de HyperTerminal
Comunicaciones >
Hyper Terminal

Se mostrará lo que se reciba por el COMn


y sacará por dicho puerto serie el código
ASCII correspondiente a la tecla que se
pulse con el teclado del PC

32
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño
Lenguaje C aplicado a microcontroladores PIC

Se podría utilizar una utilidad del Compilador de CCS: SIOW

También es un emulador de terminal

33
Comunicación Serie Asíncrona en C ©ATE-Universidad de Oviedo-Fernando Nuño