180:Error: syntax error help!

i get 180:Error: syntax error on:

-> void Process_Data_From_Local_IO(void)
{
/* Add code here that you want to be executed every program loop. */

}

iif i edit it out it will just say the next function is wrong and its the same error and if i comment it out and there are no more functions then it just says a blank line at the end is a syntax error.

can I see the code above it? often times when that happens, the error is not in the code that it is pointing at, it is the code that is just before it.

tell me if it is too long ill edit it its the whole user routines fast

/*******************************************************************************

  • FILE NAME: user_routines_fast.c <FRC VERSION>
  • DESCRIPTION:
  • This file is where the user can add their custom code within the framework
  • of the routines below.
  • USAGE:
  • You can either modify this file to fit your needs, or remove it from your
  • project and replace it with a modified copy.
  • OPTIONS: Interrupts are disabled and not used by default.

*******************************************************************************/

#include “ifi_aliases.h”
#include “ifi_default.h”
#include “ifi_utilities.h”
#include “user_routines.h”
#include “serial_ports.h”
// #include “user_Serialdrv.h”

/*** DEFINE USER VARIABLES AND INITIALIZE THEM HERE ***/

/*******************************************************************************

  • FUNCTION NAME: InterruptVectorLow
  • PURPOSE: Low priority interrupt vector
  • CALLED FROM: nowhere by default
  • ARGUMENTS: none
  • RETURNS: void
  • DO NOT MODIFY OR DELETE THIS FUNCTION
    *******************************************************************************/
    #pragma code InterruptVectorLow = LOW_INT_VECTOR
    void InterruptVectorLow (void)
    {
    _asm
    goto InterruptHandlerLow /jump to interrupt routine/
    _endasm
    }

/*******************************************************************************

  • FUNCTION NAME: InterruptHandlerLow
  • PURPOSE: Low priority interrupt handler
  • If you want to use these external low priority interrupts or any of the
  • peripheral interrupts then you must enable them in your initialization
  • routine. Innovation First, Inc. will not provide support for using these
  • interrupts, so be careful. There is great potential for glitchy code if good
  • interrupt programming practices are not followed. Especially read p. 28 of
  • the “MPLAB® C18 C Compiler User’s Guide” for information on context saving.
  • CALLED FROM: this file, InterruptVectorLow routine
  • ARGUMENTS: none
  • RETURNS: void
    *******************************************************************************/
    #pragma code
    #pragma interruptlow InterruptHandlerLow save=PROD,section(".tmpdata")

void InterruptHandlerLow ()
{
if (PIR1bits.RC1IF && PIE1bits.RC1IE) // rx1 interrupt?
{
#ifdef ENABLE_SERIAL_PORT_ONE_RX
Rx_1_Int_Handler(); // call the rx1 interrupt handler (in serial_ports.c)
#endif
}
else if (PIR3bits.RC2IF && PIE3bits.RC2IE) // rx2 interrupt?
{
#ifdef ENABLE_SERIAL_PORT_TWO_RX
Rx_2_Int_Handler(); // call the rx2 interrupt handler (in serial_ports.c)
#endif
}
else if (PIR1bits.TX1IF && PIE1bits.TX1IE) // tx1 interrupt?
{
#ifdef ENABLE_SERIAL_PORT_ONE_TX
Tx_1_Int_Handler(); // call the tx1 interrupt handler (in serial_ports.c)
#endif
}
else if (PIR3bits.TX2IF && PIE3bits.TX2IE) // tx2 interrupt?
{
#ifdef ENABLE_SERIAL_PORT_TWO_TX
Tx_2_Int_Handler(); // call the tx2 interrupt handler (in serial_ports.c)
#endif
}

// *** IFI Code Starts Here***
//
// unsigned char int_byte;
// if (INTCON3bits.INT2IF && INTCON3bits.INT2IE) /* The INT2 pin is RB2/DIG I/O 1. /
// {
// INTCON3bits.INT2IF = 0;
// }
// else if (INTCON3bits.INT3IF && INTCON3bits.INT3IE) /
The INT3 pin is RB3/DIG I/O 2. /
// {
// INTCON3bits.INT3IF = 0;
// }
// else if (INTCONbits.RBIF && INTCONbits.RBIE) /
DIG I/O 3-6 (RB4, RB5, RB6, or RB7) changed. /
// {
// int_byte = PORTB; /
You must read or write to PORTB /
// INTCONbits.RBIF = 0; /
and clear the interrupt flag /
// } /
to clear the interrupt condition. /
// else
// {
// CheckUartInts(); /
For Dynamic Debug Tool or buffered printf features. */
// }
}

/*******************************************************************************

  • FUNCTION NAME: User_Autonomous_Code

  • PURPOSE: Execute user’s code during autonomous robot operation.

  • You should modify this routine by adding code which you wish to run in

  • autonomous mode. It will be executed every program loop, and not

  • wait for or use any data from the Operator Interface.

  • CALLED FROM: main.c file, main() routine when in Autonomous mode

  • ARGUMENTS: none

  • RETURNS: void
    ******************************************************************************/
    void User_Autonomous_Code(void)
    {
    /
    Initialize all PWMs and Relays when entering Autonomous mode, or else it
    will be stuck with the last values mapped from the joysticks. Remember,
    even when Disabled it is reading inputs from the Operator Interface.
    */
    pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127;
    pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127;
    relay1_fwd = relay1_rev = relay2_fwd = relay2_rev = 0;
    relay3_fwd = relay3_rev = relay4_fwd = relay4_rev = 0;
    relay5_fwd = relay5_rev = relay6_fwd = relay6_rev = 0;
    relay7_fwd = relay7_rev = relay8_fwd = relay8_rev = 0;

    while (autonomous_mode) /* DO NOT CHANGE! /
    {
    if (statusflag.NEW_SPI_DATA) /
    26.2ms loop area /
    {
    Getdata(&rxdata); /
    DO NOT DELETE, or you will be stuck here forever! */

      /* Add your own autonomous code here. */
    

    {
    if(Get_Tracking_State() == TARGET_IN_VIEW) /* make sure camera is tracking /
    {
    if(((((int)PAN_SERVO - 124) * 65)/124) > 20) /
    check current pan servo position. 0 > is right, 0 < is left /
    {
    pwm15 = 167; /
    do a left turn /
    pwm13 = 87;
    }
    else if(((((int)PAN_SERVO - 124) * 65)/124) < -20)
    {
    pwm15 = 87; /
    do a right turn */
    pwm13 = 167;
    }
    else
    {
    pwm13 = 167;
    pwm15 = 167;
    }
    }

      Generate_Pwms(pwm13,pwm14,pwm15,pwm16);
    
      Putdata(&txdata);   /* DO NOT DELETE, or you will get no PWM outputs! */
    

    }
    }
    }

/*******************************************************************************

  • FUNCTION NAME: Process_Data_From_Local_IO
  • PURPOSE: Execute user’s realtime code.
  • You should modify this routine by adding code which you wish to run fast.
  • It will be executed every program loop, and not wait for fresh data
  • from the Operator Interface.
  • CALLED FROM: main.c
  • ARGUMENTS: none
  • RETURNS: void
    ******************************************************************************/
    void Process_Data_From_Local_IO(void) //}
    { //}
    /
    Add code here that you want to be executed every program loop. */ //}
    ; //}
    } //}

/*******************************************************************************

  • FUNCTION NAME: Serial_Char_Callback
  • PURPOSE: Interrupt handler for the TTL_PORT.
  • CALLED FROM: user_SerialDrv.c
  • ARGUMENTS:
  • Argument             Type    IO   Description
    
  • --------             ----    --   -----------
    
  • data        unsigned char    I    Data received from the TTL_PORT
    
  • RETURNS: void
    *******************************************************************************/

void Serial_Char_Callback(unsigned char data) //
{ //
/* Add code to handle incomming data (remember, interrupts are still active) */ //
} //

/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
//

right after /* Add your own autonomous code here. */, it appears that you have a floating bracket. I’ll keep looking for more errors though.

edit: couldn’t find anymore. hope this fixes your problem!

i fixed all the braces but after i fixed it i got the old errors back ill download a new code from kevin.org and change it again i might of messed up on something

You did change…
void Process_Data_From_Local_IO(void) //}
{ //}
/* Add code here that you want to be executed every program loop. */ //}
; //}
} //}

to

void Process_Data_From_Local_IO(void)
{
}

because there is a crap load of garbage in the one you had, how did that get like that?

i found it online it was made by kevin

ok i got all the brace problems fixed thanks for your help

but i got one more problem
i get:

Error - Could not find linker command file ‘18f8722.lkr’.
Errors : 1

that one’s a lot more complicated, and i believe there are other threads involving that one (if this doesn’t work). in MPlab, if you go to Project --> Build Options --> Project it should pop up a menu. There’s a line that says
“Linker-Script Path, $(LKRDIR)”
make sure that one’s either blank or that it points to a folder in C:–>Program Files --> Microchip -->MPasm Suite–>LKR
there’s also one for
“Library Path, $(LIBDIR)”
and make sure that says (unless you changed stuff in the setup):
“C:\mcc18\lib”

try all that