# pic 16f877A comunicacion serial



## hockenhaim (Abr 4, 2007)

hola soy nuevo, soy estudiante de ing electronica y debo presentar un proyecto asi: dos pics 16f877a con comunicacion serial el primer pic debe tener 4 variables de ADC, el segundo pic tiene un teclado matricial el cual selecciona una de las variables del primer pic y esto debe ser mostrado en el lcd conectado al segundo pic. esto debe ser configurado mediante la usart mi problema es que no se como diseñar los programas para cada uno de los pics seria de gran ayuda si alguien sabe de algun link o tenga un programa con estas caracteristicas, uso el mplab el compilador es el CC5X muchas gracias por su colaboracion.


----------



## ELCHAVO (Abr 6, 2007)

HOLA

En ingenieria Electronica, cuando se diseña, es mas facil hacerlo sin tratar de copiar que hacerlo uno solo realmente !!! creeme !


Por donde tienes empezar es no tratar de encontrarlo hecho en el internet, sino que puedes planear sobre papel cual de tus microcontroladores va a ser el maestro y cual el esclavo.

Tambien vas a escoger cual protocolo inventas tu mismo ! para darle la orden al otro micro que muestre o envie el valor de determinado canal analogo.

cuando ya tengas eso claro sobre papel, entonces inicias programando un micro y lo ensayas con el hyperterminal de tu PC, y simulas que tu puerto serial de tu PC es el otro micro !! y asi cuando le escribas y envias una determinada combinacion de numeros , entonces el otro micro te tiene que responder con otro codigo, acorde a lo que hayas planeado en tu protocolo.

una vez este respondiendo segun lo planeado, entonces programas el otro y lo ensayas con el PC por hyperterminal, cuando ya estes seguro que cada uno recibe y responde bien, entonces ahi si los pones a que charlen elllos dos .

disculpa una pregunta de que universidad eres y en q semestre estas ??? yo tambien soy de colombia , solo es por curiosidad. vas a controlar alguna variable ?

Espero te sirva lo que te escribi.


----------



## hockenhaim (Abr 6, 2007)

que bueno no se si podras regalarme tu msn o otro tipo de comunicacion lo que pasa es que no hemos aprendido lo del hyperterminal y tengo demasiadas dudas con lo que me estas respondiendo y estudio en la universidad cooperativa de colombia bogota.
gracias


----------



## RAM_G_JES (Abr 11, 2007)

yo tambien soy nuevo en este ramo de comunicación serial con PIC's; ya he realizado algunos proyectos con el PIC 16F877 y 877A, pero ahora que tengo que interactuar con la computadora y el puerto serial me enfrento a un nuevom problema.

Ya he intentado hacre puebas con un max 232; y ocurre algo extraño; y es que al conectar los pines del db 9 en los pines de entrada y salida de circuito; me realiza un especie de Loop(entre los pines 2 y 3 del DB9) , aun sin haber conectado el voltaje de la fuente (5V), he realizado varias pruebas y no he tenido exito. Otra cosa rara es que al conectar la tierra comun(pin 5  DB9 a -) (ya no hace el Loop); yningun tipo de comunicación.

La prueba que intento hacer es con un Boot loader que baje desde internet pero aun no puedo pasar al pic sin antes haber solucionado este problema.

Lo que intento hacer es "simple"; solo quiero enviar datos al PIC, que este los muestre por algun puerto cualquiera, y que los devuelva a la computadora.

Algun diagrama me serviria; de preferencia interconexión del max232 y el puerto serie(DB9)
Y al igualalgún codigo fuente para el PIC.

Por su ayuda gracias.


----------



## rockerita09 (Abr 11, 2007)

Hola!!

Tengo que hacer algo similar a la duda anterior

Resulta que debo hacer una interfaz con el computador en la cual yo envìe una direccion desde un PIC y el PC me arroje un dato. El dato que me envia el pc es una frase, por ejemplo, digito desde el pic mediante un teclado matricial (parte que ya tengo hecha) el código de un disco, y el pc me debe arrojar en nombre del mismo, así, si digito por ejemplo: 256, en esa dirección está ubicado "Nevermind, Nirvana), esa información debe ser arrojada al mircro y este debe mostrarlo en una pantalla LCD.

No he visto cómo hacer interfaces entre el PIC y el PC, así que me encuentro bastante confundida pues no sé como hacer que el pc me arroje el dato cuando yo se lo indique desde el PIC....

Cualquier guìa me puede ayudar demasiado...

Gracias.


