¿Puedo usar funciones matemáticas en el código PIC16F877A?

-2

¿Puedo usar la función matemática exponencial (exp) en el código PIC16F877A? Por ejemplo, como este:

double a,ans;
a=5.7;
ans=exp(0.5);
    
pregunta channa

2 respuestas

6

El PIC16F877A es un microcontrolador de 8 bits sin una unidad de punto flotante (FPU). Por lo tanto, cualquier matemática de punto flotante debe hacerse mediante la emulación de software. Por lo general, esto se maneja a través de una biblioteca de compiladores, por lo que depende en gran medida del compilador que esté utilizando, que no especificó. Vea si su compilador tiene un archivo de cabecera como math.h, etc. La documentación de su compilador especificará qué archivos deben incluirse, qué funciones están disponibles, cuánta memoria de programa / datos y ciclos de procesador requerirá cada función.

Además, tenga en cuenta que como su microcontrolador solo puede funcionar con palabras de datos de 8 bits, las operaciones con "dobles" compatibles con ANSI C, que son al menos de 64 bits serán extremadamente lentas. Por lo general, para las operaciones incrustadas, es mejor usar el tipo "flotante" si la precisión de 32 bits es suficiente para su aplicación. Seguirá siendo lento, pero menos extremadamente lento (algunos compiladores ni siquiera admiten el doble, y asumirán automáticamente el uso del tipo float).

    
respondido por el Zuofu
3

La pregunta se relaciona con el compilador y no con el microcontrolador utilizado per se.
CUALQUIER microcontrolador puede implementar cualquier función que se implemente en un lenguaje moderno, sujeto solo a limitaciones de memoria. Si es sensato hacerlo, o posible con un idioma determinado, hay otros temas y lo que debe preguntar para obtener una buena respuesta.

Eso es:
SI puedes hacer lo que pidas -
PERO si una herramienta dada lo hace y si es una buena idea no se puede conocer sin más información.

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas