/**
  @Generated Pin Manager Header File

  @Company:
    Microchip Technology Inc.

  @File Name:
    pin_manager.h

  @Summary:
    This is the Pin Manager file generated using PIC10 / PIC12 / PIC16 / PIC18 MCUs

  @Description
    This header file provides APIs for driver for .
    Generation Information :
        Product Revision  :  PIC10 / PIC12 / PIC16 / PIC18 MCUs - 1.76
        Device            :  PIC18F47Q10
        Driver Version    :  2.11
    The generated drivers are tested against the following:
        Compiler          :  XC8 2.00
        MPLAB 	          :  MPLAB X 5.10	
*/

/*
    (c) 2018 Microchip Technology Inc. and its subsidiaries. 
    
    Subject to your compliance with these terms, you may use Microchip software and any 
    derivatives exclusively with Microchip products. It is your responsibility to comply with third party 
    license terms applicable to your use of third party software (including open source software) that 
    may accompany Microchip software.
    
    THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER 
    EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY 
    IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS 
    FOR A PARTICULAR PURPOSE.
    
    IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, 
    INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND 
    WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP 
    HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO 
    THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL 
    CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT 
    OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS 
    SOFTWARE.
*/

#ifndef PIN_MANAGER_H
#define PIN_MANAGER_H

/**
  Section: Included Files
*/

#include <xc.h>

#define INPUT   1
#define OUTPUT  0

#define HIGH    1
#define LOW     0

#define ANALOG      1
#define DIGITAL     0

#define PULL_UP_ENABLED      1
#define PULL_UP_DISABLED     0

// get/set RA0 procedures
#define RA0_SetHigh()            do { LATAbits.LATA0 = 1; } while(0)
#define RA0_SetLow()             do { LATAbits.LATA0 = 0; } while(0)
#define RA0_Toggle()             do { LATAbits.LATA0 = ~LATAbits.LATA0; } while(0)
#define RA0_GetValue()              PORTAbits.RA0
#define RA0_SetDigitalInput()    do { TRISAbits.TRISA0 = 1; } while(0)
#define RA0_SetDigitalOutput()   do { TRISAbits.TRISA0 = 0; } while(0)
#define RA0_SetPullup()             do { WPUAbits.WPUA0 = 1; } while(0)
#define RA0_ResetPullup()           do { WPUAbits.WPUA0 = 0; } while(0)
#define RA0_SetAnalogMode()         do { ANSELAbits.ANSELA0 = 1; } while(0)
#define RA0_SetDigitalMode()        do { ANSELAbits.ANSELA0 = 0; } while(0)

// get/set LED_D2 aliases
#define LED_D2_TRIS                 TRISAbits.TRISA4
#define LED_D2_LAT                  LATAbits.LATA4
#define LED_D2_PORT                 PORTAbits.RA4
#define LED_D2_WPU                  WPUAbits.WPUA4
#define LED_D2_OD                   ODCONAbits.ODCA4
#define LED_D2_ANS                  ANSELAbits.ANSELA4
#define LED_D2_SetHigh()            do { LATAbits.LATA4 = 1; } while(0)
#define LED_D2_SetLow()             do { LATAbits.LATA4 = 0; } while(0)
#define LED_D2_Toggle()             do { LATAbits.LATA4 = ~LATAbits.LATA4; } while(0)
#define LED_D2_GetValue()           PORTAbits.RA4
#define LED_D2_SetDigitalInput()    do { TRISAbits.TRISA4 = 1; } while(0)
#define LED_D2_SetDigitalOutput()   do { TRISAbits.TRISA4 = 0; } while(0)
#define LED_D2_SetPullup()          do { WPUAbits.WPUA4 = 1; } while(0)
#define LED_D2_ResetPullup()        do { WPUAbits.WPUA4 = 0; } while(0)
#define LED_D2_SetPushPull()        do { ODCONAbits.ODCA4 = 0; } while(0)
#define LED_D2_SetOpenDrain()       do { ODCONAbits.ODCA4 = 1; } while(0)
#define LED_D2_SetAnalogMode()      do { ANSELAbits.ANSELA4 = 1; } while(0)
#define LED_D2_SetDigitalMode()     do { ANSELAbits.ANSELA4 = 0; } while(0)

