R8C/L3AA Uart2 received wrong data

Hi, i'm using L3AA chip and trying to receive data from computer by Uart2. However  it always receive 'ff'.
Is there something wrong with my Uart2 setting?or my clock speed is slow so t cause data lost? below are my setting. or anyone have sample code of Uart?

void rs232c_start(UC baud_rate)
{
INT_DISABLE();

rxd2_no=0; 

sfr_ctrl_uart2_init(baud_rate);

ir_s2ric = 0; 

sfr_ctrl_int_set((UC *)&INT_UART2_RX, 02);

re_u2c1 = 1; // Enable reception in UART2

INT_ENABLE();
}

void sfr_ctrl_uart2_init(UC baud_rate)
{


// UART2 Transmit/Receive Control Register 1 (U2C1)
te_u2c1 = 0; // TX Disable
re_u2c1 = 0; // RX Disable
u2irs_u2c1 = 1; // UART2 TX interrupt source - TXEPT
u2rrm_u2c1 = 0; // Continuous receive mode disabled

// UART2 Pin Select Register 0 (U2SR0)
txd2sel0_u2sr0 = 1; // 01: P11_2 for TXD2
txd2sel1_u2sr0 = 0;
rxd2sel0_u2sr0 = 1; // 01: P11_1 for RXD2
rxd2sel1_u2sr0 = 0;

// UART2 Transmit/Receive Mode Register (U2MR)
smd0_u2mr = 1; // Serial I/O mode select - UART mode, transfer data 8 bits long
smd1_u2mr = 0;
smd2_u2mr = 1;
ckdir_u2mr = 0; // Internal clock selected
stps_u2mr = 1; // Stop Bit Length = 2
prye_u2mr = 0; // Parity disabled
iopol_u2mr = 0;

df2en = 0; //RXD2 digital filter disable

// UART2 Transmit/Receive Control Register 0 (U2C0)
clk0_u2c0 = 0; // U2BRG count source select bit - f1 selected
clk1_u2c0 = 0;
crd_u2c0 = 1; // CTS/RTS function disabled
nch_u2c0 = 0; // Data output select bit - CMOS output
ckpol_u2c0 = 0; // CLK Polarity select bit - TX on falling edge, RX on rising edge
uform_u2c0 = 0; // Transfer format select bit - LSB first

// UART2 Bit Rate Register (U2BRG)
u2brg = baud_rate; // Bit Rate Register

// UART2 TX Interrupt Control Register
ilvl0_s2tic = 0;
ilvl1_s2tic = 0;
ilvl2_s2tic = 0;

// UART2 RX Interrupt Control Register
ilvl0_s2ric = 0;
ilvl1_s2ric = 0;
ilvl2_s2ric = 0;

}

void sfr_ctrl_int_set(UC *int_regster, UC int_level)
{

UC *regster_ptr;

regster_ptr = int_regster;
*regster_ptr = int_level;

}

when interrupt is trigger below function will store the data

pc_mode_uart2_rx_data_get((UC)u2rb);

void pc_mode_uart2_rx_data_get(UC ucRXdata)
{

rxd2_buff[rxd2_addr] = ucRXdata; // Get the RX Data
if (rxd2_addr < 15) // Data storing address
{
rxd2_addr++; //
}
else //
{
rxd2_addr=0; //
}

rxd2_no++; // New Data Received

}