saludos soy nuevo en el foro y tengo un problema que es el siguiente:
Estoy haciendo un programa en PIC C CCS para el pic 18f4550, el programa funciona muy bien, el problema es que para lograr tiempos de 4 us el comando delay_us no logra hacerlos (comprobado y recontra comprobado en laboratorio con un osciloscopio) entonces introduci parte en assembler en la que llamo a una subrutina, al compilarlo todo bien pero en la simulación con proteus pasa lo siguiente:
#asm
movlw 0
movwf contador
bucle_dato:
btfss canal1,0
bcf LATA,1
btfsc canal1,0
bsf LATA,1
RRNCF canal1// canal 1 de un byte
incf contador
call retardo
btfss contador,3// condición para que salga del bucle
goto bucle_dato
//el problema es que cuando sale del "bucle_dato" se salta "retardo:"(lo que considerio que esta bien) pero no se salta las sentencias que siguen (nop) y tampoco la sentencia return y como el return no esta funcionando como parte de una subrutina ya que se salto "retardo:" return vuelve a 0x00 y como esa dirección esta fuera del programa el programa muere
//PD: como compila bien hice la prueba del programa quemandolo en el pic lo que resulata en el mismo problema
//PD: AYUDA PORFABOR no encontre nada en ningun lado que explique porque sucede esto!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
retardo:
nop
nop
nop
nop
nop
nop
return
#endasm
GRACIAS POR ADELANTADO A SU AYUDA
PD: espero haber sido claro en la explicación de mi problema y no habver creado un tema donde no debe ser gracias
estoy en calidad de desesperado