// get/set LED_D3 aliases
#define LED_D3_TRIS                 TRISAbits.TRISA5
#define LED_D3_LAT                  LATAbits.LATA5
#define LED_D3_PORT                 PORTAbits.RA5
#define LED_D3_WPU                  WPUAbits.WPUA5
#define LED_D3_OD                   ODCONAbits.ODCA5
#define LED_D3_ANS                  ANSELAbits.ANSELA5
#define LED_D3_SetHigh()            do { LATAbits.LATA5 = 1; } while(0)
#define LED_D3_SetLow()             do { LATAbits.LATA5 = 0; } while(0)
#define LED_D3_Toggle()             do { LATAbits.LATA5 = ~LATAbits.LATA5; } while(0)
#define LED_D3_GetValue()           PORTAbits.RA5
#define LED_D3_SetDigitalInput()    do { TRISAbits.TRISA5 = 1; } while(0)
#define LED_D3_SetDigitalOutput()   do { TRISAbits.TRISA5 = 0; } while(0)
#define LED_D3_SetPullup()          do { WPUAbits.WPUA5 = 1; } while(0)
#define LED_D3_ResetPullup()        do { WPUAbits.WPUA5 = 0; } while(0)
#define LED_D3_SetPushPull()        do { ODCONAbits.ODCA5 = 0; } while(0)
#define LED_D3_SetOpenDrain()       do { ODCONAbits.ODCA5 = 1; } while(0)
#define LED_D3_SetAnalogMode()      do { ANSELAbits.ANSELA5 = 1; } while(0)
#define LED_D3_SetDigitalMode()     do { ANSELAbits.ANSELA5 = 0; } while(0)

// get/set LED_D5 aliases
#define LED_D5_TRIS                 TRISAbits.TRISA7
#define LED_D5_LAT                  LATAbits.LATA7
#define LED_D5_PORT                 PORTAbits.RA7
#define LED_D5_WPU                  WPUAbits.WPUA7
#define LED_D5_OD                   ODCONAbits.ODCA7
#define LED_D5_ANS                  ANSELAbits.ANSELA7
#define LED_D5_SetHigh()            do { LATAbits.LATA7 = 1; } while(0)
#define LED_D5_SetLow()             do { LATAbits.LATA7 = 0; } while(0)
#define LED_D5_Toggle()             do { LATAbits.LATA7 = ~LATAbits.LATA7; } while(0)
#define LED_D5_GetValue()           PORTAbits.RA7
#define LED_D5_SetDigitalInput()    do { TRISAbits.TRISA7 = 1; } while(0)
#define LED_D5_SetDigitalOutput()   do { TRISAbits.TRISA7 = 0; } while(0)
#define LED_D5_SetPullup()          do { WPUAbits.WPUA7 = 1; } while(0)
#define LED_D5_ResetPullup()        do { WPUAbits.WPUA7 = 0; } while(0)
#define LED_D5_SetPushPull()        do { ODCONAbits.ODCA7 = 0; } while(0)
#define LED_D5_SetOpenDrain()       do { ODCONAbits.ODCA7 = 1; } while(0)
#define LED_D5_SetAnalogMode()      do { ANSELAbits.ANSELA7 = 1; } while(0)
#define LED_D5_SetDigitalMode()     do { ANSELAbits.ANSELA7 = 0; } while(0)

