Вы находитесь на странице: 1из 21

Introduccin

Cuando hablamos con alguien, en primer lugar llamamos su


atencin y entonces se transmite el mensaje, una palabra cada
vez. Cuando terminamos, realizamos una pausa para indicar
que hemos concludo. Lo mismo se cumple con la lectura o la
escritura, se comienza una oracin con la letra mayscula, y lee
o escribe una palabra cada vez, con intervalos de cierto perodo.
Estas formas de comunicacin humanas son serie, no paralelas.

Los sistemas microprogramables basados en CPU internamente


estn diseados para la transferencia de datos en buses o lneas
de 8 bits o mltiplos de 8. As el bus de datos est optimizado
para el tratamiento de datos en paralelo lo cual es mucho ms
rpido que el tratamiento serie.

Si la velocidad de transferencia de datos en paralelo es mucho


ms rpida, porqu se utiliza la transmisin de datos serie?.
Algunas respuestan se dan a continuacin:

1. Para realizar la comunicacin de datos en paralelo se


requiere gran cantidad de hilos conductores, pues debe ser
establecido un hilo para cada bit de datos, adems de las
seales de control. Esto encarece notablemente la
comunicacin en funcin de la distancia. La comunicacin
serie requiere 2, 3 4 hilos.
2. Una entrada salida/serie puede ser transmitida a travs de
pares de cobre, cable coaxial, fibra ptica, va rdio o va
satlite, lo que proporciona comunicacin con equipos
remotos (redes locales) o muy remotos (Internet a travs
de las redes telefnicas y de datos).
3. La comunicacin paralelo no posee el alto grado de
estandarizacin que ha alcanzado la comunicacin serie, lo
que permite la intercominicacin entre equipos, por
ejemplo mediante RS232, USB o FireWire.
Qu es la comunicacin serial
La comunicacin serial es un protocolo muy comn (no hay que confundirlo con el Bus Serial de
Comunicacin, o USB) para comunicacin entre dispositivos que se incluye de manera estndar en
prcticamente cualquier computadora. La mayora de las computadoras incluyen dos puertos seriales RS-232.
La comunicacin serial es tambin un protocolo comn utilizado por varios dispositivos para instrumentacin;
existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Adems, la comunicacin
serial puede ser utilizada para adquisicin de datos si se usa en conjunto con un dispositivo remoto de
muestreo.

El concepto de comunicacin serial es sencillo. El puerto serial enva y recibe bytes de informacin un bit a la
vez. Aun y cuando esto es ms lento que la comunicacin en paralelo, que permite la transmisin de un byte
completo por vez, este mtodo de comunicacin es ms sencillo y puede alcanzar mayores distancias. Por
ejemplo, la especificacin IEEE 488 para la comunicacin en paralelo determina que el largo del cable para el
equipo no puede ser mayor a 20 metros, con no ms de 2 metros entre cualesquier dos dispositivos; por el
otro lado, utilizando comunicacin serial el largo del cable puede llegar a los 1200 metros.

Tpicamente, la comunicacin serial se utiliza para transmitir datos en formato ASCII. Para realizar la
comunicacin se utilizan 3 lneas de transmisin: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a
que la transmisin es asincrnica, es posible enviar datos por un lnea mientras se reciben datos por otra.
Existen otras lneas disponibles para realizar handshaking, o intercambio de pulsos de sincronizacin, pero no
son requeridas. Las caractersticas ms importantes de la comunicacin serial son la velocidad de
transmisin, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es
necesario que las caractersticas sean iguales.

