How to manage Interupt?

Dear All.

I have problem when using interupt…
this is my code:

void main()
{
RCM33xxInit();
serCopen(9600);

SendFinish = 0;
SetVectIntern(0x0E,SerialCISR);

WatchDog = VdGetFreeWd(132);

while(1){
VdHitWd( WatchDog );
costate{
wfd Branch();
}

}
}

cofunc void Branch(){
.
.
.
wfd BranchPooling(SendPackage,ReturnPackage,Branch0);

}

cofunc void BranchPooling(Command *Data,ETOP_Thermostats *Result,BYTE BranchNumber){
.
.
.
SendDataBranch0(9600,PARAM_OPARITY,&send,8);

}

void SendDataBranch0(WORD BAUNDRATE,BYTE Parity,WORD *Data,BYTE Length){

BYTE bDataVal;
BYTE bDataDir;
BYTE buffer[23];
BYTE temp;

bDataVal = BitRdPortI(PFDR,4);

bDataDir = BitRdPortI(PFDDR,4);

/* Set the DE */
BitWrPortI(PFDR,&PFDRShadow,1,4);
BitWrPortI(PFDDR,&PFDDRShadow,1,4);

serCwrFlush();

serCparity(Parity);

/* try to disable interupt when sending byte
/* but not work , SCCR value is 0x01 */
BitWrPortI(SCCR,&SCCRShadow,0,0);

/* ERROR on HERE –> */serCwrite(Data,Length);

while (serCwrFree() != COUTBUFSIZE);
while (BitRdPortI(SCSR, 3) || BitRdPortI(SCSR, 2));

/* Clear the DE */

BitWrPortI(PFDR,&PFDRShadow,bDataVal,4);
BitWrPortI(PFDDR,&PFDDRShadow,bDataDir,4);

}

is serCwrite have relation with interupt?
why i only send only 1 byte (should be 8 byte).

how i could using both serCwrite and interupt system?

Best regards,
Hari