Holap, nose que pasa con mi programa (usart, asincronico,9600 sin control de flujo) que lo unico que hace es recibir e enviar lo que recibe.. y no entiendo por que si mando una "a" llega una "q" ...�? si mando otras letras como la "w" o la "s" llegan bien.. si alguien me puede ayudar o mandar un codigo bueno para comprobar aca, ojala para un 16f873
Codigo:
#include <p16f873a.inc>
__CONFIG _CP_OFF & _HS_OSC & _PWRTE_OFF & _BODEN_OFF & _WDT_OFF & _LVP_OFF & _WRT_OFF
CBLOCK 0x020
HANDLE
MOTOR
NUMERO
MSB
LSB
serial
ENDC
_RESET code 0x0000
goto MAIN
_INTERRUPT code 0x0004
goto INTERRUPT
_MAIN code
MAIN
;Banco 0
BCF STATUS,RP0
BCF STATUS,RP1
;MOVLW (1<<GIE)|(1<<PEIE)|(1<<T0IE);int. globales, perifericos
MOVLW (1<<GIE)|(1<<PEIE);int. globales, perifericos
MOVWF INTCON
MOVLW D"0"
MOVWF HANDLE
MOVLW 0x00
MOVWF NUMERO
;limpio los puertos
clrf PORTA
clrf PORTB
clrf PORTC
BSF PORTA,0
movlw (1<<SPEN)|(1<<CREN);serial port enable,habilito recepcion
movwf RCSTA
MOVLW 0x0C
MOVWF CCP1CON ; PWM mode
MOVLW 0x0C
MOVWF CCP2CON ; PWM mode
MOVLW d"12"
MOVWF CCPR1L ; DUTY CYCLE PWM1
MOVLW d"5"
MOVWF CCPR2L ; DUTY CYCLE PWM2
BSF T2CON,TMR2ON ;PRENDO EL TIMER 2
;Banco 1
BSF STATUS,RP0
BCF STATUS,RP1
;bcf OPTION_REG,5
MOVLW 0xA3
MOVWF PR2
MOVLW (1<<RCIE) ;Habilitado interrup. USART(recepci�n)
MOVWF PIE1
movlw 0x06 ;0000 0110
movwf ADCON1
;configuro puertos
clrf TRISA ;puerto A todos los pines salida
clrf TRISB ;puerto B todos los pines salida
clrf TRISC ;puerto C todos los pines salida
bsf TRISC,7 ;Entrada recepci�n de datos
;configuracion del USART
; movlw D"18"
movlw D"129"
movwf SPBRG
;movlw (1<<BRGH)|(1<<TXEN) ;High Speed, modo asincronico (default 0),
movlw 0x24
movwf TXSTA
;Banco 0
BCF STATUS,RP0
BCF STATUS,RP1
LOOP
goto LOOP
_INT code
INTERRUPT
GOTO RECEPCION
_USART CODE
RECEPCION
MOVF RCREG,W
; MOVWF CCPR1L
addlw D"255"-"z" ;z=122 en asci
addlw "z"-"a"+1
btfss STATUS,C
addlw 0x20
addlw "A"
movwf TXREG
RETFIE
END