a. Velocidad de transmisin (baud rate): Indica el nmero de bits por segundo que se transfieren, y
se mide en baudios (bauds). Por ejemplo, 300 baudios representa 300 bits por segundo. Cuando se
hace referencia a los ciclos de reloj se est hablando de la velocidad de transmisin. Por ejemplo, si
el protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj est corriendo a 4800 Hz, lo
que significa que el puerto serial est muestreando las lneas de transmisin a 4800 Hz. Las
velocidades de transmisin ms comunes para las lineas telefnicas son de 14400, 28800, y 33600.
Es posible tener velocidades ms altas, pero se reducira la distancia mxima posible entre los
dispositivos. Las altas velocidades se utilizan cuando los dispositivos se encuentran uno junto al otro,
como es el caso de dispositivos GPIB.
b. Bits de datos: Se refiere a la cantidad de bits en la transmisin. Cuando la computadora enva un
paquete de informacin, el tamao de ese paquete no necesariamente ser de 8 bits. Las cantidades
ms comunes de bits por paquete son 5, 7 y 8 bits. El nmero de bits que se enva depende en el
tipo de informacin que se transfiere. Por ejemplo, el ASCII estndar tiene un rango de 0 a 127, es
decir, utiliza 7 bits; para ASCII extendido es de 0 a 255, lo que utiliza 8 bits. Si el tipo de datos que se
est transfiriendo es texto simple (ASCII estndar), entonces es suficiente con utilizar 7 bits por
paquete para la comunicacin. Un paquete se refiere a una transferencia de byte, incluyendo los bits
de inicio/parada, bits de datos, y paridad. Debido a que el nmero actual de bits depende en el
protocolo que se seleccione, el trmino paquete se usar para referirse a todos los casos.
c. Bits de parada: Usado para indicar el fin de la comunicacin de un solo paquete. Los valores tpicos
son 1, 1.5 o 2 bits. Debido a la manera como se transfiere la informacin a travs de las lneas de
comunicacin y que cada dispositivo tiene su propio reloj, es posible que los dos dispositivos no
estn sincronizados. Por lo tanto, los bits de parada no slo indican el fin de la transmisin sino
adems dan un margen de tolerancia para esa diferencia de los relojes. Mientras ms bits de parada
se usen, mayor ser la tolerancia a la sincrona de los relojes, sin embargo la transmisin ser ms
lenta.
d. Paridad: Es una forma sencilla de verificar si hay errores en la transmisin serial. Existen cuatro
tipos de paridad: par, impar, marcada y espaciada. La opcin de no usar paridad alguna tambin est
disponible. Para paridad par e impar, el puerto serial fijar el bit de paridad (el ltimo bit despus de
los bits de datos) a un valor para asegurarse que la transmisin tenga un nmero par o impar de bits
en estado alto lgico. Por ejemplo, si la informacin a transmitir es 011 y la paridad es par, el bit de
paridad sera 0 para mantener el nmero de bits en estado alto lgico como par. Si la paridad
seleccionada fuera impar, entonces el bit de paridad sera 1, para tener 3 bits en estado alto lgico.
La paridad marcada y espaciada en realidad no verifican el estado de los bits de datos; simplemente
fija el bit de paridad en estado lgico alto para la marcada, y en estado lgico bajo para la espaciada.
Esto permite al dispositivo receptor conocer de antemano el estado de un bit, lo que servira para
determinar si hay ruido que est afectando de manera negativa la transmisin de los datos, o si los
relojes de los dispositivos no estn sincronizados.

e. Puerto serie
f. Vase tambin: Universal Serial Bus, FireWire y Serial ATA

g.
h. Puerto serie.

i.
j. ConectorMini-DIN8 macho que se usaba para conectar por el puerto serie a las
computadoras Macintosh.
k. Un puerto serie o puerto en serie es una interfaz de comunicaciones de datos
digitales, frecuentemente utilizado por computadoras y perifricos, donde la
informacin es transmitida bit a bit, enviando un solo bit a la vez; en contraste con
el puerto paralelo que enva varios bits simultneamente.1
l. La comparacin entre la transmisin en serie y en paralelo se puede explicar usando
una analoga con las carreteras: una carretera tradicional de un nico carril (en una
carretera de ida y vuelta) por cada sentido corresponde a la transmisin en serie, y
una carretera autova con varios carriles por sentido corresponde a la transmisin en
paralelo, siendo los vehculos los bits que circulan por el cable.

ntroduccin al USB
El USB (Bus de serie universal), como su nombre lo sugiere, se basa en una arquitectura de
tipo serial. Sin embargo, es una interfaz de entrada/salida mucho ms rpida que los puertos
serialesestndar. La arquitectura serial se utiliz para este tipo de puerto por dos razones
principales:
La arquitectura serial le brinda al usuario una velocidad de reloj mucho ms alta que la
interfaz paralela debido a que este tipo de interfaz no admite frecuencias demasiado altas
(en la arquitectura de alta velocidad, los bits que circulan por cada hilo llegan con retraso y
esto produce errores);
Los cables seriales resultan mucho ms econmicos que los cables paralelos.

Estndares USB
A partir de 1995, el estndar USB se ha desarrollado para la conexin de una amplia gama de
dispositivos.

El estndar USB 1.0 ofrece dos modos de comunicacin:


12 Mb/s en modo de alta velocidad,
1,5 Mb/s de baja velocidad.
El estndar USB 1.1 brinda varias aclaraciones para los fabricantes de dispositivos USB, pero
no cambia los rasgos de velocidad. Los dispositivos certificados por el estndar USB 1.1
llevan el siguiente logotipo:

El estndar USB 2.0 permite alcanzar velocidades de hasta 480 Mbit/s. Los dispositivos
certificados por el estndar USB 2.0 llevan el siguiente logotipo:

Si no lleva ningn logotipo, la mejor manera de determinar si un dispositivo es de USB de alta


o baja velocidad es consultar la documentacin del producto, siempre y cuando los conectores
sean los mismos.

La compatibilidad entre USB 1.0, 1.1 y 2.0 est garantizada. Sin embargo, el uso de un
dispositivo USB 2.0 en un puerto USB de baja velocidad (es decir 1.0 1.1) limitar la
velocidad a un mximo de 12 Mbit/s. Adems, es probable que el sistema operativo muestre
un mensaje que indique que la velocidad ser restringida.

Tipos de conectores
Existen dos tipos de conectores USB:
Los conectores conocidos como tipo A, cuya forma es rectangular y se utilizan,
generalmente, para dispositivos que no requieren demasiado ancho de banda (como el
teclado, el ratn, las cmaras Web, etc.);
Los conectores conocidos como tipo B poseen una forma cuadrada y se utilizan
principalmente para dispositivos de alta velocidad (discos duros externos, etc.).
1. Fuente de alimentacin de +5 V (VBUS) mximo 100 mA
2. Datos (D-)
3. Datos (D+)
4. Conexin a tierra (GND)

Funcionamiento del USB


Una caracterstica de la arquitectura USB es que puede proporcionar fuente de alimentacin a
los dispositivos con los que se conecta, con un lmite mximo de 15 V por dispositivo. Para
poder hacerlo, utiliza un cable que consta de cuatro hilos (la conexin a tierra GND, la
alimentacin del BUS y dos hilos de datos llamados D- y D+).

El estndar USB permite que los dispositivos se encadenen mediante el uso de una topologa
en bus o de estrella. Por lo tanto, los dispositivos pueden conectarse entre ellos tanto en forma
de cadena como en forma ramificada.
La ramificacin se realiza mediante el uso de cajas llamadas "concentradores" que constan
de una sola entrada y varias salidas. Algunos son activos (es decir, suministran energa) y
otros pasivos (la energa es suministrada por el ordenador).

La comunicacin entre el host (equipo) y los dispositivos se lleva a cabo segn


un protocolo(lenguaje de comunicacin) basado en el principio de red en anillo. Esto significa
que el ancho de banda se comparte temporalmente entre todos los dispositivos conectados. El
host (equipo) emite una seal para comenzar la secuencia cada un milisegundo (ms), el
intervalo de tiempo durante el cual le ofrecer simultneamente a cada dispositivo la
oportunidad de "hablar". Cuando el host desea comunicarse con un dispositivo, transmite una
red (un paquete de datos que contiene la direccin del dispositivo cifrada en 7 bits) que
designa un dispositivo, de manera tal que es el host el que decide "hablar" con los
dispositivos. Si el dispositivo reconoce su direccin en la red, enva un paquete de datos (entre
8 y 255 bytes) como respuesta. De lo contrario, le pasa el paquete a los otros dispositivos
conectados. Los datos que se intercambian de esta manera estn cifrados conforme a la
codificacin NRZI.

Como la direccin est cifrada en 7 bits, 128 dispositivos (2^7) pueden estar conectados
simultneamente a un puerto de este tipo. En realidad, es recomendable reducir esta cantidad
a 127 porque la direccin 0 es una direccin reservada. (consultar ms adelante).

Debido a la longitud mxima de 5 metros del cable entre los dos dispositivos y a la cantidad
mxima de 5 concentradores (a los que se les suministra energa), es posible crear una
cadena de 25 metros de longitud.