----------



## RAM_G_JES (Abr 12, 2007)

Si te urge mucho; puedes intentar lo que quieres hacer con el puerto paralelo; que es mucho más sencillo, pero esta más limitado.
Puedes investigar acerca del puerto paralelo; y si te ineteresa usarlo; sí te puedo ayudar con este tema.

Por la necesidad de mi proyecto yo por mi parte; tengo que usar comunicación serial.


Y por lo que puedo ver tenemos un problema similar; así, que si encuentras a alguien que nos pueda ayudar con la comunicación serial lo agradeceré muchísimo.


----------



## ELCHAVO (Abr 12, 2007)

uds tiene que comenzar a entender el puerto serial, es decir lo que yo les recomendaria inicialmente es estudiar la interconexion de dos computadorsa entre si
ambos
conectados por el puerto serial (investiguen interconexion asincrona )

y programan los hyperterminales de cada computdora para ver que envia uno y que recibe el otro. uds pueden enviar facilmente datos , los escriben y van saliendo en la pantalla del otro computador en tiempo real es decir al mismo instanet que oprimen el numero 3 sale el 3 en la pantalla del otro.

cuando uds jueguen un buen rato y experimenten con eso van a poder seguir con el siguiente paso, antes, es dificil porque necesito que comprendan que existen datos ascii, binarios, hexadecimales, que se pueden enviar.


----------



## rockerita09 (Abr 12, 2007)

Sucede que si necesito el puerto serial... puesto que los pines del 16f877a ya estan bastante limitados en mi montaje, pues tengo conectada la LCD y el teclado matricial... igual, al parecer el complique no está tanto en sacar los datos desde el PC hasta mi PIC, sino lo contrario, del PIC al PC, nadie ha sabido como responder a esa inquietud y la verdad me encuentro bastante colgada de tiempo...


----------



## ELCHAVO (Abr 13, 2007)

es muy facil del pic hacia el pc, por ejemplo en visual basic utiliza la instruccion mscomm, configuras el puerto serial y listo.


----------



## RAM_G_JES (Abr 18, 2007)

"ElChavo" gracias por los consejos, la verdad es que no podiamos comenzar desde cero, por el tiempo limitado, pero nuestro proyecto se basa mas que nada en lograr la interaccion de un sistema informaciónrmatico con uno electronico, y pues como ya la mencioné, el tiempo nos obligo a presentarlo con el puerto serial, los resultados fueron buenisimos, pero el puerto paralelo no satisface todas nuestras necesidades y por tal motivo, seguiremos adelante con la comunicación serial, pero ahora comenzaremos desde cero, tomaremos en cuenta tus consejos y si nos encontramos con nuevos problemas, se los comunicaremos. 


"Rockerita09" pues con la parte electronica no te puedo ayudar, pero con la programación si. Por el momento no tengo la información que te puede servir, pero nosotros ya escribimos un programa en C para enviar datos del PIC al PC y viceversa, el problema que tenemos es que la comunicación no es la adecuada, ya que aunque el circuito sobre el que estaba montado el PIC estaba apagado, el puerto serie seguia recibiendo datos. Trataré de buscar el codigo que utilizamos como referencia y el codigo que desarrollamos, tan pronto encuentre la información la voy a adjuntar.

Tengo tambien el programa en Visual Basic (VB), y espero poder enviartelo, tambien espero tengas VB 6.0.

Como ya lo mencione, si logras la comunicación entre el PIC y PC te puedo ayudar a desarrollar el software en VB, en general todo lo que tenga que ver con programación en VB y en C, tepuedo ayudar un poco.


----------



## rockerita09 (Abr 19, 2007)

Pues les comento que al final, no pude presentar mi comunicación PIC-PC... mi profesor me había dicho que por ahora sólo hiciera una comunicación PIC-PC por medio de Hyperterminal, de tal manera que cuando tecleara un número en el teclado matricial, éste apareciera en la patalla del PC... por más que tratamos no fué posible, teníamos que hacerlo en discreto, no con el protocolo USART del PIC, y estaba bien programado, con su start y su stop bien hecho... pues lo probamos visualizando el dato con un retardo de 1 segundo, para verlo bien... pero al parecer no pudimos sincronizar de manera correcta los tiempos... aún si medíamos los 104 us exactos que se necesitan en el PIC para que el PC reciba a 9600 bps... no fué posible... el MAX232 estaba bien montado, todo perfecto, pero no funcionó...   

