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