Los puertos USB admiten dispositivos Plug and play de conexin en caliente. Por lo tanto,
los dispositivos pueden conectarse sin apagar el equipo (conexin en caliente). Cuando un
dispositivo est conectado al host, detecta cuando se est agregando un nuevo elemento
gracias a un cambio de tensin entre los hilos D+ y D-. En ese momento, el equipo enva una
seal de inicializacin al dispositivo durante 10 ms para despus suministrarle la corriente
elctrica mediante los hilos GND y VBUS (hasta 100 mA). A continuacin, se le suministra
corriente elctrica al dispositivo y temporalmente se apodera de la direccin predeterminada
(direccin 0). La siguiente etapa consiste en brindarle la direccin definitiva (ste es el
procedimiento de lista). Para hacerlo, el equipo interroga a los dispositivos ya conectados para
poder conocer sus direcciones y asigna una nueva, que lo identifica por retorno. Una vez que
cuenta con todos los requisitos necesarios, el host puede cargar el driver adecuado.

USART PIC, viene de receptor transmisor sncrono asncrono universal, es una


forma de comunicacin 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 comunicacin serial, en esta seccin se
comentar sobre este tipo de comunicacin utilizando el mdulo USART del
microcontrolador PIC, con el mdulo USART PIC el microcontrolador puede
comunicarse e intercambiar datos con el ordenador, con otros microcontroladores,
etc

i la comunicacin USART PIC es asncrona, uno de los hilos ser para la


transmisin de los datos de un dispositivo a otro y el otro hilo ser para la
recepcin de datos entre un dispositivo a otro, la transmisin y la recepcin
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
transmitirn entre ambos dispositivos.
Si la comunicacin USART PIC es sncrona, uno de los hilos ser utilizado
tanto para la transmisin y la recepcin de datos por lo que la transmisin no
puede ocurrir en forma simultanea, el otro hilo ser utilizado para enviar la seal
de reloj de sincronizacin entre ambos dispositivos, en este caso uno de los
dispositivos es llamado maestro y el otro esclavo, el maestro es el que controla la
seal de reloj y cuando se inicia o finaliza la comunicacin.

El microcontrolador PIC
utilizado como modelo ser el PIC16F877A, los pines de este microcontrolador
que trabajan con el mdulo USART PIC son el pin RX o pin receptor y el pin TX
o pin transmisor, los que en la imagen estn resaltados resaltados.
El pin RX es el pin para la recepcin de datos y tendr que ser configurado como
una entrada digital.
El pin TX es el pin para la transmisin 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 tambin tienen que estar conectados entres si.
Los niveles de tensin con los que trabajan los pines del mdulo USART PIC son de
0V y 5V un bajo ser 0V mientras que un alto ser 5V, por eso cuando la
comunicacin es entre microcontroladores la conexin entre pines se puede hacer
directamente, pero cuando la comunicacin es entre el microcontrolador y un
ordenador la conexin entre pines tiene que hacerse a travs de un conversor de
nivel como el MAX232, ya que los niveles de tensin para la comunicacin serial
del ordenador son mayores que para el PIC tpicamente entre -12V y 12V, adems
de trabajar con lgica negativa, esto es para el ordenador un bajo ser 12V
mientras un alto ser -12V.

Hay otra manera de conectar el PIC con el ordenador para la comunicacin 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 comunicacin serial


es del tipo DB9 y se conoce como puerto serie, pero resulta que este tipo de
puerto ya no viene en los ordenadores porttiles que son los que hoy en da la
mayora utiliza, lo que traen ahora son puertos USB, por lo que para realizar la
comunicacin serial con el mdulo USART PIC ser necesario la utilizacin de un
conversor SERIE-USB como el que se muestra en la siguiente imagen.
El conector
DB9 es el que se utiliza para la comunicacin serial con el mdulo USART PIC, este
conector consta de de 9 pines, los hay hembra y macho, de este conector solo se
utilizarn 3 pines, uno para el pin RX, otro para el pin TX y el otro para el tierra,
estos pines tiene una numeracin 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 travs 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 mdulo 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 travs 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 travs 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 comn del conector DB9 macho que viene
del ordenador, se conectar al pin Vss del microcontrolador.

Las conexiones del mdulo USART PIC con el ordenador a travs de la compuerta
inversora y las resistencias, con el uso del conversor serie-USB ser como se
indica en la siguiente imagen.

USART PIC PROGRAMACIN


Para programar el mdulo USART PIC en el PIC16F877A, se utilizan los
siguientes registros: el registro TXSTA, el registro RCSTA, el registro SPBRG, el
registro TXREG, el registro RXREG, y si se utilizan interrupciones USART
PIC los registros PIE1 y PIR1.
El registro TXSTA es el registro de control de la transmisin de datos.

El bit7 CSRC es til cuando se utiliza la comunicacin serial sncrona, mediante