// get/set RB0 procedures
#define RB0_SetHigh()            do { LATBbits.LATB0 = 1; } while(0)
#define RB0_SetLow()             do { LATBbits.LATB0 = 0; } while(0)
#define RB0_Toggle()             do { LATBbits.LATB0 = ~LATBbits.LATB0; } while(0)
#define RB0_GetValue()              PORTBbits.RB0
#define RB0_SetDigitalInput()    do { TRISBbits.TRISB0 = 1; } while(0)
#define RB0_SetDigitalOutput()   do { TRISBbits.TRISB0 = 0; } while(0)
#define RB0_SetPullup()             do { WPUBbits.WPUB0 = 1; } while(0)
#define RB0_ResetPullup()           do { WPUBbits.WPUB0 = 0; } while(0)
#define RB0_SetAnalogMode()         do { ANSELBbits.ANSELB0 = 1; } while(0)
#define RB0_SetDigitalMode()        do { ANSELBbits.ANSELB0 = 0; } while(0)

// get/set BLED1 aliases
#define BLED1_TRIS                 TRISBbits.TRISB1
#define BLED1_LAT                  LATBbits.LATB1
#define BLED1_PORT                 PORTBbits.RB1
#define BLED1_WPU                  WPUBbits.WPUB1
#define BLED1_OD                   ODCONBbits.ODCB1
#define BLED1_ANS                  ANSELBbits.ANSELB1
#define BLED1_SetHigh()            do { LATBbits.LATB1 = 1; } while(0)
#define BLED1_SetLow()             do { LATBbits.LATB1 = 0; } while(0)
#define BLED1_Toggle()             do { LATBbits.LATB1 = ~LATBbits.LATB1; } while(0)
#define BLED1_GetValue()           PORTBbits.RB1
#define BLED1_SetDigitalInput()    do { TRISBbits.TRISB1 = 1; } while(0)
#define BLED1_SetDigitalOutput()   do { TRISBbits.TRISB1 = 0; } while(0)
#define BLED1_SetPullup()          do { WPUBbits.WPUB1 = 1; } while(0)
#define BLED1_ResetPullup()        do { WPUBbits.WPUB1 = 0; } while(0)
#define BLED1_SetPushPull()        do { ODCONBbits.ODCB1 = 0; } while(0)
#define BLED1_SetOpenDrain()       do { ODCONBbits.ODCB1 = 1; } while(0)
#define BLED1_SetAnalogMode()      do { ANSELBbits.ANSELB1 = 1; } while(0)
#define BLED1_SetDigitalMode()     do { ANSELBbits.ANSELB1 = 0; } while(0)

// get/set RB2 procedures
#define RB2_SetHigh()            do { LATBbits.LATB2 = 1; } while(0)
#define RB2_SetLow()             do { LATBbits.LATB2 = 0; } while(0)
#define RB2_Toggle()             do { LATBbits.LATB2 = ~LATBbits.LATB2; } while(0)
#define RB2_GetValue()              PORTBbits.RB2
#define RB2_SetDigitalInput()    do { TRISBbits.TRISB2 = 1; } while(0)
#define RB2_SetDigitalOutput()   do { TRISBbits.TRISB2 = 0; } while(0)
#define RB2_SetPullup()             do { WPUBbits.WPUB2 = 1; } while(0)
#define RB2_ResetPullup()           do { WPUBbits.WPUB2 = 0; } while(0)
#define RB2_SetAnalogMode()         do { ANSELBbits.ANSELB2 = 1; } while(0)
#define RB2_SetDigitalMode()        do { ANSELBbits.ANSELB2 = 0; } while(0)

