You are on page 1of 3

Aplicaciones de up y uC Laboratorio #6 Comunicacin Bsica RS232

Prof.: P. Muoz, A. Navarro


Preparado Por: Juan Ignacio Huircn

Objetivos
1 Armar el circuito bsico para verificar el funcionamiento de la comunicacin serial 1 Probar programas bsicos de Transmisin 1 Probar Programas Bsicos de Recepcin

Actividades
1.- Realizar el montaje del circuito siguiente:

5V 5V 1K Reset 20 1uF + 1 1 16

5V

1uF

+
2 6 1uF

3 1uF

5 2 18 16F873A 9 22pF XTAL -20MHz 10 22pF 8 19 17 TX 9 RX 12

Max232
13 8

+
Viene del pin de TX de DB9 Va al pin de RX del DB9

11 10 15

14 7

2.- Programacin del USART.


Para programar mdulo USART del uC, se requiere la Configuracin de los siguientes registros. 1 TRISC 1 TXSTA 1 RCSTA 1 SPBRG El acceso a los datos a TX o RX ser mediante los registros TXREG y TCREG y los flags TXIF y RCIF. 1 El registro TRISC, permite definir como entrada el bit de RX y como Salida el bit de TX. (PORTC.7 y PORTC.6). 1 El Registro TXSTA, Configura el mdulo de TX. 1 El registro RCSTA el de recepcin, sin embargo el RCSTA.7 =SPEN (Serial Port Enable) se debe configurar para la TX. Para evaluar la aplicacin siguiente conecte el circuito implementado al puerto COM del PC. Ejecute la aplicacin Hyperterminal, y configrela con 1200, 8, n, 1. Haga un reset en el uC y recibir el mensaje HOLA. Si existe alguna duda de programacin se sugiere revisar el datasheet del uC 16F873A

2.- Programa de comunicacin bsica. Se ha separado el cdigo y se implementa una funcin enviar(char c). Esta funcin recibe como argumento el carcter c, el cual es transmitido. La funcin es llamada por el main(). La Programacin est ms simplificada.
void enviar(char c) { while(TXIF==0) // Verifica que haya tx { } TXREG=c; } void main() { TRISC.7=1; // habilita El bit para rx TRISC.6=0; // Habilita El bit para tx TXSTA=0b00100000; // Ver registro RCSTA.7=1; // SPEN=1; SPBRG=0xFF; // De acuerdo a la tabla del manual while(1) { enviar('H'); enviar('O'); enviar('L'); enviar('A'); enviar(0x0d); enviar(0x0A); // Puede poner una funcin para retardo } }

3. Programa para RX un carcter.


Este programa recibe desde el PC un carcter y lo re-enva de vuelta el mensaje DATO : y el carcter enviado desde el PC. Se programa el registro RCSTA.
void enviar(char c) { while(TXIF==0) // Verifica que haya tx { } TXREG=c; } void main() { char dato; TRISC.7=1; // habilita para rx TRISC.6=0; // Habilita para tx TXSTA=0b00100000; RCSTA=0b10010000;// SPEN=1; SPBRG=0xFF; // De acuerdo a la tabla del manual while(1) { // Si RCIF==0 todavia no ha recibido // Permanecer en el LOOP hasta que RCIF=1 while(RCIF==0) { } dato=RCREG; // se traspasa el dato recibido enviar('D'); enviar('A'); enviar('T'); enviar('O'); enviar(' '); enviar(':'); enviar(dato); enviar(0x0d); enviar(0x0a); } }

5.- Enviando y recibiendo datos Se modifica el programa anterior y se define una funcin char recibe(). Esta devuelve el carcter recibido del puerto.
void enviar(char c) { while(TXIF==0) // Verifica que haya tx { } TXREG=c; } char recibe() { char c; while(RCIF==0) { } c=RCREG; return( c); } void main() { char dato; TRISC.7=1; // habilita para TX TRISC.6=0; // Habilita para RX TXSTA=0b00100000; RCSTA=0b10010000;// SPEN=1; SPBRG=0xFF; // De acuerdo a la tabla del manual while(1) { dato=recibe(); enviar('D'); enviar('A'); enviar('T'); enviar('O'); enviar(' '); enviar(':'); enviar(dato); enviar(0x0d); enviar(0x0a); } }

You might also like