Ciao non riesco a capire come mai mi da

main.c: In function '_ADCInterrupt':
main.c:40: error: syntax error before '>' token

e la riga 40 è evidenziata in rosso

codice:
void _ISR _ADCInterrupt() 
{ //Sintassi della routine di interrupt dell’ADC
int dc, errorIi;
_RD0=1; //Flag per la misura dei tempi di esecuzione. Può essere omesso.
/***************************************************
REGOLATORE DI CORRENTE: metodo dei trapezi
***************************************************/
correnteIp=((CORRENTEP-OFFSET_I))<<3; //riporto la corrente a 12bit
errorI=(riferimentoIp-correnteIp); //calcolo l’errore
//INTEGRALE:
errorIi=errorI_1+errorI; //errore x l’integrale=errore attuale + errore precedente

if((errorIi>=0)) integraleIp+=INTEGRALEI((errorIi));

else integraleIp-=INTEGRALEI((-errorIi));
//PROPORZIONALE:
vd_out=PROPORZIONALEI((errorI))+(int)(integraleIp >> 12);
if (vd_out > VDUP) vd_out=VDUP;
else {
if(vd_out < VDDW) vd_out=VDDW;
}
/***************************************************
USCITA riportata sul DC
***************************************************/
vd_out+=V_OFFSET; //porto il valore da 0 a 8191 (->13bit)
dc=GET_DC(vd_out);
if(dc>DCUP) dc=DCUP; //Controllo precauzionale sul DC
else if(dc<DCDW) dc=DCDW;
PDC2=dc;
PDC1=DUTYCYM-dc;
/***********************************************
TRATTAMENTO FINALE DELLE VARIABILI
***********************************************/
if(integraleIp>TKIUPI) integraleIp=TKIUPI;
else if(integraleIp<TKIDWI) integraleIp=TKIDWI;
errorI_1=errorI;
_ADIF=0;
_RD0=0;
_RD0=0; //Flag per la misura dei tempi di esecuzione. Può essere omesso.
}
grazie
Cencia