// get/set BLED2 aliases
#define BLED2_TRIS                 TRISBbits.TRISB3
#define BLED2_LAT                  LATBbits.LATB3
#define BLED2_PORT                 PORTBbits.RB3
#define BLED2_WPU                  WPUBbits.WPUB3
#define BLED2_OD                   ODCONBbits.ODCB3
#define BLED2_ANS                  ANSELBbits.ANSELB3
#define BLED2_SetHigh()            do { LATBbits.LATB3 = 1; } while(0)
#define BLED2_SetLow()             do { LATBbits.LATB3 = 0; } while(0)
#define BLED2_Toggle()             do { LATBbits.LATB3 = ~LATBbits.LATB3; } while(0)
#define BLED2_GetValue()           PORTBbits.RB3
#define BLED2_SetDigitalInput()    do { TRISBbits.TRISB3 = 1; } while(0)
#define BLED2_SetDigitalOutput()   do { TRISBbits.TRISB3 = 0; } while(0)
#define BLED2_SetPullup()          do { WPUBbits.WPUB3 = 1; } while(0)
#define BLED2_ResetPullup()        do { WPUBbits.WPUB3 = 0; } while(0)
#define BLED2_SetPushPull()        do { ODCONBbits.ODCB3 = 0; } while(0)
#define BLED2_SetOpenDrain()       do { ODCONBbits.ODCB3 = 1; } while(0)
#define BLED2_SetAnalogMode()      do { ANSELBbits.ANSELB3 = 1; } while(0)
#define BLED2_SetDigitalMode()     do { ANSELBbits.ANSELB3 = 0; } while(0)

// get/set RC3 procedures
#define RC3_SetHigh()            do { LATCbits.LATC3 = 1; } while(0)
#define RC3_SetLow()             do { LATCbits.LATC3 = 0; } while(0)
#define RC3_Toggle()             do { LATCbits.LATC3 = ~LATCbits.LATC3; } while(0)
#define RC3_GetValue()              PORTCbits.RC3
#define RC3_SetDigitalInput()    do { TRISCbits.TRISC3 = 1; } while(0)
#define RC3_SetDigitalOutput()   do { TRISCbits.TRISC3 = 0; } while(0)
#define RC3_SetPullup()             do { WPUCbits.WPUC3 = 1; } while(0)
#define RC3_ResetPullup()           do { WPUCbits.WPUC3 = 0; } while(0)
#define RC3_SetAnalogMode()         do { ANSELCbits.ANSELC3 = 1; } while(0)
#define RC3_SetDigitalMode()        do { ANSELCbits.ANSELC3 = 0; } while(0)

// get/set RC4 procedures
#define RC4_SetHigh()            do { LATCbits.LATC4 = 1; } while(0)
#define RC4_SetLow()             do { LATCbits.LATC4 = 0; } while(0)
#define RC4_Toggle()             do { LATCbits.LATC4 = ~LATCbits.LATC4; } while(0)
#define RC4_GetValue()              PORTCbits.RC4
#define RC4_SetDigitalInput()    do { TRISCbits.TRISC4 = 1; } while(0)
#define RC4_SetDigitalOutput()   do { TRISCbits.TRISC4 = 0; } while(0)
#define RC4_SetPullup()             do { WPUCbits.WPUC4 = 1; } while(0)
#define RC4_ResetPullup()           do { WPUCbits.WPUC4 = 0; } while(0)
#define RC4_SetAnalogMode()         do { ANSELCbits.ANSELC4 = 1; } while(0)
#define RC4_SetDigitalMode()        do { ANSELCbits.ANSELC4 = 0; } while(0)

// get/set SLED1 aliases
#define SLED1_TRIS                 TRISCbits.TRISC6
#define SLED1_LAT                  LATCbits.LATC6
#define SLED1_PORT                 PORTCbits.RC6
#define SLED1_WPU                  WPUCbits.WPUC6
#define SLED1_OD                   ODCONCbits.ODCC6
#define SLED1_ANS                  ANSELCbits.ANSELC6
#define SLED1_SetHigh()            do { LATCbits.LATC6 = 1; } while(0)
#define SLED1_SetLow()             do { LATCbits.LATC6 = 0; } while(0)
#define SLED1_Toggle()             do { LATCbits.LATC6 = ~LATCbits.LATC6; } while(0)
#define SLED1_GetValue()           PORTCbits.RC6
#define SLED1_SetDigitalInput()    do { TRISCbits.TRISC6 = 1; } while(0)
#define SLED1_SetDigitalOutput()   do { TRISCbits.TRISC6 = 0; } while(0)
#define SLED1_SetPullup()          do { WPUCbits.WPUC6 = 1; } while(0)
#define SLED1_ResetPullup()        do { WPUCbits.WPUC6 = 0; } while(0)
#define SLED1_SetPushPull()        do { ODCONCbits.ODCC6 = 0; } while(0)
#define SLED1_SetOpenDrain()       do { ODCONCbits.ODCC6 = 1; } while(0)
#define SLED1_SetAnalogMode()      do { ANSELCbits.ANSELC6 = 1; } while(0)
#define SLED1_SetDigitalMode()     do { ANSELCbits.ANSELC6 = 0; } while(0)

// get/set SLED2 aliases
#define SLED2_TRIS                 TRISCbits.TRISC7
#define SLED2_LAT                  LATCbits.LATC7
#define SLED2_PORT                 PORTCbits.RC7
#define SLED2_WPU                  WPUCbits.WPUC7
#define SLED2_OD                   ODCONCbits.ODCC7
#define SLED2_ANS                  ANSELCbits.ANSELC7
#define SLED2_SetHigh()            do { LATCbits.LATC7 = 1; } while(0)
#define SLED2_SetLow()             do { LATCbits.LATC7 = 0; } while(0)
#define SLED2_Toggle()             do { LATCbits.LATC7 = ~LATCbits.LATC7; } while(0)
#define SLED2_GetValue()           PORTCbits.RC7
#define SLED2_SetDigitalInput()    do { TRISCbits.TRISC7 = 1; } while(0)
#define SLED2_SetDigitalOutput()   do { TRISCbits.TRISC7 = 0; } while(0)
#define SLED2_SetPullup()          do { WPUCbits.WPUC7 = 1; } while(0)
#define SLED2_ResetPullup()        do { WPUCbits.WPUC7 = 0; } while(0)
#define SLED2_SetPushPull()        do { ODCONCbits.ODCC7 = 0; } while(0)
#define SLED2_SetOpenDrain()       do { ODCONCbits.ODCC7 = 1; } while(0)
#define SLED2_SetAnalogMode()      do { ANSELCbits.ANSELC7 = 1; } while(0)
#define SLED2_SetDigitalMode()     do { ANSELCbits.ANSELC7 = 0; } while(0)

// get/set RD1 procedures
#define RD1_SetHigh()            do { LATDbits.LATD1 = 1; } while(0)
#define RD1_SetLow()             do { LATDbits.LATD1 = 0; } while(0)
#define RD1_Toggle()             do { LATDbits.LATD1 = ~LATDbits.LATD1; } while(0)
#define RD1_GetValue()              PORTDbits.RD1
#define RD1_SetDigitalInput()    do { TRISDbits.TRISD1 = 1; } while(0)
#define RD1_SetDigitalOutput()   do { TRISDbits.TRISD1 = 0; } while(0)
#define RD1_SetPullup()             do { WPUDbits.WPUD1 = 1; } while(0)
#define RD1_ResetPullup()           do { WPUDbits.WPUD1 = 0; } while(0)
#define RD1_SetAnalogMode()         do { ANSELDbits.ANSELD1 = 1; } while(0)
#define RD1_SetDigitalMode()        do { ANSELDbits.ANSELD1 = 0; } while(0)

// get/set RD2 procedures
#define RD2_SetHigh()            do { LATDbits.LATD2 = 1; } while(0)
#define RD2_SetLow()             do { LATDbits.LATD2 = 0; } while(0)
#define RD2_Toggle()             do { LATDbits.LATD2 = ~LATDbits.LATD2; } while(0)
#define RD2_GetValue()              PORTDbits.RD2
#define RD2_SetDigitalInput()    do { TRISDbits.TRISD2 = 1; } while(0)
#define RD2_SetDigitalOutput()   do { TRISDbits.TRISD2 = 0; } while(0)
#define RD2_SetPullup()             do { WPUDbits.WPUD2 = 1; } while(0)
#define RD2_ResetPullup()           do { WPUDbits.WPUD2 = 0; } while(0)
#define RD2_SetAnalogMode()         do { ANSELDbits.ANSELD2 = 1; } while(0)
#define RD2_SetDigitalMode()        do { ANSELDbits.ANSELD2 = 0; } while(0)

// get/set RD3 procedures
#define RD3_SetHigh()            do { LATDbits.LATD3 = 1; } while(0)
#define RD3_SetLow()             do { LATDbits.LATD3 = 0; } while(0)
#define RD3_Toggle()             do { LATDbits.LATD3 = ~LATDbits.LATD3; } while(0)
#define RD3_GetValue()              PORTDbits.RD3
#define RD3_SetDigitalInput()    do { TRISDbits.TRISD3 = 1; } while(0)
#define RD3_SetDigitalOutput()   do { TRISDbits.TRISD3 = 0; } while(0)
#define RD3_SetPullup()             do { WPUDbits.WPUD3 = 1; } while(0)
#define RD3_ResetPullup()           do { WPUDbits.WPUD3 = 0; } while(0)
#define RD3_SetAnalogMode()         do { ANSELDbits.ANSELD3 = 1; } while(0)
#define RD3_SetDigitalMode()        do { ANSELDbits.ANSELD3 = 0; } while(0)

// get/set SLED3 aliases
#define SLED3_TRIS                 TRISDbits.TRISD4
#define SLED3_LAT                  LATDbits.LATD4
#define SLED3_PORT                 PORTDbits.RD4
#define SLED3_WPU                  WPUDbits.WPUD4
#define SLED3_OD                   ODCONDbits.ODCD4
#define SLED3_ANS                  ANSELDbits.ANSELD4
#define SLED3_SetHigh()            do { LATDbits.LATD4 = 1; } while(0)
#define SLED3_SetLow()             do { LATDbits.LATD4 = 0; } while(0)
#define SLED3_Toggle()             do { LATDbits.LATD4 = ~LATDbits.LATD4; } while(0)
#define SLED3_GetValue()           PORTDbits.RD4
#define SLED3_SetDigitalInput()    do { TRISDbits.TRISD4 = 1; } while(0)
#define SLED3_SetDigitalOutput()   do { TRISDbits.TRISD4 = 0; } while(0)
#define SLED3_SetPullup()          do { WPUDbits.WPUD4 = 1; } while(0)
#define SLED3_ResetPullup()        do { WPUDbits.WPUD4 = 0; } while(0)
#define SLED3_SetPushPull()        do { ODCONDbits.ODCD4 = 0; } while(0)
#define SLED3_SetOpenDrain()       do { ODCONDbits.ODCD4 = 1; } while(0)
#define SLED3_SetAnalogMode()      do { ANSELDbits.ANSELD4 = 1; } while(0)
#define SLED3_SetDigitalMode()     do { ANSELDbits.ANSELD4 = 0; } while(0)

// get/set SLED4 aliases
#define SLED4_TRIS                 TRISDbits.TRISD5
#define SLED4_LAT                  LATDbits.LATD5
#define SLED4_PORT                 PORTDbits.RD5
#define SLED4_WPU                  WPUDbits.WPUD5
#define SLED4_OD                   ODCONDbits.ODCD5
#define SLED4_ANS                  ANSELDbits.ANSELD5
#define SLED4_SetHigh()            do { LATDbits.LATD5 = 1; } while(0)
#define SLED4_SetLow()             do { LATDbits.LATD5 = 0; } while(0)
#define SLED4_Toggle()             do { LATDbits.LATD5 = ~LATDbits.LATD5; } while(0)
#define SLED4_GetValue()           PORTDbits.RD5
#define SLED4_SetDigitalInput()    do { TRISDbits.TRISD5 = 1; } while(0)
#define SLED4_SetDigitalOutput()   do { TRISDbits.TRISD5 = 0; } while(0)
#define SLED4_SetPullup()          do { WPUDbits.WPUD5 = 1; } while(0)
#define SLED4_ResetPullup()        do { WPUDbits.WPUD5 = 0; } while(0)
#define SLED4_SetPushPull()        do { ODCONDbits.ODCD5 = 0; } while(0)
#define SLED4_SetOpenDrain()       do { ODCONDbits.ODCD5 = 1; } while(0)
#define SLED4_SetAnalogMode()      do { ANSELDbits.ANSELD5 = 1; } while(0)
#define SLED4_SetDigitalMode()     do { ANSELDbits.ANSELD5 = 0; } while(0)