De todas maneras tengo que presentar lo que dije al principio, pero si me quedó grande esto... no me quiero imaginar cómo será el resto...

Igual agradezco demasiaaado su ayuda, espero me puedan seguir colaborando, sé que esto es más fácil para ustedes....


----------



## troyano42 (Ene 9, 2008)

chavos pongan ce a pensar en ves de copiar que hubiera sido de la humanidad si los grandes genios estuvieran esperando a copiar los conocimientos que nos heredaron no es por presumir pero yo tampoco conocia de microprocesadores especial mente en la comunicación serial entre pc y pic y ahora ya estoy haciendo mis primeras pruebas con éxito solo es cuestión se dedicación tengo 3 meses aprendiendo a programar en mi tiempo libre ya que trabajo en una compañía en el área de mantenimiento soy ing. electromecánico. suerte échenle ganas


----------



## u2okn (May 7, 2008)

Que tal hockenhaim. Para la programación de los pic's te recomiendo mucho la aplicación MicroCodeStudio, en donde trabajas en lenguaje PicBasic Pro. Esto te va a ser de mucha ayuda, ya que te reduce el´número de lineas de código, y hay muchas instrucciones predefinidas que te ayudan con la programación. Ejemplo: LCDOUT "hola". Esta instrucción te envía la cadena de caracteres "hola" a un lcd, que tu con unas cuantas línes de código configuras (número de líneas, puertos para utilizar rs, datos, etc.....). Te recomiendo tambien dos programas muy buenos para simular tus programas de los pics. El primero es el Picsimulator que puedes conseguir en su página como prueba de 30 días, te permite simular con bastas herramientas muchas cosas de variados tipos de pics (te incluye una simulaición de un LCD, etc....). El segundo programa es el proteus de Ares, que entre otras muchas herramientas, te permite simular programas (hex) de pics, armando un circuito como cualquier simulador convencional de circuitos. 
Espero y esto te sea de ayuda. Estudio Mecatrónica y ando en el asunto de los pics y la comunicación serial bien a raya. =)


----------



## comodinxp (Jul 22, 2008)

Si basicamente es importante crear la programacion a medida de las necesidades yo he realizados bastantes conexiones entre pc pic, pic16f877 programando con PICc y es bastante facil no se si alguna ve programaron con PIC C pero si no pedne intenatr por hay, lo que les recomiendo es generar codigo y probarlo con hiperterminal es la forma mas facil de saber que lo que se esta haciendo funciona o simularlo con proteus un buena herramienta... Ya cambiando d etema tengo una consultica tengo la siguinete situacion: voy a iniciar un proyecto donde una estacion metereologica se conecta a un pc mediante el puerto serial donde esta el software de adminsitracion de los datos, resulta que ellos quieren implementar una comunicacion inalambrica, inicialmente pense en comunicar dos pic mediante un modulo de comunicacion TLP434 y de los micros comunicarlos con max 232 tanto en la base como en el PC, pero me surge la siguiente duda, como conecto en un micro comunicacion serial max232 y modulo de comunicacion si ambos utilizan el puerto TX/RX y los micros que conozco solo tienen un modulo de etos.... grcaias por la ayuda o sugerencias de implementacion que me puedan brindar


----------



## ERCH07 (Jul 24, 2008)

Estudie Tecnico Electricista hace 22 años. Mis primeras pruebas para entender la comunicación serial fue con la hiperterminal uniendo los pins 2 y 3, lo que tecleas en tu PC se regresa y lo visualizas en pantalla.
Segundo paso escuchas la misma comunicación con un PIC conectando un CI RS232 por supuesto   en la union de los pins 2 y 3 que tenia.
Tercero agregar un LCD 2x16 caracteres o similar al PIC para visualizar lo tecleado en el PC.
Cuarto, Quinto, Sesto, Ect, Ect. Y pude comprender el funcionamiento.
*Para ser un buen Ingeniero hay que INGENIAR*


----------



## sangreaztk (Dic 7, 2008)

Hey!
Saludos Kamaradas!
Aqui solicitando su ayuda, resulta que quiero aprender a usar la comunicación serial con el PIC16F877, ya he investigado bastante, he leido el datasheet del PIC y ya he podido recibir datos del PC al PIC, pero no he podido enviar satisfactoriamente datos del PIC al PC. Estoy haciendo pruebas basicas para envia datos al PC, como el siguiente código el cual según yo envía el dato presente en PORTA al PC cada 1 segundo:


```
;---------------------------------------------
List P=16F877
#include<p16f877.inc>
__CONFIG	0X3F71

			org	    0x00
			goto       inicio
			org	    0x05
inicio:		      bsf	   STATUS,RP0
			movlw    0x06		    ; PORTA como entrada
			movwf    ADCON1		; digital
			clrf	      TRISB		; PORTB = 'ssss ssss'

			movlw	  0x0C		; BaudRate a 19200 (Fosc=4MHz)
			movwf	  SPBRG
			movlw	  0x24
			movwf	  TXSTA		; BRGH=1
			bcf	      STATUS,RP0
			bsf	      RCSTA,SPEN

enviar:		    movf	PORTA,W
			movwf	  TXREG
			call	       delay
			goto	    enviar

; Subrutina de tiempo de aproximadamente 1s
delay:		    movlw	0x255
			movwf	    0x20
carga:		    movlw	0x255
			movwf	    0x21
decre:		    nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			nop
			decfsz		0x20,F
			goto		decre
			decfsz		0x21,F
			goto		carga
			return

			end
```

Cuando pruebo el circuito con la hyperterminal (o MatLab) no funciona correctamente, solo me envía datos cada vez que oprimo el Reset, por lo que me da la impresión de que debo limpiar una bandera pero en el datasheet no encuentro nada de eso (sera porque mi nivel de ingles es muy bajo). Así que si alguien me puede echar un cable y revisara mi código y me dijera donde esta la falla se los agradecería mucho, o con alguna pista me conformo. Mientras seguiré buscando/experimentando!
Gracias por leer mi mensaje. Buena Vibra!


----------



## balamcin (Oct 22, 2009)

Soy nuevo en el foro y necesito de la ayuda posible que puedan darme. El problema es lo siguiente: necesito realizar la comunicación pic a pc, estoy manejando el pic 16f877a, sé que tiene un puerto para transmisión serial, que son los pines c7 para RX y c6 para TX, estoy programando en PIC C compiler y aparentemente no hay nada de difícil en la programación, de hecho uso una función llamada fprintf para sacar datos por el puerto, he configurado el puerto serial y le he puesto un "stream", le puse COM1, sin embargo cuando grabo el .HEX en el pic no sale lo que debería, este es mi código, no sé si hay algo mal con ello:

#include "C:\Documents and Settings\Luis Alberto\Mis documentos\Pic 16f877a\Ejemplo 1 Pic C\Ejemplo10.h"

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=COM1)

   // TODO: USER CODE!!  
   delay_ms(10);
   fprintf(COM1,"Instituto tecnologico de Tuxtla Gutierrez");
   delay_ms(50);
   fprintf(COM1,"Prueba de comunicación");
   delay_ms(50);
}

Había probado utilizando la función kbhit, la cual la tenía dentro de un if, y cuando recibiera la primera tecla, mandaba un mensaje, y ahí si funcionó pero el mensaje salía incompleto muchas veces, el código es el siguiente:

 while(1)
            {
                  if(kbhit(COM1))
                  {
                        fprintf(COM1,"Hola mundo");
                        delay_ms(1);
                  }
            }

aquí después de que presionaba una tecla, aparecía en el hyperterminal de windows la frase "hola mundo" muchas veces pero a veces la letra "a" no salía, y en su lugar salía otro caracter como "%". Por favor necesito saber que pasa, si hay algo más que deba de configurarse en el puerto serial o tiene que ver el "delay" que le pongo.


----------



## balamcin (Nov 13, 2009)

Me respondo a mi mismo, el detalle de los caracteres raros era que no usaba una misma tierra para los circuitos que estaba usando. Lo que pasa es que ya tenía hecha una tarjeta con un max232 y las conexiones necesarias para el serial de la PC, y tenía aparte en un protoboard el pic y todas las conexiones, pero no compartía la tierra que yo pasaba en el protoboard con la tierra que trae la pc, que es el pin 5 del db9. El código está bien, puedo simular otros puertos seriales y funciona de igual forma.


----------



## SDnet (Nov 27, 2009)

Hola, lo que pasa es que nunca sale de la rutina de delay porque se carga la posicion de memoria 0x21 forever. asi que debierashacer estos cambios:
-Donde dice:
; Subrutina de tiempo de aproximadamente 1s
delay:		    movlw	0x255
			movwf	    0x20
carga:		    movlw	0x255
			movwf	    0x21

cambiar por:
; Subrutina de tiempo de aproximadamente 1s
delay:		    movlw	0x255
			movwf	    0x21
carga:		    movlw	0x255
			movwf	    0x20

