El programa entero es muy grande, tiene muchos archivos pero por lo que me habeis comentado y el error que me da, os pongo esto, por si me pudieseis ayudar:
cf.h
#define CF_A0 PIN_E0
#define CF_A1 PIN_E1
#define CF_A2 PIN_E2
#define CF_OE PIN_A1
#define CF_WE PIN_A2
#define CF_READY PIN_A3
#define CF_RESET PIN_A5
#define CF_CD PIN_C5
#define CF_CE PIN_B0
#define TRIS_D_INPUT 0xFF // 11111111
#define TRIS_D_OUTPUT 0x00 // 00000000
#byte CF_DATA = 0x08 /* Port D */
#byte CF_DATA_TRIS = 0x88 /* Port D TRIS */
// wait for the CF RDY line to go high, ie ready for next command
#define waitforready() while (!input(CF_READY))
#define REG_DATA 0x00 // ADDRESS OF DATA REGISTER
#define REG_ERROR 0x01 // ADDRESS OF ERROR REGISTER
#define REG_FEATURES 0x01 // ADDRESS OF FEATURES REGISTER
#define REG_SECTORCOUNT 0x02 // ADDRESS OF SECTOR COUNT REGISTER
#define REG_SECTORNUM 0x03 // ADDRESS OF SECTOR NUMBER REGISTER
#define REG_CYLINDERLOW 0x04 // ADDRESS OF LOW CYLINDER REGISTER
#define REG_CYLINDERHIGH 0x05 // ADDRESS OF HIGH CYLINDER REGISTER
#define REG_HEAD 0x06 // ADDRESS OF HEAD/DRIVE REGISTER
#define REG_STATUS 0x07 // ADDRESS OF STATUS REGISTER
#define REG_COMMAND 0x07 // ADDRESS OF COMMAND REGISTER
#define COMMAND_IDENTIFY 0xEC
#define COMMAND_WRITESECTOR 0x30
#define COMMAND_READSECTOR 0x20
#define CF_OK 0
#define NO_CF 1
boolean CF_isReady();
boolean CF_isBusy(void);
void CF_taskFileWrite(byte, byte);
byte CF_ReadByte(void);
void CF_WriteByte(byte data);
y luego el "#include <18F452.h>" lo tengo en el archivo "mp3.c", donde la parte de las definiciones es la siguiente:
mp3.c
#include <18F452.h>
// note that these aren"t "valid" since we use a bootloader
#fuses HS, NOPROTECT, NOWDT, PUT, NOBROWNOUT, NOLVP
// 20 MHz clock
#use delay (clock=29491000)
#use rs232 (baud=115200, xmit=PIN_C6, rcv=PIN_C7)
long t=0;
#int_timer2
void t2() {
t++; // increments once a millisecond
}
//#use i2c(master, sda=PIN_C3, scl=PIN_C2)
#define SPI_CLK PIN_C0
#define SPI_SDO PIN_C1
#define I2C_SCL PIN_C2
#define I2C_SDA PIN_C3
#define MP3_DATAREQ PIN_A4
#define ENABLE_MP3 PIN_C4
#define MP3_RESET PIN_A0
#define BUTTON_VOLUP PIN_B1
#define BUTTON_VOLDN PIN_B4
#define BUTTON_1 PIN_B3
#define BUTTON_2 PIN_B5
#define BUTTON_3 PIN_B6
#define BUTTON_4 PIN_B7
// Disable automatic TRIS programming for all ports
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
#use fast_io(e)
#use fast_io(c)
#define nop #asm nop #endasm
#define TRIS_A 0b001000 // rst, mp3data, rdy, /we, /oe, /rst
#define TRIS_B 0b11111010 // 5 buttons, nc, button, /ce
#define TRIS_E 0b000 // all out addr pins
#define TRIS_C_I2CSEND 0b11100000 // 2 buttons (rx/tx), cd1, mp3enable, sda (i2c send), scl, sta_sdi, sta_sclk
#define TRIS_C_I2CRECV 0b11110000 // 2 buttons (rx/tx), cd1, mp3enable, sda (i2c recv), scl, sta_sdi, sta_sclk
byte sectorbuff[512];
#include "mp3.h"
#include "cf.c"
#include "fat16.c"
#include "sta013.c"
...
No se si con esto me podreis ayudar.
Muchas gracias.