este bit se elige la fuente de reloj esto es quien de los dispositivos ser el maestro,
en la comunicacin serial asncrona este bit no tiene efecto.
El bit6 TX9 Es para elegir si la transmisin de datos ser a 9 bits o a 8 bits, si
este bit se pone a 1 la transmisin ser a 9 bits y se este bit se pone a 0 la
transmisin ser a 8 bits.
El bit5 TXEN Este es el bit que habilita la transmisin de datos, al ponerlo a 1 se
habilita la transmisin de datos y si se lo pone a 0 la transmisin de datos estar
deshabilitada.
El bit4 SYNC Con este bit se elige el tipo de comunicacin serial a utilizar con el
mdulo USART PIC, al ponerlo a 1 la comunicacin serial ser sncrona y al ponerlo
a 0 la comunicacin ser asncrona.
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 enviarn por segundo en el modo asncrono, 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
transmisin de datos, trabaja automticamente, 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 transmisin de
datos.
El Registro RCSTA Es el registro de control de la recepcin de datos.

El bit7 SPEN Este bit es que permite la habilitacin del uso del mdulo USART
PIC, si se pone a 1 se habilita el uso del mdulo USART PIC, si se pone a 0 no es
posible utilizar el mdulo USART PIC.
El bit6 RX9 Es para elegir si la recepcin de datos ser a 9 bits o a 8 bits, si este
bit se pone a 1 la recepcin ser a 9 bits y se este bit se pone a 0 la recepcin ser
a 8 bits.
El bit5 SREN Este es el bit se utiliza en el modo sncrono para habilitar la
recepcin sncrona, en el modo asncrono no es utilizado.
El bit4 CREN Con este bit se habilita la recepcin continua de datos al ponerlo a
1, si se pone a 0 la recepcin continua de datos est deshabilitada.
El bit3 ADDEN Es utilizado en el modo asncrono si la recepcin de datos es de 9
bits. Si la recepcin de datos es a 8 bits no es utilizado

El bit2 FERR Este bit trabaja automticamente si se pone a 1 es que se ha


recibido un dato no vlido.
El bit1 OERR Este bit trabaja automticamente y se pondr a 1 si se ha
producido un error por sobreescritura del dato recibido.
El bit 0 RX9D Este bit ser el noveno bit se se utilizan 9 bits en la recepcin de
datos.
El registro SPBRG Es el registro donde se debe cargar el valor con el que se elige
la velocidad de transmisin de los datos, esto es los baudios o la cantidad de bits
por segundo que se enviarn en la comunicacin serial con el mdulo USART PIC,
trabaja junto con el bit BRGH del registro TXSTA.
El valor a cargar en el registro SPBFG se calcula con las siguientes frmulas que
dependern de la velocidad elegida con el bit BRGH, de la frecuencia del oscilador
utilizado y de si la comunicacin ser sncrona o asncrona.

Los ejemplos que se harn sern para la transmisin asncrona a alta velocidad por
lo que la frmula que se utilizar ser:
Velocidad en baudios=Fosc/(16*(SPBRG+1))
Es importante recordar que la velocidad en baudios de los dispositivos que se
estn comunicando tienen que ser iguales, la mas comn es la de 9600 baudios, si
en la frmula anterior se reemplaza y se despeja se tendr:
SPBRG=(Fosc/(16*9600))-1
de donde:
SPBRG=(Fosc/153600)-1
Por ejemplo si el oscilador es de 4MHz se tendr

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.
Hay un cuadro en la hoja de datos donde se tienen algunos valores a cargar en
este registro para el modo sncrono y asncrono 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 comunicacin serial con el mdulo USART PIC.
El registro RCREG Es el registro donde se debe leer al recibir algn dato en la
comunicacin serial con el mdulo USART PIC.
El registro PIE1 Al poner el bit4 de este registro a 1 se habilita el uso de
interrupciones por la finalizacin de la transmisin del dato y al poner el bit5 de
este registro a 1 se habilita el uso de las interrupciones por la finalizacin de la
recepcin del dato.
El registro PIR1 El bit bit4 de este registro se pondr a 1 cuando se ha
terminado la transmisin del dato, luego se pondr automticamente a 0, si esta
habilitada la interrupcin por finalizacin de la transmisin del dato este bit ser el
que indica que ha ocurrido la interrupcin. El bit5 de este registro se pondr a 1
cuando se ha terminado la recepcin del dato, luego se pondr automticamente a
0, si esta habilitada la interrupcin por finalizacin de la recepcin del dato este bit
ser el que indica que ha ocurrido la interrupcin.
USART PIC PROGRAMACIN en el
XC8
Para la programacin del mdulo USART PIC se utilizar el XC8, ya que este
permite trabajar directamente con los registros y esto es de gran ayuda para
conocer mucho mas sobre el manejo de los microcontroladores PIC, en este caso
se comentar como se puede proceder para utilizar el mdulo USART PIC del
PIC16F877A, lo aqu comentado es muy similar para otros microcontroladores PIC
Para iniciar el mdulo USART PIC.
Los pines del PIC116F877A para el manejo del mdulo USART PIC son el pin RC7
para la recepcin de datos por lo que en este caso se le llama pin RX, y el pin RC6
para la transmisin 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:
TRISCbits.TRISC7=1;//pin RX como una entrada digital
TRISCbits.TRISC6=0;//pin RX como una salida digital
Configuracin del registro TXSTA para el control de la transmisin de datos, en
este caso se har para que la transmisin sea a 8 bits en forma asncrona de alta
velocidad por lo que:
El bit7 en modo asncrono no se usa por lo que se pondr a 0.
El bit6 se pondr a 0 para que la transmisin sea a 8 bits.
El bit5 se pondr a 1 para que est habilitada la transmisin de datos.
El bit4 se pondr a 0 porque la transmisin ser asncrona.
El bit3 no se utiliza por lo que se lo pondr a 0.