Espero te resulte saludos




sangreaztk dijo:


> Hey!
> Saludos Kamaradas!
> Aqui solicitando su ayuda, resulta que quiero aprender a usar la comunicación serial con el PIC16F877, ya he investigado bastante, he leido el datasheet del PIC y ya he podido recibir datos del PC al PIC, pero no he podido enviar satisfactoriamente datos del PIC al PC. Estoy haciendo pruebas basicas para envia datos al PC, como el siguiente código el cual según yo envía el dato presente en PORTA al PC cada 1 segundo:
> 
> ...


----------



## zoomg80 (Mar 4, 2010)

Private Sub MSComm1_OnComm()
Dim Com1 As Variant
Dim Contador_A As Integer
Dim Contador_B As Integer
Contador_A = 0
Contador_B = 0
If MSComm1.CommEvent = comEvReceive Then
Com1 = Com1 + MSComm1.Input
Text1.Text = Com1
Select Case Com1
Case "A"
     Contador_A = Contador_A + 1
     Label20.Caption = Contador_A

Case "B"
     Contador_B = Contador_B + uno
     Label21.Caption = Time
End Select
End If
End Sub

En el case B puedo ver la hora cada vez que el pic envia un caracter B, si se actualiza, pero cuando recibe "A" no he conseguido incrementar mi contdor y verlo en en label20. Alguin puede apoyarme

GRacias de antemano


----------



## marcelocr5 (Mar 7, 2010)

hola a todos....
por favor quisiera que me ayuden ....
estoy trabajando en un proyecto de comunicacion serial con matlab y el pic 16f628a, he probado en una computadora con el puerto serial de una pc de escritorio y funciona, ahora quiero utilizar mi lapto como no tiene ese puerto, compre un adaptador usb a serial, pero no logro estblecer la conexion , me podrían ayudar,........
mido los voltajes entre los pines del puerto el de tx y tierra y me da -6 voltios, y en la pc de escritorio si me da -12 voltios entre dichos pines, alguien me pudiera decir cual podría ser el problema


----------



## kiko007 (Mar 8, 2010)

Hola a todos:
  Alguien me podria aclarar una duda de la comunicacion serie en 8051 o cualquier PIC. El problema es que quisiera saber si cuando se ejecuta la instruccion MOV SBUF,#'A' por ejemplo, la comunicacion es independiente es decir paralela a la CPU del micro como tal, la CPU sigue con su programa y aparte de ella se ejecuta como si fuera un proceso independiente la comunicacion serie hasta la activacion de RI o TI.
Porque digo esto, es que me he topado con el siguiente codigo:
*MOV SBUF, #'A'
JNB TI,$
CLR TI*

y creo que no es el mas apropiado, sin embargo tengo este otro:
*org 023h
jmp serie


serie: JB RI, sal
        CLR TI
        RETI
sal: CLR RI
      RETI
*

y  es que en muchos libros me he topado con el primero, pero creo que tiene un problema y es que el se mantiene haciendo el lazo hasta que termine la transmision o recepcion y no utiliza el vector de interrupciones.
Cual de los dos es el mas conveniente para una practica real?

Hola marcelocr5
 Creo que debes adaptarlo con el CI o Driver max232 que es el que adpata un micro de 5V aproximadamente al 15-25V, busca informacion sobre este CI


----------



## m3mho (Abr 22, 2010)

Hola, alguien tiene algun buen manual para aprender comunicacion serial RS232 ??


----------



## Meta (Abr 23, 2010)

m3mho dijo:


> Hola, alguien tiene algun buen manual para aprender comunicacion serial RS232 ??



Algo hay. Mira este manual delpuerto serie RS232 y 16F84A.

http://www.abcdatos.com/tutoriales/tutorial/z9521.html

¿Te vale este?

Saludo.


----------



## ricarodkad (Oct 14, 2010)

Meta dijo:


> Algo hay. Mira este manual delpuerto serie RS232 y 16F84A.
> 
> http://www.abcdatos.com/tutoriales/tutorial/z9521.html
> 
> ...



escribeme a mi correo que tengo un manual muy completo mi correo es ricardo8_229@hotmail.com


----------



## Meta (Oct 14, 2010)

ricarodkad dijo:


> escribeme a mi correo que tengo un manual muy completo mi correo es ricardo8_229@hotmail.com



Lo puedes enviar a mi correo que puedes ver en el logo de mi blog. 
http://electronica-pic.blogspot.com/

Saludo.


----------



## spfiles (Sep 30, 2011)

hOLA BUENAS TARDES SE QUE ESTA PREGUNTA ES DE HACE UN PAR DE AÑOS PERO QUIERO RESPONDER PARA FUTURAS CONSULTAS DE OTROS COMPAÑEROS

PASOS A SEGUIR PARA HACER UNA TRANSMISION EN SERIE
´
1.-CONFIGURAR PIC
A) CONFIGURAR RC6/TX COMO SALIDA (TRANSMISOR SERIAL TX)
B) CONFIGURAR RC7/RX COMO ENTRADA (RECEPCION SERIAL RX)
C) CONFIGURAR PORTA COMO ENTRADA
D) CONFIGURAR PORTA COMO DIGITAL

2.- HABILITAR USART (PUERTO SERIAL) COMO ASINCRONO (SOLO ENVIAR Y RECIBIR DATOS)
A) SYNC=0  (MODO ASINCRONO)
B) SPEN=1  (HABILITAR PUERTO SERIE)

3.- SI SE USAN INTERRUPCION HABILITAR TXIE=1 Y HABILITAR GIE Y PEIE

4.- TX9=0 PARA UNA TRANSMISION DE 8 BITS

5.- VALORES ADECUADOS PARA VELOCIDAD DE TRANSMISION (BAUD RATE)
A) 19200 BPS
B) XTAL = 4 MHZ 
C) SPBRG= 12 (EN DECIMAL) o SPBRG=0C (EN HEXADECIMAL)
D) BRG = 1 (ALTA VELOCIDAD)

NOTA: SI NECESITAS SABER COMO CALCULAR ESTOS VALORES ESCRIBEME

6.- ACTIVAR LA TRANSMISION CON TXEN=1

7.- CARGAR EL VALOR A TRANSMITIR EN TXREG

8.- ESPERAR A QUE EL BUS SE TRANSMITIDO EN TSR
A) TRMT=1 (TSR VACIO)
B) TRMT=0 (TRS NO VACIO)

9) VOLVER A REPETIR LOS PASOS 7 Y 8


CODIGO:

INCLUDE "P16F877.INC"   ; LIBRERIA DE COMANDOS DE PIC16F877

              ORG 0X00                         ; ORIGEN VECTOR DE RESET
              GOTO INICIO                     ; SALTA A INCIO DE PROGRAMA
              ORG 0X20                         ; RESPETAR LAS PRIMERAS LOCALIDADES DE MEMORIA
INICIO:   BANKSEL TRISC                 ; SELECCION DEL BANCO DONDE ESTA TRISC
              BSF  TRISC, 7                   ; RX COMO ENTRADA
              BCF  TRISC, 6                   ; TX COMO SALIDA
              BANKSEL TRISA      
              MOVLW  0X1F
              MOVWF  TRISA                   ; PORTA COMO ENTRADA
              BANKSEL ADCON1             
              MOVLW 0X06                     ; PORTA COMO DIGITAL
              MOVWF  ADCON1
              BANKSEL SPBRG
              MOVLW  .12                       ; BAUD RATE 19200
              MOVWF   SPBRG
              BANKSEL TXSTA
              BCF   TXSTA, 6                   ; TRASMISION 8 BITS
              BCF   TXSTA, 4                   ; USART MODO ASINCRONO
              BSF   TXSTA, 2                   ; BRGH EN MODO ALTA VELOCIDAD
              BSF   TXSTA, 1                   ; HABILITA TRANSMISION SERIAL
              BANKSEL  RCSTA
              BSF   RCSTA, 7                   ; HABILITA USART (PUERTO SERIE)
ENVIAR:  BANKSEL PORTA
              MOVFW   PORTA                 ; LEE LO QUE TIENE EL PUERTO A
              BANKSEL TXREG
              MOVWF   TXREG                 ; TRANSMITE SERIE EL VALOR DEL PUERTO A
              BANKSEL PIR1
ESPERAR:BTFSS  PIR1, TXIF
              GOTO ESPERA                     ;ESPERA A QUE SE HAYA REALIZADO LA TRANSMISION
               .
               .                                      ; AQUI PODRIAS PONER DELAY ANTES DE
               .                                      ;  TRANSMITIR     NUEVAMENTE

              GOTO ENVIAR                    ; VUELVE A ENVIAR EL VALOR DEL PORTA

              END


----------



## MarioAmilcar (Jul 2, 2012)

Hola como estan?, ammm me quedó una duda... en que momento recibes los datos???


----------

