# PIC 16f877a utilizado con serial



## jodch (Feb 18, 2007)

hola que tal..........    
porfa necesito utilizar el pic 16f77A con lo que es programacion serial, pero mi duda es a que aplicacion lo haria???
estoy consiente que del pic tengo 2 pines de transmision de datos (RX ,TX) y este a su ves utilizar un circuito auxiliar em MAX232,y al la ves utilizaria el puerto serial (db9) sin embargo: eso solo es teÓrico no tengo un ejemplo para poder aplicarlo(circuito, materiales,INTERFAZ )de forma mas practica ,

Agradesco la atensión prestada a la presente.
 cualquier link tutoriales, consejo te agradesco de corazon..........


----------



## el_patriarca (Feb 18, 2007)

si deseas armar un proyecto con el 16f877, yo tengo algunos que utilizan el puerto serie y son buenos, pero no tienen explicación, solo programa y el armado. Por ejemplo, un control remoto para auto de juguete. Podrías aprender mucho si te bajas los datasheets del PIC, del MAX232 y el Manual para PICs de gama media.


----------



## Turkito (Feb 19, 2007)

Hola acá te coloco un diagrama de conexión del pic con el 232 al PC, espero te sea de ayuda!!! Esto funciona con el 16f877a de la misma forma!....
Saludos


----------



## jodch (Feb 19, 2007)

GRACIAS AMIGO....... VOY A REVISARLO


----------



## Anchoasfrescas (Feb 20, 2007)

Hola

La verdad es que no tengo mucha idea de esto y he encontrado esto buscando ayuda para mi.
Yo estoy intentando hacer una comunicacion serie entre un sensor de potencia y el 16f877a, pero no con un 232, sino con la funcion especial SPI que incorpora este micro. 

Alguien podría decirme alguna pista de por dnde empezar, estoy perdidisimo y el tiempo para acabar el proyecto se me ehca encima.

Los dispositivos a comunicar son :

CS5461 --> sensor de potencia (necesita comunicacion serial) (adjunto datasheet)
16F877 --> PIC


----------



## forand (Feb 21, 2007)

HOlA qué tal.

Creo que tengo un error de concepto, y quería saber si ustedes me  podrían ayudar.

El caso es que en comunicación vía serie he visto repetidas veces MAX232 y USART.
Sé que la USART no lo tienen todos los pics y MAX232 es un módulo externo. Si se quisiera transmitir algo por puerto serie, se tendría que configurar la USART y a continuación poner un módulo MAX232????o en cambio si se tiene USART  no se debería poner un MAX232???

Le agradezco todo tipo de ayuda.


----------



## Anchoasfrescas (Feb 23, 2007)

Lo del MAX232 ya me lo habia planteado, pero mi tutor me emdio ha impuesto que quiere hacer la comunicion serial con la funcion SPI del microchip.

Agradeceria que me mandaseis alguien un ejemplo sobre ese tipo de comunicacion.

Muchas gracias.


----------



## maunix (Mar 6, 2007)

Anchoasfrescas dijo:
			
		

> Lo del MAX232 ya me lo habia planteado, pero mi tutor me emdio ha impuesto que quiere hacer la comunicion serial con la funcion SPI del microchip.
> 
> Agradeceria que me mandaseis alguien un ejemplo sobre ese tipo de comunicacion.
> 
> Muchas gracias.



No buscaste en las application note de microchip? hay muchos ejemplos de esto!


----------



## luis_ruizch (Dic 20, 2007)

hola amigos , tengo poca experiencia en progarmar pic  y estoy tratando de comunicar  un 16f877 con la  pc   y no tengo comunicacion alguna , para eso estoy usando  el hiperterminal  y el sgte programa que adjunto (en picbasic pro) , espero que me ayuden si algo le falta a mi programa les agardesco  su ayuda 
Luis_r

*************************************************
INCLUDE "modedefs.bas" 


DEFINE HSER_RCSTA 90h 

DEFINE HSER_TXSTA 24h 

DEFINE HSER_BAUD 9600                                                          

DEFINE HSER_CLROERR 1 

RCIF VAR PIR1.5 ' PIR1.5 TOMA EL NOMBRE DE RCIF


'** DEFINIR VARIABLES

datoserial VAR BYTE 
i          VAR BYTE 

'******************** 
datoserial=0


Inicio: 
Pause 500 

Condicion: 
IF RCIF = 0 Then 
HSerin [datoserial] 
EndIF 

IF datoserial <> 0 Then  
GoSub dialogo
EndIF 
GoTo condicion

'************************************************
dialogo: 
For i = 1 TO 3 
High PORTB.0 : Pause 100 : Low PORTB.0 : Pause 100 
Next i 

Return 

End


----------



## acido159 (Oct 30, 2008)

muchas gracias por el doctos


----------



## HASBLEYDER (Ene 24, 2009)

hola.

Estoy realizando una comunicacion serie con un microcontrolador 16f877, lo unico que quiero es la transmision al pc, la simulacion larealice en proteus pero nome funciono, solo quiero transmitir el numero 48 endecimal, para losque mepuedan ayudar muchas gracias.

adjunto el archivo en mplab y elde proteus.


----------



## sangreaztk (Ene 24, 2009)

Jejejejeje, que chevere que el código que subí le sirva de referencia a otros.
Dices que solo quieres enviar el 48decimal, pero cada cuando envias ese dato? por ejemplo, si quieres enviarlo cada segundo, el código sería parecido al siguiente:


```
processor   16f877 
   include    <p16f877.inc> 
   __CONFIG   0x3F71 

; ------------------------------Código modificado por aztk------------------------------------- 
; inicio 
          org     0x00 
          goto    inicio
; Comienzo del programa principal 
inicio:
          bsf     STATUS,RP0     ; Bank01 
          bcf     STATUS,RP1 
          movlw   b'10111111'    ; RC7/RX entrada, 
          movwf   TRISC          ; RC6/TX salida 
          movlw   b'00100100'    ; Configuración USART 
          movwf   TXSTA          ; y activación de transmisión 
          movlw   .25            ; 9600 baudios 
          movwf   SPBRG 
          bcf     STATUS,RP0     ; Bank00 
          movlw   b'10010000'    ; Configuración del USART para recepción continua 
          movwf   RCSTA          ; Puesta en ON 

BUCLE     movlw   .48
          call    TX_DATO
          call    t1s            ; t1s es una subrutina de tiempo de 1s
          goto    BUCLE 

; Se transmite via Serie el dato que esta en el registro W 
TX_DATO   bcf     PIR1,TXIF      ; Restaura el flag del transmisor
          movwf   TXREG          ; Mueve el byte a transmitir al registro de transmision 
          bsf     STATUS,RP0     ; Bank01 
          bcf     STATUS,RP1 
TX_DAT_W  btfss   TXSTA,TRMT     ; ¿Byte transmitido? 
          goto    TX_DAT_W       ; No, esperar 
          bcf     STATUS,RP0     ; Si, vuelta a Bank00 
          return 

; Crear una subrutina de tiempo de 1s
t1s:
      .
      .
      .
          return 

          end
```

Buena Vibra!


----------



## HASBLEYDER (Ene 29, 2009)

Hola.


Muchas gracias por lainformación, la probe en proteus y funciono perfecto. ahoraestoy haciendoun programa en visual basic 6.0 para poder leer la información ( el numero 48 en decimal) y aprender mas deestacomunicacion  si usted tiene algun programa que me pueda ayudar le estare agradecido.
este es mi programa en visual...


----------



## Meta (Ene 30, 2009)

A lo mejor esto te hará una idea con esta guía.

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

Saludo.


----------

