/* Set the slave address of the specified I2C port. 
The  */
void I2CSlaveOwnAddressSet(unsigned long ulBase, unsigned char ucSlaveNum, unsigned char ucSlaveAddr, unsigned long ulGeneralCall)
/* Set the slave address of the specified I2C port. 
The  */
void I2CSlaveOwnAddressSet(unsigned long ulBase, unsigned char ucSlaveNum, unsigned char ucSlaveAddr, unsigned long ulGeneralCall)
{
    unsigned long ulTemp[4] = {0x04, 0x18, 0x1C, 0x20};
    xASSERT((ulBase == I2C0_BASE) || (ulBase == I2C1_BASE));
    xASSERT((ucSlaveNum == 0) || (ucSlaveNum == 1) ||
            (ucSlaveNum == 2) || (ucSlaveNum == 3));
    xASSERT((ulGeneralCall == I2C_GENERAL_CALL_EN) || 
            (ulGeneralCall == I2C_GENERAL_CALL_DIS));    
    xHWREG(ulBase + ulTemp[ucSlaveNum]) |= ((ucSlaveAddr << 1) |
                                            ulGeneralCall);
}