muchas gracias lo que sucede es que con lo que tengo hecho me da un error de que el stack esta lleno
y pense que quiza seria ese el problema,
LIST p=16F84A ;Tipo de procesador.
INCLUDE <P16F84A.INC> ;Definiciones de registros internos.
; ************ Zona de datos******************************
CBLOCK 0X0C
GuardaDato
rs232_ContadorBits
rs232_Dato
R_ContaA
rs232_inicializa
rs232_LeeDato
activaRB7
ENDC
#DEFINE rs232_in PORTA,4 ; donde se reciben los datos
#DEFINE rs232_out PORTA,3 ; donde se envian los datos
; ********ZONA DE CODIGOS******************
ORG 0
inicio
call rs232_inicializa
Principal
call rs232_LeeDato
movwf GuardaDato
END
; ********Rutina Inicilizar el RS232************
rs232_inicializa
bsf rs232_out ; Salida en alto para reposo
bsf STATUS,RP0
bsf rs232_in ; Se configura esta linea como entrada
bcf rs232_out ; Se configura esta linea como salida
bcf STATUS,RP0
return
; ****** Rutina Leer Datos RS232***************
rs232_LeeDato
movlw d'8' ; cantidad de bits a recibir
movwf rs232_ContadorBits
rs232_EsperaBitStart
btfsc rs232_in ; lee la entrada y espera que sea 0
goto rs232_EsperaBitStart
call retardo_100micros
call retardo_50micros
rs232_leeBit
bcf STATUS,C ; lee el Pin, en principio debe ser cero
btfsc rs232_in ; comprueba si realmente es cero
bsf STATUS,C ; cambia a 1
rrf rs232_dato,F ; introduce el bit en el registro de lectura
call retardo_100micros ; lee los siguientes bits en un periodo mas tarde
decfsz rs232_contadorbits,F
goto rs232_leeBit
call retardo_200micros ; esperar un tiempo de dos bit de parada
movf rs232_dato,W ; el resultado al registro W
return
; ********* SUBRUTINAS DE RETARDO **********
retardo_200micros ; 2+1+1+2+(2+3k)=200cm= 200ms(para K=64 a 4mhz)
nop
movlw d'64'
goto retardomicros
retardo_100micros
movlw d'31'
goto retardomicros
retardomicros
movwf R_ContaA ; Aporta un ciclo de maquina
rmicros_bucle
decfsz R_ContaA,F
goto rmicros_bucle
return
con este codigo, me da ese error
salu2
willy