Programación del USART para el PIC

Hola a todos compañeros estoy desarrollando un proyecto en el que comunico un pic con una pc para realizar transmision serial ya tengo todo el circuito del max232 montado y tengo nosiones del programa de visual basic pero tengo inconvenientes para encontrar información completa de como trabajar la programacion del USART, agradeceria quien me pueda ayudar con alguna especie de guia

muchas gracias
Feliz Año 2008 para todos en este foro
 
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
 
Hola jorge y luis

Tengo un programa que comunica el PIC16F877A con el pc, que está probado con el Hyperterminal y todo, pero esta hecho en assembler, que es en lo que me manejo.
No se como se programa en pic basic asi que no podria ayudarlos de otra forma

se los adjunto si les llegase a servir

Lo que hace el programa es simplemente recibir un dato y enviarlo tal cual, lo que es facilmente modificable, ya que está hecho con rutinas separadas


LIST P=16F877A
INCLUDE <P16F877A.INC> ; Librerias necesarias
_WRT_ENABLE_OFF

ERRORLEVEL -302

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_OFF &

_LVP_OFF & _CPD_OFF



dato equ 0x20

org 0x0000

BSF STATUS,RP0 ; banco 1
BCF STATUS,RP1

CLRF TRISB ; configuramos el puerto B como salida

BCF TXSTA,BRGH

MOVLW D'31' ; configura velocidad de Tx a 9600 baudios
MOVWF SPBRG

BCF TXSTA,SYNC ; limpia bit sync (modo asíncrono)
BSF TXSTA,TXEN ; setea bit txen (habilita Tx)

BCF STATUS,RP0 ; volvemos al banco 0

BSF RCSTA,SPEN ; setea bit spen (habilita puerto serial)
BSF RCSTA,CREN ; habilita recepcion


;***********************************************************************************************
;***************************** PROGRAMA PRINCIPAL **********************************************
rutina
CALL recibe
MOVFW dato
CALL envia

GOTO rutina


;************************************************************************************************
;************************************************************************************************

; Ahora dejo las rutinas que efectuan la transmision y recepcion de los datos por la USART



envia
BSF STATUS,RP0 ; vamos al banco 1
esp BTFSS TXSTA,TRMT ; chequeamos el buffer de transmision (si TSR esta vacio TMRT=1)
GOTO esp

BCF STATUS,RP0 ; vamos al banco 0
MOVF dato,W
MOVWF TXREG ; enviamos el registro "dato" por la USART
RETURN

recibe
BTFSS PIR1,RCIF ; chequeamos el buffer de recepcion
GOTO recibe

MOVF RCREG,W ; si hay dato, lo movemos a W y
MOVWF dato ; luego lo guardamos en "dato"
RETURN

end
 
Gracias por tu ayuda amigo es de mucha ayuda lo que necesito es precisamente eso la parte del programa asembler para la comunicacion por que ya en la pc la progamacion seria en otro lenguaje en mi caso visual basic

muchas gracias por tu ayuda
 
gracias por la ayuda ,ante todo, ahora que tengo como ejemplo el programa en asembler resulta que cuando envio el dato (cualquier caracter) al pic este retorna una 'p' he programado el pic tal como esta ...aque se debe esto ....gracias
 
te retorna una P a la pc? estas trabajando solo con el hiperterminal?chequea bien la logica de todo tu programa por que en estos casos una simple onstruccion que no es en si un error de sintaxis pero te representa un error a la logica que tengas en mente y lo que decees que tu programa haga, a mi me a pasado asi tambien
 
hola como estan espero que aun puedan ayudarme
pero resulta que estoy simulando este programa en proteus y no funciona como pienso que deberia y no envia ningun dato
ojala me puedan aclarar mi duda
 
Atrás
Arriba