C

Qt Quick Ultralite Automotive Cluster Demo

/*===========================================================================*/
/* PROJECT = STANDARD PORTS DRIVER                                           */
/*****************************************************************************/
/*                                  COPYRIGHT                                */
/*===========================================================================*/
/* Copyright (c) 2013 by Renesas Electronics Europe GmbH,                    */
/*               a company of the Renesas Electronics Corporation            */
/*===========================================================================*/
/*===========================================================================*/
/* In case of any question please do not hesitate to contact:                */
/*                                                                           */
/*        ABG.Support                                                        */
/*                                                                           */
/*        Renesas Electronics Europe GmbH                                    */
/*        Arcadiastrasse 10                                                  */
/*        D-40472 Duesseldorf, Germany                                       */
/*                                                                           */
/*        e-mail: device_support.rl78-eu@lm.renesas.com                      */
/*        FAX:   +49 - (0)211 / 65 03 - 12 79                                */
/*                                                                           */
/*===========================================================================*/
/* Warranty Disclaimer                                                       */
/*                                                                           */
/* Because the Product(s) is licensed free of charge, there is no warranty   */
/* of any kind whatsoever and expressly disclaimed and excluded by Renesas,  */
/* either expressed or implied, including but not limited to those for       */
/* non-infringement of intellectual property, merchantability and/or         */
/* fitness for the particular purpose.                                       */
/* Renesas shall not have any obligation to maintain, service or provide bug */
/* fixes for the supplied Product(s) and/or the Application.                 */
/*                                                                           */
/* Each User is solely responsible for determining the appropriateness of    */
/* using the Product(s) and assumes all risks associated with its exercise   */
/* of rights under this Agreement, including, but not limited to the risks   */
/* and costs of program errors, compliance with applicable laws, damage to   */
/* or loss of data, programs or equipment, and unavailability or             */
/* interruption of operations.                                               */
/*                                                                           */
/* Limitation of Liability                                                   */
/*                                                                           */
/* In no event shall Renesas be liable to the User for any incidental,       */
/* consequential, indirect, or punitive damage (including but not limited    */
/* to lost profits) regardless of whether such liability is based on breach  */
/* of contract, tort, strict liability, breach of warranties, failure of     */
/* essential purpose or otherwise and even if advised of the possibility of  */
/* such damages. Renesas shall not be liable for any services or products    */
/* provided by third party vendors, developers or consultants identified or  */
/* referred to the User by Renesas in connection with the Product(s) and/or  */
/* the Application.                                                          */
/*                                                                           */
/*===========================================================================*/

#define DRIVER_LOCAL

#include <ree_types.h>

#ifdef VLIB
#include <config_afcan.h>

#else
#include <map_ports.h>
#endif

//=============================================================================
// FunctionName: PORT_GetStatus
// IN  :         Port Number, Bit Spec
// OUT :         Error Flag
//               Port Direction, Peri. Mode, Alt. Mode (by reference)
// Description : Get Port Modes and Direction
//
//=============================================================================

