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);
}
}
}
}
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!
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
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);