El bit2 se pondr a 1 para que el mdulo USART PIC trabaje a alta velocidad.
El bit1 es un bit de estado trabaja automticamente e indica cuando el registro
donde se coloca el dato a transmitir est lleno o vaco, se lo puede poner a 1 o a 0
para iniciar, en este caso se lo pondr a 1 porque se est iniciando y tendra que
estar vaco.
El bit0 no se utiliza porque es el bit de paridad cuando se utiliza la transmisin de
9 bits pero como se utilizar la transmisin a 8 bits no influye y se lo pondr a 0.
Luego en la inicializacin del mdulo USART PIC el registro TXSTA en el XC8
quedar as:
TXSTA=0b00100110;// 8bits, transmisin habilitada, asncrono, alta velocidad
Configuracin del registro RCSTA para el control de la recepcin de datos, en
este caso se har para que la recepcin sea a 8 bits en forma asncrona de alta
velocidad por lo que:
El bit7 se pondr a 1 para habilitar el uso del mdulo USART PIC.

El bit6 se pondr a 0 para que la recepcin sea a 8 bits.


El bit5 se pone a 0 porque no se usa en la comunicacin asncrona.
El bit4 se pone a 1 para habilitar la recepcin de datos.
El bit3 se pone a 0 porque la recepcin ser a 8 bit.
El bit2 este bit trabaja automticamente cuando se pone a 1 indica que se ha
recibido un dato no vlido.
El bit1 este bit trabaja automticamente cuando se pone a 1 indica que se ha
producido un error por sobreescritura de algn dato recibido.
El bit0 no se utiliza porque es el bit de paridad cuando se utiliza la recepcin de 9
bits pero como se utilizar la recepcin a 8 bits no influye y se lo pondr a 0.
Luego en la inicializacin del mdulo USART PIC el registro RCSTA en el XC8
quedar as:
RCSTA=0b10010000;//habilitado el USART PIC, recepcin 8 bits, habilitada,
asncrono
Carga del registro SPBRG para los baudios o la cantidad de bits por segundo
para la comunicacin serial, como ser a alta velocidad por lo que el bit BRGH del
registro TXSTA se puso a 1 y en forma asncrona, se utilizar la frmula.
Velocidad en baudios=baudios=Fosc/(16*(SPBRG+1))
Al despejar se tendr
SPBRG=(Fosc/(16*baudios))-1
En los ejemplos que se harn 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:
SPBRG=25;//para una velocidad de 9600baudios con un oscilador de 4Mhz
Entonces se puede iniciar el mdulo USART PIC en el XC8 de la siguiente manera:

1 ///////////////////////////////////////////////

2 //inicializacin del mdulo USART PIC en el XC8 modo asncrono, a 8bits,

3 //a 9600 baudios

4 TRISCbits.TRISC7=1;//pin RX como una entrada digital


5 TRISCbits.TRISC6=0;//pin TX como una salida digital

6 TXSTA=0b00100110;// 8bits, transmisin habilitada, asncrono, alta velocidad

