pic 16f877A Sacar un seno programando en c

Iniciado por coconut, 8 Febrero 2006, 13:05 PM

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

coconut

Hola, he hecho este programa para sacar un seno por el pto b  de la pic (luego se le añade un conversor analogico-digital) programando en PICC mis dotes de C estan bastante olvidadas el caso es que no me va, y me da un error que no entiendo al declarar los enteros i y j me pide al compilar un numero?! alguien ve el erroro errores? gracias!  (va a 16 MHz)

#include <16F877A.h>
#device adc=8
#use delay(clock=16000000)
#fuses NOWDT,HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, NOCPD, NOWRT



void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   int i,j; aqui me pide una expresion numerica
   set_tris_b (0xFF);            /Puerto B de salida
   int * x[0]; (antes int 8)   
   x[0]=0x9A;               /Inicializacion del seno
   x[1]=0xB3;
   x[2]=0xCA;
   x[3]=0xDE;
   x[4]=0xEE;
   x[5]=0xF9;
   x[6]=0xFF;
   x[7]=0xFF;
   x[8]=0xFC;
   x[9]=0xF2;
   x[10]=0xE3;
   x[11]=0xD0;
   x[12]=0xBA;
   x[13]=0xA2;
   x[14]=0x88;
   x[15]=0x6D;
   x[16]=0x54;
   x[17]=0x3C;
   x[18]=0x27;
   x[19]=0x16;
   x[20]=0x0A;
   x[21]=0x02;
   x[22]=0x00;
   x[23]=0x03;
   x[24]=0x0B;
   x[25]=0x18;
   x[26]=0x2A;
   x[27]=0x3F;
   x[28]=0x57;
   x[29]=0x71;

   while (1){
      for (i=0;i<30;i++){         /Para recorrer la tabla
         for (j=0;j<125;j++){      /Para esperar el tiempo de mostreo
            output_b(x);   
         }
      }
   }
}



Bastian

Hola!

Por lo que puedo entender, quieres crear un vector de enteros, para guardar los distintos valores binarios que vas a sacar por el puerto b secuencialmente.

lo unico raro que veo es la declaracion del vector
Citarint * x[0];(antes int 8)   
   x[0]=0x9A;               /Inicializacion del seno

Cuando se declara un vector, entre corchetes, se pone el numero de elementos que va a tener para reservar el espacio de memoria..... por ejemplo si quieres un vector de 100 valores enteros, debes escribir:
int vector_de_100_enteros[100]
de esta forma tienes 100 enteros consecutivos numerados entre 0 y 99.

Cuando declaras el vector lo haces con 0 elementos..... lo que no tiene sentido.... deberia ser:
int * x[30]
Por cierto, supongo que lo de
Citar(antes int 8)
lo habras puesto al postear, si no deberia estar comentado //

Salu2!
Un gobierno no debe movilizar un ejército por ira, y los jefes militares no deben provocar la guerra por cólera.
Sun Tzu:"El arte de la guerra"

Escrito hace 3000 años y algunos aun no lo saben!

Por cierto ...... escribir bien no cuesta una P*** M*****

coconut

si lo de int 8 era lo que habia puesto antes un entero de 8 bits pero luego vi en este foro que lo ponian con el * y lo he cambiado, pero me sigue pidiendo una expresion numerica despues del int y si le pongo el 8 la sigue pidiendo¿?

gracias por lo del vector

GeoMX

No estoy seguro (porque no he programado ningún microcontrolador con C), pero me parece que el vector deberías declararlo así:

int x[n_posiciones];

o así:


int *x;
x = malloc(n_posiciones * n_tamaño_de_datos);