TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: xabc2007 en 10 de Diciembre de 2010, 10:41:26

Título: Equivalente de CALL en ensamblador para C
Publicado por: xabc2007 en 10 de Diciembre de 2010, 10:41:26
Hola,

Utilizo el lenguaje C para programar el Pic 16f876 y para saltar a una linea determinada utilizo en goto. Cuando el programa es corto va bien pero para programas largos se complica la programación.

Me gustaria saber el equivalente de CALL en ensamblador para C, cuando hago el programa en C, que pueda enviar a una linea determinada y una vez que ha hecho la rutina vuelva desde donde lo habia dejado, como ocurre en ensamblador con la instruccion CALL.

Gracias de antemano.

Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: migsantiago en 10 de Diciembre de 2010, 10:43:46
En C son las funciones. Lee un buen tutorial de C para que aprendas a usarlo.
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: xabc2007 en 10 de Diciembre de 2010, 13:14:03
gracias por tu respuesta. He mirado un manual y hace referencia a funciones matematicas.

Por favor, me podias poner un ejemplo:

gracias otra vez
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: Suky en 10 de Diciembre de 2010, 13:21:01
goto no suele usarse en C, es poco recomendable. Estudia sobre las estructuras de control y funciones. Revisa el foro, hay muuuuuchos ejemplos de todo tipo.


Saludos!
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: migsantiago en 10 de Diciembre de 2010, 13:29:17
gracias por tu respuesta. He mirado un manual y hace referencia a funciones matematicas.

Por favor, me podias poner un ejemplo:

gracias otra vez

Tienes que estudiar lo básico de lenguaje C. Lo mejor es que inicies con algún tutorial desde cero que encuentres en Google. Aprender C no tiene que ver con el manual del compilador que estás usando.
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: AngelGris en 10 de Diciembre de 2010, 14:01:04
gracias por tu respuesta. He mirado un manual y hace referencia a funciones matematicas.

Por favor, me podias poner un ejemplo:

gracias otra vez

Tienes que estudiar lo básico de lenguaje C. Lo mejor es que inicies con algún tutorial desde cero que encuentres en Google. Aprender C no tiene que ver con el manual del compilador que estás usando.

  Concuerdo plenamente con migsantiago. Yo empecé a programar en C los PIC (nunca antes había programado en C) y uno de los libros que encontré en la web fue "aprenda ANSI C como si estuviera en primero" y realmente es muy sencillo entenderlo
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: dolphin_96 en 10 de Diciembre de 2010, 14:02:09
te pongo un pequeño ejemplillo que te explicara algunas ventajas de las funciones hay muchas mas cosas y es un tema muy extenso pero te expli tres de los casos mas usuales para el uso de las funciones:

void funcion_1(void)
{
  //aqui haces lo que quieras
}

int funcion_2(void)
{
   int variable1;
  variable1= 20 /5;
 return variable1;
}

int funcion_3 (int x)
{
   int variable1;
  variable1= x * 3;
 return variable1;
}

void main (void)
{
   int valor,resultado; //declaracion devariables

    funcion_1();
    valor = funcion _ 2();
    resutado = funcion _ 3 (20);
}

en este ejmplo, desde la funcion pricipal (main) mandas llamar la funcion "funcion1" lo de void significa que no regreara ningun valor y el void dentro del parentesis significa que no recivira algun valor, en esta funcion haces lo que quieras al terminar de hacerlo regresa a seguir donde se quedo el programa en este caso la linea "valor = funcion _ 2();" bueno este es otro caso vas a asignar el valor que te regrese la funcion "funcion_2" si te fijas ya la declaramos como "int funcion_2" lo que significa que devolvera un valor tipo "int", asi que dentro de la funion he creado una variable llamada "variable1" luego hago una operacion  20/5, al poner return dice que al volver al main le retornara el valor de "variable1" en este caso un  4, por lo tanto en el main la variable valor valdra 4, y seguira en el programa con la linea "resutado = funcion _ 3 (20);" y aqui por ultimo te explico que hace esta funcion: si te fijas dentro del parentesis puse el numero 20, este es un valor cualquiera del tipo int (0 a 255 en el caso del compilador CCS) y debe ser del tipo int por que si te fijas tambien declare en la funcion_3 dentro del parentesis: "int x" bueno lo que haces es que le cargas 20 a funcion 3, la cual se lo asignara a la variable local de dicha funcion llamada x y dentro de esta funcion trabajara con este valor al meno que lo cambies, entonces hace la operacion "x * 3" es decir 20 * 3 asi y se lo asigna a "variable1" que es la que se devuelve al regresar a el main, por lo tanto en el main la variable "resltado" valdra 60.

espero que te sirva de algo esta pequeña explicacion y como te dijo "migsantiago" estudia un manual por que hay muchas mas cosas interesantes en este lenguaje como con el uso de los punteros en las funciones etc etc, a por cierto como dice Suky aunque puedes usar el goto en el lenguaje C, te recomiendo que no lo hagas, la verdad se ve mal y se sale un poco del sistema de programacion en C, pero eso es cuetion de gustos.

Saludos
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: xabc2007 en 10 de Diciembre de 2010, 14:05:18
Muchas gracias a todos.

Saludos.

Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: Diego E. en 11 de Diciembre de 2010, 08:57:27
Hola amigo, acá te dejo un tutorial sencillo para que te inicies, Tutorial CCS (http://www.megaupload.com/?d=Y11VHAS1)

saludos.
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: migsantiago en 11 de Diciembre de 2010, 11:47:38
Hola amigo, acá te dejo un tutorial sencillo para que te inicies, Tutorial CCS (http://www.megaupload.com/?d=Y11VHAS1)

saludos.

Yo no le daría un tutorial de un compilador, le daría un tutorial estándar de lenguaje C. El empezar a aprender C con un compilador específico (y malo como CCS) no creo que sea buena idea.
Título: Re: Equivalente de CALL en ensamblador para C
Publicado por: LABmouse en 11 de Diciembre de 2010, 12:48:35
Citar
Yo no le daría un tutorial de un compilador, le daría un tutorial estándar de lenguaje C. El empezar a aprender C con un compilador específico (y malo como CCS) no creo que sea buena idea.

IDEM...

Hay otro que promete lo siguiente:

Aprendiendo C en 21 Días