7 RCSTA=0b10010000;//habilitado el USART PIC, recepcin 8 bits,

8 //habilitada, asncrono

9 SPBRG=25;//para una velocidad de 9600baudios con un oscilador de 4Mhz

La inicializacin podra hacerse dentro de una funcin 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:

1 ///////////////////////////////////////////////

2 //inicializacin del mdulo USART PIC modo asncrono

3 //en una funcin, a 8bits,a 9600 baudios

4 /////////////////////////////////////////////////////

5 void iniciar_usart(){

6 TRISCbits.TRISC7=1;//pin RX como una entrada digital

7 TRISCbits.TRISC6=0;//pin RX como una salida digital

8 TXSTA=0b00100110;// 8bits, transmisin habilitada, asncrono, alta velocidad

9 RCSTA=0b10010000;//habilitado el USART PIC, recepcin 8 bits, habilitada, asncrono

10 SPBRG=25;//para una velocidad de 9600baudios con un oscilador de 4Mhz

11 }

Para la recepcin de datos con el mdulo USART PIC.


Los datos que se reciben son de tipo caracter, cuando se va recibir un dato a
travs del pin RX se tendr que esperar a que el bit5 del registro PIR1 se ponga a
1, este bit indica que se ha completado la recepcin del dato, el dato recibido es
de tipo caracter char y estar en el registro RCREG, cuando se lee el dato
guardndolo en alguna variable de tipo caracter char este bit se pondr
automticamente a 0, la recepcin de los datos en el XC8 se har en una funcin a
la que se le puede llamar como se desee, en este caso se le
llamar recibe_caracter_usart().
1 ///////////////////////////////////////////////

2 //recepcin de datos del mdulo USART PIC modo asncrono

3 ////////////////////////////////////////////////////////////

4 unsigned char recibe_caracter_usart(){

5 if(PIR1bits.RCIF==1){//si el bit5 del registro PIR1 se ha puesto a 1

6 return RCREG;//devuelve el dato almacenado en el registro RCREG

7 }

8 else//sino

9 return;//retorna sin hacer nada

10 }

Para la transmisin de datos con el mdulo USART PIC.


Los datos que se transmiten son de tipo caracter, cuando se va transmitir un dato
a travs del pin TX se tendr que esperar a que el registro TSR donde se ponen los
datos que se van a enviar est vaco, esto se hace esperando a que el bit1 TRMT
del registro TXSTA se ponga a 1, este bit indica que se ha completado la
transmisin de un dato anterior mientras el dato que est en espera se coloca en
el registro TXREG, cuando se vace el registro TSR se podr enviar el otro dato que
est esperando en el registro TXREG pasndolo en forma automtica 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 automticamente a 0, la
transmisin de los datos en el XC8 se har en una funcin a la que se le puede
llamar como se desee, en este caso se le llamar envia_caracter_usart().

1 ///////////////////////////////////////////////

2 //transmisin de datos del mdulo USART PIC modo asncrono

3 ///////////////////////////////////////////////

4 void envia_caracter_usart(unsigned char caracter){

5 while(TXSTAbits.TRMT==0);// mientras el registro TSR est lleno espera


6 TXREG = caracter;//cuando el el registro TSR est vacio se envia el caracter

7}

Para la transmisin de cadenas de caracteres con el mdulo USART PIC se


puede utilizar la funcin vista anteriormente para la transmisin de caracteres para
enviar cadenas de caracteres, para ello se crear otra funcin que se puede
llamar como se desee pero en este caso se le llamar envia_cadena_usart().

1 ///////////////////////////////////////////////

2 //transmisin de cadenas de caracteres con el mdulo USART PIC modo asncrono

3 ///////////////////////////////////////////////

4 void envia_cadena_usart(char* cadena){//cadena de caracteres de tipo char

5 while(*cadena !=0x00){//mientras el ltimo valor de la cadena sea diferente

6 //de el caracter nulo

7 envia_caracter_usart(*cadena);//transmite los caracteres de cadena

8 cadena++;//incrementa la ubicacin de los caracteres en cadena

9 //para enviar el siguiente caracter de cadena

10 }

11 }

ARCHIVO DE CABECERA PARA EL


