Hola desde El Salvador
Yo he transmitido por usart en rf 315mhz y todo bien con niple
este es un programa generado con niple
;------------------------------------------------------------
; Código assembler generado por Niple V4.0.0
; Nombre del Proyecto: RS232 por RF
; Autor: Emilio Flores.
; Fecha: 17/07/2006
; PIC: 16F877
; Velocidad de reloj: 4 Mhz
; Descripcion:
;------------------------------------------------------------
LIST P=PIC16F877
_XT_OSC EQU 0x3FFD
_DEBUG_OFF EQU 0x3FFF
_WDT_OFF EQU 0x3FFB
_PWRTE_ON EQU 0x3FF7
_BODEN_OFF EQU 0x3FBF
_LVP_OFF EQU 0x3F7F
_CPD_OFF EQU 0x3FFF
_CP_OFF EQU 0x3FFF
_WRT_ENABLE_OFF EQU 0x3DFF
__config _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_ENABLE_OFF & _CP_OFF
;------------------------------------------------------------
; Declaración de Registros
;------------------------------------------------------------
w equ 00h
status equ 0x03
portc equ 0x07
pclath equ 0x0a
intcon equ 0x0b
pir1 equ 0x0c
opcion equ 0x181
trisb equ 0x186
rcsta equ 0x18
rcreg equ 0x1a
rf_byte1 equ 0x20
rf_byte2 equ 0x21
rf_byte3 equ 0x22
_np_w equ 0x2a
_np_status equ 0x2b
_np_banderas2 equ 0x2d
trisa equ 0x85
trisc equ 0x87
trisd equ 0x88
trise equ 0x89
pie1 equ 0x8c
txsta equ 0x98
spbrg equ 0x99
adcon1 equ 0x9f
;------------------------------------------------------------
; Declaración de Bits
;------------------------------------------------------------
c equ 0 ;carry / borrow bit
cren equ 4 ;
gie equ 7 ;habilitador general de interrupciones
peie equ 6 ;ee write complete interrupt enable bit
rcie equ 5 ;
rcif equ 5 ;bandera de interrupcion por fin de recepción usart.
rp0 equ 5 ;registrer bank select bit
rp1 equ 6 ;registrer bank select bit
spen equ 7 ;
z equ 2 ;bit cero
sub_inte equ 0 ;bandera de subrrutina cancelada por interrupcion.
;------------------------------------------------------------
; Inicio
;------------------------------------------------------------
reset org 0
goto paso2
org 4
movwf _np_w
swapf _np_w,1
movf status,w
movwf _np_status
bcf status,rp0 ;cambiar a banco 0
bcf status,rp1
btfsc pir1,rcif
goto interrupcion_rc
salir_interrupcion
bsf intcon,gie
bsf _np_banderas2,sub_inte ;activar la bandera de rutina cancelada por interrupcion
movf _np_status,w
movwf status
swapf _np_w,w
retfie
;------------------------------------------------------------
; inicio de la interrupción por rc usart
;------------------------------------------------------------
interrupcion_rc_salir
bcf pir1,rcif
goto salir_interrupcion
interrupcion_rc
bcf status,rp0 ;cambiar a banco 0
bcf status,rp1
bcf intcon,gie ;desactivar habilitador general de interrupciones.
inte_rc_usart_3_esperar_byte_1
btfss pir1,rcif
goto inte_rc_usart_3_esperar_byte_1
movf rcreg,w
movwf rf_byte1
bcf pir1,rcif
inte_rc_usart_3_esperar_byte_2
btfss pir1,rcif
goto inte_rc_usart_3_esperar_byte_2
movf rcreg,w
movwf rf_byte2
bcf pir1,rcif
inte_rc_usart_3_esperar_byte_3
btfss pir1,rcif
goto inte_rc_usart_3_esperar_byte_3
movf rcreg,w
movwf rf_byte3
bcf pir1,rcif
nop ;nota: puedes agregar un checksum a los datos recividos
nop ;usar como deseas el byte 3 (dato recivido)
goto interrupcion_rc_salir
goto interrupcion_rc_salir
;------------------------------------------------------------
; programa principal
;------------------------------------------------------------
paso2
movlw b'00000000' ;configurar el puerto e como xxxxxsss
bsf status,rp0 ;cambiar a banco 1
bcf status,rp1
movwf trise
movlw b'00000000' ;configurar el puerto a como xxssssss
movwf trisa
movlw b'00000111' ;puerto a/e = e/s digital
movwf adcon1
movlw b'00000000' ;configurar el puerto b como ssssssss
bsf status,rp1 ;cambiar a banco 3
movwf trisb
movlw b'10000000' ;configurar el puerto c como esssssss
bcf status,rp1 ;cambiar a banco 1
movwf trisc
movlw b'00000000' ;configurar el puerto d como ssssssss
movwf trisd
movlw b'00100110'
movwf txsta
movlw .25
movwf spbrg
bcf status,rp0 ;cambiar a banco 0
bsf rcsta,spen ;habilitacion del puerto de comunicacion serial
bsf rcsta,cren
bsf intcon,gie ;activar habilitador general de interrupciones.
bsf intcon,peie ;activar habilitador general de interrupciones por perifericos.
bsf status,rp0 ;cambiar a banco 1
bsf pie1,rcie ;activar interrupción por fin de recepción por usart.
paso8
nop
nop
goto paso8 ;cierra el ciclo
End