// get/set SLED5 aliases
#define SLED5_TRIS                 TRISDbits.TRISD6
#define SLED5_LAT                  LATDbits.LATD6
#define SLED5_PORT                 PORTDbits.RD6
#define SLED5_WPU                  WPUDbits.WPUD6
#define SLED5_OD                   ODCONDbits.ODCD6
#define SLED5_ANS                  ANSELDbits.ANSELD6
#define SLED5_SetHigh()            do { LATDbits.LATD6 = 1; } while(0)
#define SLED5_SetLow()             do { LATDbits.LATD6 = 0; } while(0)
#define SLED5_Toggle()             do { LATDbits.LATD6 = ~LATDbits.LATD6; } while(0)
#define SLED5_GetValue()           PORTDbits.RD6
#define SLED5_SetDigitalInput()    do { TRISDbits.TRISD6 = 1; } while(0)
#define SLED5_SetDigitalOutput()   do { TRISDbits.TRISD6 = 0; } while(0)
#define SLED5_SetPullup()          do { WPUDbits.WPUD6 = 1; } while(0)
#define SLED5_ResetPullup()        do { WPUDbits.WPUD6 = 0; } while(0)
#define SLED5_SetPushPull()        do { ODCONDbits.ODCD6 = 0; } while(0)
#define SLED5_SetOpenDrain()       do { ODCONDbits.ODCD6 = 1; } while(0)
#define SLED5_SetAnalogMode()      do { ANSELDbits.ANSELD6 = 1; } while(0)
#define SLED5_SetDigitalMode()     do { ANSELDbits.ANSELD6 = 0; } while(0)

// get/set SLED6 aliases
#define SLED6_TRIS                 TRISDbits.TRISD7
#define SLED6_LAT                  LATDbits.LATD7
#define SLED6_PORT                 PORTDbits.RD7
#define SLED6_WPU                  WPUDbits.WPUD7
#define SLED6_OD                   ODCONDbits.ODCD7
#define SLED6_ANS                  ANSELDbits.ANSELD7
#define SLED6_SetHigh()            do { LATDbits.LATD7 = 1; } while(0)
#define SLED6_SetLow()             do { LATDbits.LATD7 = 0; } while(0)
#define SLED6_Toggle()             do { LATDbits.LATD7 = ~LATDbits.LATD7; } while(0)
#define SLED6_GetValue()           PORTDbits.RD7
#define SLED6_SetDigitalInput()    do { TRISDbits.TRISD7 = 1; } while(0)
#define SLED6_SetDigitalOutput()   do { TRISDbits.TRISD7 = 0; } while(0)
#define SLED6_SetPullup()          do { WPUDbits.WPUD7 = 1; } while(0)
#define SLED6_ResetPullup()        do { WPUDbits.WPUD7 = 0; } while(0)
#define SLED6_SetPushPull()        do { ODCONDbits.ODCD7 = 0; } while(0)
#define SLED6_SetOpenDrain()       do { ODCONDbits.ODCD7 = 1; } while(0)
#define SLED6_SetAnalogMode()      do { ANSELDbits.ANSELD7 = 1; } while(0)
#define SLED6_SetDigitalMode()     do { ANSELDbits.ANSELD7 = 0; } while(0)

/**
   @Param
    none
   @Returns
    none
   @Description
    GPIO and peripheral I/O initialization
   @Example
    PIN_MANAGER_Initialize();
 */
void PIN_MANAGER_Initialize (void);

/**
 * @Param
    none
 * @Returns
    none
 * @Description
    Interrupt on Change Handling routine
 * @Example
    PIN_MANAGER_IOC();
 */
void PIN_MANAGER_IOC(void);



#endif // PIN_MANAGER_H
/**
 End of File
*/