Autor Tema: CODIGO MIXTO CCS + ASM  (Leído 3104 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 682
CODIGO MIXTO CCS + ASM
« en: 22 de Septiembre de 2003, 21:48:00 »
Hola,
        Bueno para poder superar lalectura de la trama de bits del UM3750 tuve que hacer una rutina en asm, esta me demando retardos de presicion aceptable, nunca habia hecho alguna experiencia mezclando codigo, me encontre con un problema, como hago llamar una rutina en C desde el ASM?, por ejemplo en mi asm tengo

 call medio_pulso

si hago esto afuera del asm , lo compila pero no vuelve a donde llame

 medio_pulso : {

          delay_us(300);
        }

Muy lindo seria que funcione, no entiendo porque lo compila pero lo manda para cualquier lado, bueno si alguien puede ayudarme, es solo por practicidad pues de otro modo tengo que hacer loops o usar algun timer para los retardos en asm,

un saludo al DREAM TEAM

Ariel



saludos
PikMan

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: CODIGO MIXTO CCS + ASM
« Respuesta #1 en: 22 de Septiembre de 2003, 23:37:00 »
Pues la verdad, en C incluir rutinas de asm sí, pero al revés nunca me lo había planteado. Si no quieres calentarte  la cabeza calculando valores para los retardos, existen unos programitas que generan el código asm para una determinada temporización (pic-loops y pic-delayer, creo recordar que se llamaban los que yo tengo)

Un saludo

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 682
RE: CODIGO MIXTO CCS + ASM
« Respuesta #2 en: 30 de Septiembre de 2003, 19:54:00 »
Hola POCHER,
                      Pues si hay una forma

suponemos esto

#asm

movlw oxaa
movwf registro

call delay_100

#endasm

delay_100 :

 delay_ms (100)

#asm

sigue el asm

#endasm


y asi funciona perfectamente sin tener que hacer los fastidiosos loops de delay, aunque yo personalmente para los delays prefiero usar los timers, pero bueno evacuada la duda.

saludos

Ariel





saludos
PikMan

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: CODIGO MIXTO CCS + ASM
« Respuesta #3 en: 01 de Octubre de 2003, 09:53:00 »
Buen truco para no tener que calcular temporizaciones con bucles anidados. Esto se puede hacer gracias al compilador de C, es una gran ventaja usar un compilador de C.

Oye una pregunta, y si quisieras que una vez realizada la temporización regresara a la instrucción que hubiese detrás del CALL.

Quizá esto:

.
.
.
CALL delay_100

más instrucciones

#endasm

delay_100:      delay_ms(100);

#asm

RETURN

#endasm

¿Lo has probado?

Un saludo

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 682
RE: CODIGO MIXTO CCS + ASM
« Respuesta #4 en: 01 de Octubre de 2003, 22:32:00 »
Hola, si debe funcionar solo que no hace falta el return, agragandole los : a la etiqueta te permite llamarla desde el asm y el retrun lo hace solo

saludos

Ariel

saludos
PikMan


 

anything