bit PORT_GetStatus( u16  PortNumber_u16,
                    u16  BitSpecification_u16,
                    pu08 PortDirection_pu08,
                    pu08 PeripheralMode_pu08,
                    pu08 AlternateFunction_pu08 )
{
    switch ( PortNumber_u16 )
    {
#ifdef PORT_NUMERIC
#ifdef PORT_0
        case PORT_0:
            if ( ( port_mode_numeric_p->pm0 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm0 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc0 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc0 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc0 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc0 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce0 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae0 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_1
        case PORT_1:
            if ( ( port_mode_numeric_p->pm1 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm1 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc1 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc1 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc1 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc1 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce1 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae1 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_2
        case PORT_2:
            if ( ( port_mode_numeric_p->pm2 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm2 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc2 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc2 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc2 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc2 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce2 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae2 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_3
        case PORT_3:
            if ( ( port_mode_numeric_p->pm3 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm3 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc3 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc3 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc3 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc3 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce3 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae3 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_4
        case PORT_4:
            if ( ( port_mode_numeric_p->pm4 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm4 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc4 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc4 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc4 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc4 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce4 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae4 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_5
        case PORT_5:
            if ( ( port_mode_numeric_p->pm5 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm5 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc5 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc5 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc5 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc5 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce5 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae5 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_6
        case PORT_6:
            if ( ( port_mode_numeric_p->pm6 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm6 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc6 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc6 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc6 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc6 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce6 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae6 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_7
        case PORT_7:
            if ( ( port_mode_numeric_p->pm7 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm7 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc7 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc7 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc7 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc7 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce7 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae7 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_8
        case PORT_8:
            if ( ( port_mode_numeric_p->pm8 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm8 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc8 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc8 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc8 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc8 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce8 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae8 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_9
        case PORT_9:
            if ( ( port_mode_numeric_p->pm9 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm9 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc9 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc9 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc9 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc9 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce9 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae9 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_10
        case PORT_10:
            if ( ( port_mode_numeric_p->pm10 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm10 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc10 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc10 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc10 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc10 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce10 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae10 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_11
        case PORT_11:
            if ( ( port_mode_numeric_p->pm11 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm11 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc11 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc11 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc11 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc11 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce11 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae11 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_12
        case PORT_12:
            if ( ( port_mode_numeric_p->pm12 & BitSpecification_u16 ) ==
                                              BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm12 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc12 & BitSpecification_u16 ) ==
                                                       BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc12 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc12 & BitSpecification_u16 ) ==
                                                           BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc12 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce12 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae12 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_13
        case PORT_13:
            if ( ( port_mode_numeric_p->pm13 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm13 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc13 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc13 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc13 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc13 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce13 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae13 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif

#ifdef PORT_14
        case PORT_14:
            if ( ( port_mode_numeric_p->pm14 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm14 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc14 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc14 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc14 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc14 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce14 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae14 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_15
        case PORT_15:
            if ( ( port_mode_numeric_p->pm15 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm15 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc15 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc15 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc15 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc15 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce15 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae15 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_16
        case PORT_16:
            if ( ( port_mode_numeric_p->pm16 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm16 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc16 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc16 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc16 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc16 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce16 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae16 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#ifdef PORT_17
        case PORT_17:
            if ( ( port_mode_numeric_p->pm17 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm17 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc17 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc17 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc17 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc17 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce17 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae17 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif

#ifdef PORT_20
        case PORT_20:
            if ( ( port_mode_numeric_p->pm20 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm20 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc20 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc20 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc20 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc20 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce20 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae20 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif

#ifdef PORT_22
        case PORT_22:
            if ( ( port_mode_numeric_p->pm22 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm22 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc22 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc22 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc22 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc22 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce22 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae22 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif

#ifdef PORT_24
        case PORT_24:
            if ( ( port_mode_numeric_p->pm24 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm24 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc24 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc24 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc24 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc24 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce24 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae24 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif

#ifdef PORT_25
        case PORT_25:
            if ( ( port_mode_numeric_p->pm25 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm25 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc25 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc25 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc25 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc25 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce25 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae25 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif

#ifdef PORT_29
        case PORT_29:
            if ( ( port_mode_numeric_p->pm29 & BitSpecification_u16 ) ==
                                               BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_numeric_p->pm29 & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_numeric_p->pmc29 & BitSpecification_u16 ) ==
                                                        BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_numeric_p->pmc29 & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            if ( ( port_function_control_numeric_p->pfc29 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_ALTERN;
            else if ( ( port_function_control_numeric_p->pfc29 & BitSpecification_u16 ) == 0 )
                 *AlternateFunction_pu08 = PORT_FUNCTION_NORMAL;
            else *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
            if ( ( port_function_control2_numeric_p->pfce29 & BitSpecification_u16 ) ==
                                                             BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN2;
#endif
#if( N_PORT_FUNCLEVELS > 3 )
            if ( ( port_function_control4_numeric_p->pfcae29 & BitSpecification_u16 ) ==
                                                            BitSpecification_u16 )
                 *AlternateFunction_pu08 |= PORT_FUNCTION_ALTERN4;
#endif
#endif
            break;
#endif
#endif

#ifdef PORT_ALPHA
#ifdef PORT_DL
        case PORT_DL:
            if ( ( port_mode_alpha_p->pmdl & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmdl & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmcdl & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmcdl & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_DH
        case PORT_DH:
            if ( ( port_mode_alpha_p->pmdh & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmdh & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmcdh & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmcdh & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_AL
        case PORT_AL:
            if ( ( port_mode_alpha_p->pmal & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmal & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmcal & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmcal & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_AH
        case PORT_AH:
            if ( ( port_mode_alpha_p->pmah & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmah & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmcah & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmcah & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_CS
        case PORT_CS:
            if ( ( port_mode_alpha_p->pmcs & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmcs & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmccs & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmccs & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_CT
        case PORT_CT:
            if ( ( port_mode_alpha_p->pmct & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmct & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmcct & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmcct & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_CM
        case PORT_CM:
            if ( ( port_mode_alpha_p->pmcm & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmcm & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmccm & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmccm & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#ifdef PORT_CD
        case PORT_CD:
            if ( ( port_mode_alpha_p->pmcd & BitSpecification_u16 ) ==
                                             BitSpecification_u16 )
                 *PortDirection_pu08 = PORT_DIR_INPUT;
            else if ( ( port_mode_alpha_p->pmcd & BitSpecification_u16 ) == 0 )
                 *PortDirection_pu08 = PORT_DIR_OUTPUT;
            else *PortDirection_pu08 = PORT_DIR_KEEP;
            if ( ( port_mode_control_alpha_p->pmccd & BitSpecification_u16 ) ==
                                                      BitSpecification_u16 )
                 *PeripheralMode_pu08 = PORT_MODE_PERIPHERAL;
            else if ( ( port_mode_control_alpha_p->pmccd & BitSpecification_u16 ) == 0 )
                 *PeripheralMode_pu08 = PORT_MODE_IO;
            else *PeripheralMode_pu08 = PORT_MODE_KEEP;
            *AlternateFunction_pu08 = PORT_FUNCTION_KEEP;
            break;
#endif
#endif
        default:
            return( PORT_ERROR );

    } // end switch ( PortNumber_u16 )

    return( PORT_OK );

}

//=============================================================================
// FunctionName: PORT_Enable
// IN  :         Port Number, Bit Spec, Port Direction, Peri. Mode, Alt. Mode
// OUT :         Error Flag
// Description : Set Port to Mode and Direction
//
//=============================================================================

bit PORT_Enable( u16 PortNumber_u16,
                 u16 BitSpecification_u16,
                 u08 PortDirection_u08,
                 u08 PeripheralMode_u08,
                 u08 AlternateFunction_u08 )
{
    switch( PortNumber_u16 )
    {
#ifdef PORT_NUMERIC
#ifdef PORT_0
        case PORT_0:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc0 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc0 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc0 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce0 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae0 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc0 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce0 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae0 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm0 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm0 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_1
        case PORT_1:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc1 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc1 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc1 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce1 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae1 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc1 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce1 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae1 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm1 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm1 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_2
        case PORT_2:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc2 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc2 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc2 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce2 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae2 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc2 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce2 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae2 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm2 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm2 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_3
        case PORT_3:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc3 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc3 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc3 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce3 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae3 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc3 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce3 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae3 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm3 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm3 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_4
        case PORT_4:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc4 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc4 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc4 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce4 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae4 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc4 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce4 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae4 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm4 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm4 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_5
        case PORT_5:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc5 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc5 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc5 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce5 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae5 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc5 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce5 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae5 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm5 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm5 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_6
        case PORT_6:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc6 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc6 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc6 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce6 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae6 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc6 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce6 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae6 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm6 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm6 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_7
        case PORT_7:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc7 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc7 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc7 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce7 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae7 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc7 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce7 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae7 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm7 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm7 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_8
        case PORT_8:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc8 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc8 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc8 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce8 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae8 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc8 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce8 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae8 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm8 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm8 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_9
        case PORT_9:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc9 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc9 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc9 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce9 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae9 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc9 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce9 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae9 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm9 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm9 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_10
        case PORT_10:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc10 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc10 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc10 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce10 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae10 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc10 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce10 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae10 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm10 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm10 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_11
        case PORT_11:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc11 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc11 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc11 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce11 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae11 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc11 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce11 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae11 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm11 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm11 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_12
        case PORT_12:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc12 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc12 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc12 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce12 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae12 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc12 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce12 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae12 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm12 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm12 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_13
        case PORT_13:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc13 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc13 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc13 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce13 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae13 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc13 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce13 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae13 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm13 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm13 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_14
        case PORT_14:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc14 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc14 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc14 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce14 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae14 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc14 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce14 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae14 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm14 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm14 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_15
        case PORT_15:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc15 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc15 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc15 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce15 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae15 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc15 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce15 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae15 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm15 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm15 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_16
        case PORT_16:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc16 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc16 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc16 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce16 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae16 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc16 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce16 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae16 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm16 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm16 |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_17
        case PORT_17:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc17 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc17 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc17 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce17 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae17 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc17 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce17 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae17 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm17 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm17 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_20
        case PORT_20:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc20 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc20 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc20 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce20 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae20 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc20 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce20 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae20 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm20 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm20 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_22
        case PORT_22:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc22 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc22 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc22 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce22 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae22 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc22 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce22 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae22 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm22 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm22 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_24
        case PORT_24:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc24 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc24 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc24 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce24 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae24 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc24 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce24 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae24 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm24 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm24 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_25
        case PORT_25:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc25 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc25 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc25 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce25 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae25 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc25 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce25 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae25 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm25 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm25 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_29
        case PORT_29:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc29 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc29 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc29 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce29 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae29 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc29 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce29 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae29 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm29 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm29 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_32
        case PORT_32:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc32 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc32 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc32 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce32 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae32 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc32 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce32 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae32 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm32 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm32 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_33
        case PORT_33:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc33 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc33 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc33 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce33 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae33 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc33 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce33 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae33 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm33 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm33 |=
                       BitSpecification_u16;
            }
            break;
#endif

#ifdef PORT_34
        case PORT_34:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_numeric_p->pmc34 &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_numeric_p->pmc34 |=
                       BitSpecification_u16;
            }
            if ( AlternateFunction_u08 == PORT_FUNCTION_KEEP )
              {
              }
            else if ( AlternateFunction_u08 == PORT_FUNCTION_NORMAL )
              {
                port_function_control_numeric_p->pfc34 &=
                    ~( BitSpecification_u16 );
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                port_function_control2_numeric_p->pfce34 &=
                    ~( BitSpecification_u16 );
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                port_function_control4_numeric_p->pfcae34 &=
                    ~( BitSpecification_u16 );
#endif
#endif
              }
            else
              {
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN )
                  {
                    port_function_control_numeric_p->pfc34 |=
                      BitSpecification_u16;
                  }
#ifdef N_PORT_FUNCLEVELS
#if( N_PORT_FUNCLEVELS > 2 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN2 )
                  {
                    port_function_control2_numeric_p->pfce34 |=
                      BitSpecification_u16;
                  }
#endif
#if( N_PORT_FUNCLEVELS > 3 )
                if ( AlternateFunction_u08 & PORT_FUNCTION_ALTERN4 )
                  {
                    port_function_control4_numeric_p->pfcae34 |=
                      BitSpecification_u16;
                  }
#endif
#endif
              }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_numeric_p->pm34 &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_numeric_p->pm34 |=
                       BitSpecification_u16;
            }
            break;
#endif

#endif

#ifdef PORT_ALPHA
#ifdef PORT_DL
        case PORT_DL:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmcdl &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmcdl |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmdl &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmdl |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_DH
        case PORT_DH:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmcdh &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmcdh |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmdh &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmdh |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_AL
        case PORT_AL:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmcal &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmcal |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmal &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmal |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_AH
        case PORT_AH:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmcah &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmcah |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmah &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmah |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_CS
        case PORT_CS:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmccs &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmccs |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmcs &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmcs |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_CT
        case PORT_CT:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmcct &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmcct |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmct &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmct |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_CM
        case PORT_CM:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmccm &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmccm |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmcm &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmcm |=
                       BitSpecification_u16;
            }
            break;
#endif
#ifdef PORT_CD
        case PORT_CD:
            if ( PeripheralMode_u08 == PORT_MODE_IO )
                port_mode_control_alpha_p->pmccd &=
                    ~( BitSpecification_u16 );
            else if ( PeripheralMode_u08 == PORT_MODE_PERIPHERAL )
            {
                port_mode_control_alpha_p->pmccd |=
                       BitSpecification_u16;
            }
            if ( PortDirection_u08 == PORT_DIR_OUTPUT )
                port_mode_alpha_p->pmcd &=
                    ~( BitSpecification_u16 );
            else if ( PortDirection_u08 == PORT_DIR_INPUT )
            {
                port_mode_alpha_p->pmcd |=
                       BitSpecification_u16;
            }
            break;
#endif
#endif
        case PORT_NOPORT:
            return( PORT_OK );

        default:
            return( PORT_ERROR );

    }

    return( PORT_OK );

}

//=============================================================================
// FunctionName: PORT_PortDisable
// IN  :         Port Number
// OUT :         Error Flag
// Description : Set Port to Input Mode, Keep other settings
//
//=============================================================================

bit PORT_Disable( u16 PortNumber_u16,
                  u16 BitSpecification_u16 )
{
    return( PORT_Enable( PortNumber_u16,
                         BitSpecification_u16,
                         PORT_DIR_INPUT,
                         PORT_MODE_IO,
                         PORT_FUNCTION_KEEP ) );
}

//=============================================================================
// FunctionName: PORT_Write
// IN  :         Port Number, Port Data
// OUT :         Error Flag
// Description : Write Data to Port
//
//=============================================================================

bit PORT_Write( u16 PortNumber_u16,
                u16 PortData_u16 )
{
    switch( PortNumber_u16 )
    {
#ifdef PORT_NUMERIC
#ifdef PORT_0
        case PORT_0:
            port_numeric_p->p0 = PortData_u16;
            break;
#endif
#ifdef PORT_1
        case PORT_1:
            port_numeric_p->p1 = PortData_u16;
            break;
#endif
#ifdef PORT_2
        case PORT_2:
            port_numeric_p->p2 = PortData_u16;
            break;
#endif
#ifdef PORT_3
        case PORT_3:
            port_numeric_p->p3 = PortData_u16;
            break;
#endif
#ifdef PORT_4
        case PORT_4:
            port_numeric_p->p4 = PortData_u16;
            break;
#endif
#ifdef PORT_5
        case PORT_5:
            port_numeric_p->p5 = PortData_u16;
            break;
#endif
#ifdef PORT_6
        case PORT_6:
            port_numeric_p->p6 = PortData_u16;
            break;
#endif
#ifdef PORT_7
        case PORT_7:
            port_numeric_p->p7 = PortData_u16;
            break;
#endif
#ifdef PORT_8
        case PORT_8:
            port_numeric_p->p8 = PortData_u16;
            break;
#endif
#ifdef PORT_9
        case PORT_9:
            port_numeric_p->p9 = PortData_u16;
            break;
#endif
#ifdef PORT_10
        case PORT_10:
            port_numeric_p->p10 = PortData_u16;
            break;
#endif
#ifdef PORT_11
        case PORT_11:
            port_numeric_p->p11 = PortData_u16;
            break;
#endif
#ifdef PORT_12
        case PORT_12:
            port_numeric_p->p12 = PortData_u16;
            break;
#endif
#ifdef PORT_13
        case PORT_13:
            port_numeric_p->p13 = PortData_u16;
            break;
#endif
#ifdef PORT_14
        case PORT_14:
            port_numeric_p->p14 = PortData_u16;
            break;
#endif
#ifdef PORT_15
        case PORT_15:
            port_numeric_p->p15 = PortData_u16;
            break;
#endif
#ifdef PORT_16
        case PORT_16:
            port_numeric_p->p16 = PortData_u16;
            break;
#endif
#ifdef PORT_17
        case PORT_17:
            port_numeric_p->p17 = PortData_u16;
            break;
#endif
#ifdef PORT_20
        case PORT_20:
            port_numeric_p->p20 = PortData_u16;
            break;
#endif
#ifdef PORT_24
        case PORT_24:
            port_numeric_p->p24 = PortData_u16;
            break;
#endif
#ifdef PORT_25
        case PORT_25:
            port_numeric_p->p25 = PortData_u16;
            break;
#endif
#ifdef PORT_29
        case PORT_29:
            port_numeric_p->p29 = PortData_u16;
            break;
#endif
#ifdef PORT_32
        case PORT_32:
            port_numeric_p->p32 = PortData_u16;
            break;
#endif
#ifdef PORT_33
        case PORT_33:
            port_numeric_p->p33 = PortData_u16;
            break;
#endif
#ifdef PORT_34
        case PORT_34:
            port_numeric_p->p34 = PortData_u16;
            break;
#endif
#endif

#ifdef PORT_ALPHA
#ifdef PORT_DL
        case PORT_DL:
            port_alpha_p->pdl = PortData_u16;
            break;
#endif
#ifdef PORT_DH
        case PORT_DH:
            port_alpha_p->pdh = PortData_u16;
            break;
#endif
#ifdef PORT_AL
        case PORT_AL:
            port_alpha_p->pal = PortData_u16;
            break;
#endif
#ifdef PORT_AH
        case PORT_AH:
            port_alpha_p->pah = PortData_u16;
            break;
#endif
#ifdef PORT_CS
        case PORT_CS:
            port_alpha_p->pcs = PortData_u16;
            break;
#endif
#ifdef PORT_CT
        case PORT_CT:
            port_alpha_p->pct = PortData_u16;
            break;
#endif
#ifdef PORT_CM
        case PORT_CM:
            port_alpha_p->pcm = PortData_u16;
            break;
#endif
#ifdef PORT_CD
        case PORT_CD:
            port_alpha_p->pcd = PortData_u16;
            break;
#endif
#endif
        default:
            return( PORT_ERROR );

    }

    return( PORT_OK );
}

//=============================================================================
// FunctionName: PORT_Read
// IN  :         Port Number
// OUT :         Error Flag
//               Port Data (by pointer reference)
// Description : Read Data from Port
//
//=============================================================================

bit PORT_Read( u16  PortNumber_u16,
               pu16 PortData_pu16 )
{
    switch( PortNumber_u16 )
    {
#ifdef PORT_NUMERIC
#ifdef PORT_0
        case PORT_0:
            *PortData_pu16 = port_numeric_p->p0;
            break;
#endif
#ifdef PORT_1
        case PORT_1:
            *PortData_pu16 = port_numeric_p->p1;
            break;
#endif
#ifdef PORT_2
        case PORT_2:
            *PortData_pu16 = port_numeric_p->p2;
            break;
#endif
#ifdef PORT_3
        case PORT_3:
            *PortData_pu16 = port_numeric_p->p3;
            break;
#endif
#ifdef PORT_4
        case PORT_4:
            *PortData_pu16 = port_numeric_p->p4;
            break;
#endif
#ifdef PORT_5
        case PORT_5:
            *PortData_pu16 = port_numeric_p->p5;
            break;
#endif
#ifdef PORT_6
        case PORT_6:
            *PortData_pu16 = port_numeric_p->p6;
            break;
#endif
#ifdef PORT_7
        case PORT_7:
            *PortData_pu16 = port_numeric_p->p7;
            break;
#endif
#ifdef PORT_8
        case PORT_8:
            *PortData_pu16 = port_numeric_p->p8;
            break;
#endif
#ifdef PORT_9
        case PORT_9:
            *PortData_pu16 = port_numeric_p->p9;
            break;
#endif
#ifdef PORT_10
        case PORT_10:
            *PortData_pu16 = port_numeric_p->p10;
            break;
#endif
#ifdef PORT_11
        case PORT_11:
            *PortData_pu16 = port_numeric_p->p11;
            break;
#endif
#ifdef PORT_12
        case PORT_12:
            *PortData_pu16 = port_numeric_p->p12;
            break;
#endif
#ifdef PORT_13
        case PORT_13:
            *PortData_pu16 = port_numeric_p->p13;
            break;
#endif
#ifdef PORT_14
        case PORT_14:
            *PortData_pu16 = port_numeric_p->p14;
            break;
#endif
#ifdef PORT_15
        case PORT_15:
            *PortData_pu16 = port_numeric_p->p15;
            break;
#endif
#ifdef PORT_16
        case PORT_16:
            *PortData_pu16 = port_numeric_p->p16;
            break;
#endif
#ifdef PORT_17
        case PORT_17:
            *PortData_pu16 = port_numeric_p->p17;
            break;
#endif
#ifdef PORT_20
        case PORT_20:
            *PortData_pu16 = port_numeric_p->p20;
            break;
#endif
#ifdef PORT_24
        case PORT_24:
            *PortData_pu16 = port_numeric_p->p24;
            break;
#endif
#ifdef PORT_25
        case PORT_25:
            *PortData_pu16 = port_numeric_p->p25;
            break;
#endif
#ifdef PORT_29
        case PORT_29:
            *PortData_pu16 = port_numeric_p->p29;
            break;
#endif
#ifdef PORT_32
        case PORT_32:
            *PortData_pu16 = port_numeric_p->p32;
            break;
#endif
#ifdef PORT_33
        case PORT_33:
            *PortData_pu16 = port_numeric_p->p33;
            break;
#endif
#ifdef PORT_34
        case PORT_34:
            *PortData_pu16 = port_numeric_p->p34;
            break;
#endif
#endif

#ifdef PORT_ALPHA
#ifdef PORT_DL
        case PORT_DL:
            *PortData_pu16 = port_alpha_p->pdl;
            break;
#endif
#ifdef PORT_DH
        case PORT_DH:
            *PortData_pu16 = port_alpha_p->pdh;
            break;
#endif
#ifdef PORT_AL
        case PORT_AL:
            *PortData_pu16 = port_alpha_p->pal;
            break;
#endif
#ifdef PORT_AH
        case PORT_AH:
            *PortData_pu16 = port_alpha_p->pah;
            break;
#endif
#ifdef PORT_CS
        case PORT_CS:
            *PortData_pu16 = port_alpha_p->pcs;
            break;
#endif
#ifdef PORT_CT
        case PORT_CT:
            *PortData_pu16 = port_alpha_p->pct;
            break;
#endif
#ifdef PORT_CM
        case PORT_CM:
            *PortData_pu16 = port_alpha_p->pcm;
            break;
#endif
#ifdef PORT_CD
        case PORT_CD:
            *PortData_pu16 = port_alpha_p->pcd;
            break;
#endif
#endif
        default:
            return( PORT_ERROR );

    }

    return( PORT_OK );
}

//=============================================================================
// FunctionName: PORT_WriteBit
// IN  :         Port Number, Bit Specification, Bit Value
// OUT :         Error Flag
// Description : Write Bit to Port
//
//=============================================================================

bit PORT_WriteBit( u16 PortNumber_u16,
                   u16 BitSpecification_u16,
                   u16 BitValue_u16 )
{
  bit StatusValue_bit = PORT_OK;
  u16 PortValue_u16;

  StatusValue_bit = PORT_Read( PortNumber_u16, &PortValue_u16 );

  if( StatusValue_bit == PORT_OK )
  {
    if( BitValue_u16 )
    {
      PortValue_u16 = PortValue_u16 | BitSpecification_u16;
    }
    else
    {
      PortValue_u16 = PortValue_u16 & ( ~ ( BitSpecification_u16 ) );
    }
    PORT_Write( PortNumber_u16, PortValue_u16 );
  }
  return( StatusValue_bit );
}

//=============================================================================
// FunctionName: PORT_ReadBit
// IN  :         Port Number, Bit Specification, Bit Value
// OUT :         Error Flag
// Description : Read Bit from Port
//
//=============================================================================

bit PORT_ReadBit( u16  PortNumber_u16,
                  u16  BitSpecification_u16,
                  pu16 BitValue_pu16 )
{
  bit StatusValue_bit = PORT_OK;
  u16 PortValue_u16;

  StatusValue_bit = PORT_Read( PortNumber_u16, &PortValue_u16 );

  if( StatusValue_bit == PORT_OK )
  {
    *BitValue_pu16 = PortValue_u16 & BitSpecification_u16;
  }
  return( StatusValue_bit );
}

//=============================================================================
// FunctionName: PORT_Oscillator_Switch_Setup
// IN  :         Port Number
// OUT :         Error Flag
//               Port Data (by pointer reference)
// Description : Set up wished port as indicator of oscillator frequency
//
//=============================================================================

bit PORT_Oscillator_Switch_Setup( )
{
#ifdef OSC_PORT

    switch( OSC_PORT )
    {
#ifdef PORT_NUMERIC
#ifdef PORT_CT
        case PORT_CT:
            port_mode_alpha_p->pmct = 0xFF;
                        port_mode_control_alpha_p->pmcct = 0x00;
                        return( PORT_OK );
            break;
#endif
#endif
        default:
            return( PORT_ERROR );

    }

#endif
    return( PORT_OK );
}