Subversion Repositories Code-Repo

Rev

Rev 232 | Blame | Last modification | View Log | RSS feed

#ifndef DEFINES_H
#define DEFINES_H

#include <xc.h>
#include <stdint.h>

// <editor-fold defaultstate="collapsed" desc="I/O Pins">
#define BTN_L_N_TRIS    TRISAbits.TRISA1
#define BTN_L_N_PORT    PORTAbits.RA1
#define BTN_L_N_WPU     WPUAbits.WPUA1

#define BTN_L_S_TRIS    TRISAbits.TRISA0
#define BTN_L_S_PORT    PORTAbits.RA0
#define BTN_L_S_WPU     WPUAbits.WPUA0

#define BTN_R_N_TRIS    TRISCbits.TRISC2
#define BTN_R_N_PORT    PORTCbits.RC2
#define BTN_R_N_WPU     WPUCbits.WPUC2

#define BTN_R_E_TRIS    TRISAbits.TRISA3
#define BTN_R_E_PORT    PORTAbits.RA3
#define BTN_R_E_WPU     WPUAbits.WPUA3

#define BTN_R_S_TRIS    TRISAbits.TRISA5
#define BTN_R_S_PORT    PORTAbits.RA5
#define BTN_R_S_WPU     WPUAbits.WPUA5

#define BTN_R_W_TRIS    TRISAbits.TRISA2
#define BTN_R_W_PORT    PORTAbits.RA2
#define BTN_R_W_WPU     WPUAbits.WPUA2

#define LED_4_TRIS      TRISCbits.TRISC3
#define LED_4_LAT       LATCbits.LATC3

#define LED_3_TRIS      TRISCbits.TRISC4
#define LED_3_LAT       LATCbits.LATC4

#define LED_2_TRIS      TRISCbits.TRISC5
#define LED_2_LAT       LATCbits.LATC5

#define LED_1_TRIS      TRISAbits.TRISA4
#define LED_1_LAT       LATAbits.LATA4

#define I2C_CLK_TRIS    TRISCbits.TRISC0
#define I2C_DAT_TRIS    TRISCbits.TRISC1
// </editor-fold>

#define _XTAL_FREQ      32000000

#define CMD_QUERY_BTN   0x0A
#define CMD_SET_LEDS    0x0B

typedef union {
    struct {
        unsigned BTN_L_N    :1;
        unsigned BTN_L_S    :1;
        unsigned BTN_R_N    :1;
        unsigned BTN_R_E    :1;
        unsigned BTN_R_S    :1;
        unsigned BTN_R_W    :1;
        unsigned            :2;
    };
    uint8_t value;
} BTN_STATUS;

typedef union {
    struct {
        unsigned LED_1      :1;
        unsigned LED_2      :1;
        unsigned LED_3      :1;
        unsigned LED_4      :1;
    };
    uint8_t value;
} LED_STATUS;

void Pins_Read(BTN_STATUS *btns);
void Leds_Write(LED_STATUS *leds);

#endif  /* DEFINES_H */