Autor Tema: Hi-Tech Picc y funciones en ensamblador  (Leído 2322 veces)

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

Desconectado camope

  • PIC10
  • *
  • Mensajes: 4
Hi-Tech Picc y funciones en ensamblador
« en: 06 de Marzo de 2009, 07:14:40 »
Hola a todos. Ultimamente me he estado planteando realizar mas tareas con los pic, el caso es que Yo siempre he sido rata de ensamblador, pero lo cierto es que mi último proyecto, un programador para el control de contactores con un reloj de "alta precisión", me ha llevado bastante tiempo, y puesto que no todos los programas van a necesitar un control de tiempos exahustivo, pues me he planteado pasarm a Picc para acortar el tiempo de desarrollo.

El caso es que en mi primer programa me he planteado realizar una función que me realice una pausa de x ms, como la delay.c pero más precisa. Mi problema radica en que si le paso argumentos a esa función, el código ensamblador no reconoce las variables:

----------------------------------------------------------------------------------------------
#include <pic.h>
#include <htc.h>

#define FOSC 4

void espera_ms(unsigned char intervalo);

void main(void)
{
.....

espera_ms(1);

}


void espera_ms(unsigned char intervalo){
#asm
   decfsz   _intervalo, F
....

#endasm

return;
}
----------------------------------------------------------------------------------------------

me da el error "Error   [800] ; 0. undefined symbol "_intervalo"" tanto con guión bajo como sin él. La única forma de que el ensamblador reconozca la variable es declarándola como global (y no pasarla como parámetro), pero claro está, así ya pierde la gracia.
Además sería interesante, una vez funciones, hacer una librería para utilizarla desde cualquier programa.

Un saludo y os agradezco las sugerencias.

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Hi-Tech Picc y funciones en ensamblador
« Respuesta #1 en: 06 de Marzo de 2009, 08:23:28 »
En asm no hay variables de tipo local por tanto no puedes hacerlo e esta manera. La referencia a esa variable desde asm es una contante... en C es un puntero, por tanto no casan. Tienes que cambiar la forma de pensar para cada entorno.

Desconectado camope

  • PIC10
  • *
  • Mensajes: 4
Re: Hi-Tech Picc y funciones en ensamblador
« Respuesta #2 en: 06 de Marzo de 2009, 21:23:15 »
Muchas gracias por tu rápida respuesta, ahora me queda claro que lo que pretendo hacer no es posible, al menos no de esta manera. No obstante, en el manual de hi-tech viene reflejado que es posible definir una funcion en ensamblador en un fichero .as separado y realizar una llamada desde un programa en c e incluso pasarle parámetros, el caso es que no me queda totalmente claro como realizarlo.