USO DEL MDULO USART PIC EN EL
XC8
Se puede agrupar todas la funciones vistas anteriormente para el uso del mdulo
USART PIC en el XC8 en forma asncrona, 8 bits y a 9600 baudios en un archivo de
cabecera al que se le llamar en este caso usart.h, aunque se le puede dar el
nombre que se desee, se har uso de este archivo de cabecera en los ejemplos
que se realizarn con el PIC16F877A, si se utiliza otro pic u otra velocidad de
comunicacin es fcil hacer los cambios que se necesiten dentro del archivo
usart.h, se ver algn ejemplo.

C
1 ////////////////////////////////////////////////////////////////////

2 ////////////////////////////////////////////////////////////////////

3 //Archivo de cabecera para el uso del mdulo USART PIC con el XC8///

4 ///////////////////////////////////////////////////////////////////

6 #ifndef USART_H

7 #define USART_H

9 void iniciar_usart();//funcin para iniciar el USART PIC asncron, 8 bits, 9600 baudios

10 unsigned char recibe_caracter_usart();//funcin para la recepcin de caracteres

11 void envia_caracter_usart(unsigned char);//funcin para la transmisin de caracteres

12 void envia_cadena_usart(char*);//funcin para la transmisin de cadenas de caracteres

13

14 ///////////////////////////////////////////////

15 //inicializacin del mdulo USART PIC modo asncrono

16 //en una funcin, a 8bits,a 9600 baudios

17 /////////////////////////////////////////////////////

18 void iniciar_usart(){

19 TRISCbits.TRISC7=1;//pin RX como una entrada digital

20 TRISCbits.TRISC6=0;//pin TX como una salida digital

21 TXSTA=0b00100110;// 8bits, transmisin habilitada, asncrono, alta velocidad

22 RCSTA=0b10010000;//habilitado el USART PIC, recepcin 8 bits, habilitada, asncrono

23 SPBRG=25;//para una velocidad de 9600baudios con un oscilador de 4Mhz

24 }

25

26 ///////////////////////////////////////////////

27 //recepcin de datos del mdulo USART PIC modo asncrono


28 ////////////////////////////////////////////////////////////

29 unsigned char recibe_caracter_usart(){

30 if(PIR1bits.RCIF==1){//si el bit5 del registro PIR1 se ha puesto a 1

31 return RCREG;//devuelve el dato almacenado en el registro RCREG

32 }

33 else//sino

34 return;//retorna sin hacer nada

35 }

36

37 ///////////////////////////////////////////////

38 //transmisin de datos del mdulo USART PIC modo asncrono

39 ///////////////////////////////////////////////

40 void envia_caracter_usart(unsigned char caracter){

41 while(TXSTAbits.TRMT==0);// mientras el registro TSR est lleno espera

42 TXREG = caracter;//cuando el el registro TSR est vacio se envia el caracter

43 }

44

45

46 ///////////////////////////////////////////////

47 //transmisin de cadenas de caracteres con el mdulo USART PIC modo asncrono

48 ///////////////////////////////////////////////

49 void envia_cadena_usart(char* cadena){//cadena de caracteres de tipo char

50 while(*cadena !=0x00){//mientras el ltimo valor de la cadena sea diferente

51 //de el caracter nulo

52 envia_caracter_usart(*cadena);//transmite los caracteres de cadena

53 cadena++;//incrementa la ubicacin de los caracteres en cadena

54 //para enviar el siguiente caracter de cadena

55 }

56 }

57

58 #endif /* USART_H */
conclusion

Actualmente, la tecnologa esta en constante avance debido a las nuevas necesidades que se le
presenta a los usuarios, y esto hace que se creen nuevos programas, mas fciles de usar y mas eficientes y
dispositivos que respondan a los programas nuevos. Los puertos son una parte esencial de la computadora ya
que sin ellos no se dara el intercambio de datos o informacin entre una computadora y sus perifricos o
entre una computadora y otra.
Los puertos mas usados para las conexiones telefnicas son el rj11 y rj45 y estos son mas usados en Espaa
y en Alemania respectivamente.
Los puertos RCA se utilizan para seales de audio y video independiente porque cada uno manda una seal y
actualmente no son muy usados en la computadora. el ps/2 es una forma de conectar dispositivos externos
especialmente pensado para el Mouse y para el teclado. El USB es una interfase entre la PC y ciertos
dispositivos tales como teclado, Mouse, cmaras y impresoras, el PARALELO lo usan las impresoras, el
SERIAL es un interfaz de comunicaciones entre ordenadores y perifricos y el VGA es el cable que lleva la
seal de video del PC al monitor.

Вам также может понравиться