Amigos:
Gracias por su pronta respuesta. Envio resumen del asm, porque todo seria una lata. A no ser que sea necesario y que tengan algo de tiempo para leerlo. Si es asi me dicen y lo envio.
Como se ve lo que quiero hacer es enviar un dato por la usart en decimal. O sea ingresar un 3 decimal y que en el PC (Visual basic) me reciba y lea un 3 decimal.
Lo que pasa es que estoy leyendo la puerta B del pic y esa informacion debo enviarla al PC, pero me envia corazones, caritas riendose, etc.
Con respecto al reset esta conectado Vcc R10K - R120 Pin1. En el signo - lo llevo a tierra para resetearlo. ¿Esta bien, no?
List p=16F877A ;Tipo de procesador
include "P16F877A.INC" ;Definiciones de registros internos
radix dec
PDel0 equ 20H
PDel1 equ 21H
PDel2 equ 22H
org 0x00 ;Vector de Reset
goto Inicio
org 0x04 ;Vector de interrupción
goto Inter
;********************************************************************************************
;Tx_Dato: Transmite vía serie el dato presente en el reg. W
Tx_Dato
bcf PIR1,TXIF ;Restaura el flag del transmisor
movwf TXREG ;Almacena el byte a transmitir
bsf STATUS,RP0 ;Banco 1
Tx_Dato_Wait
btfss TXSTA,TRMT ;Byte transmitido ??
goto Tx_Dato_Wait;No, esperar
bcf STATUS,RP0 ;Banco 0
return ;Si
;******************************************************************************************
;Tratamiento de la interrupción
Inter
radix dec
btfss PIR1,RCIF ;Ha sido interrupción en la recepción ??
retfie ;No, falsa interrupción
bcf PIR1,RCIF ;Si, restaurar el flag de interrupción
movf RCREG,W ;Lee el dato recibido
call Tx_Dato ;Lo retransmite a modo de eco
MOVWF PORTB ;Mueve inf. puerto B a W
call Tx_Dato
movlw 3
call Tx_Dato
movlw .3
call Tx_Dato
movlw b"00000011"
call Tx_Dato
movlw D"3"
call Tx_Dato
movlw 0x03
call Tx_Dato
movlw H"3"
call Tx_Dato
; movlw ."3"
; call Tx_Dato
retfie
;*******************************************************************************************
;Programa principal
Inicio
clrwdt
clrf PORTC
clrf PORTB
bsf STATUS,RP0 ;Selecciona banco 1
movlw b"10111111"
movwf TRISC ;RC7/Rx entrada, RC6/Tx salida
movlw b"11111111"
movwf TRISB ;Configura puerto B como entrada
movlw b"11001111"
movwf OPTION_REG ;Preescaler de 128 asociado al WDT
movlw b"00100100"
movwf TXSTA ;TX en On, modo asíncrono con 8 bits y alta velocidad
movlw .130
movwf SPBRG ;9600 baudios con Fosc=20MHz
bsf PIE1,RCIE ;Habilita interrupción en la recepción
bcf STATUS,RP0 ;Selecciona banco 0
movlw b"10010000"
movwf RCSTA ;USART en On, recepción contínua
bsf INTCON,PEIE ;Activa interrupción de periféricos
bsf INTCON,GIE ;Activa interrupciones
Loop clrwdt
goto Loop
end