You are on page 1of 1

/*

* File: main.c
*
* Created on November 14, 2021, 4:57 PM
*/

#include <xc.h>

void main(void) {
ANSELA = 0;
TRISAbits.TRISA0 = 1;
TRISAbits.TRISA1 = 1;
TRISAbits.TRISA2 = 1;

TRISAbits.TRISA3 = 0;
TRISAbits.TRISA4 = 0;
TRISAbits.TRISA5 = 0;
TRISAbits.TRISA6 = 0;
TRISCbits.TRISC1 = 0;
TRISCbits.TRISC2 = 0;
TRISCbits.TRISC3 = 0;

static volatile int * const LATRegisters[] = {


&LATA, &LATA, &LATA, &LATA, &LATC, &LATC, &LATC
};

static int const mapPinMap2BitPosn[] = { 1<<3, 1<<4,


1<<5, 1<<6, 1<<1,
1<<2, 1<<3
};

while(1) {
unsigned int out = ((1 & PORTAbits.RA2) << 2) | ((1 & PORTAbits.RA1) << 1)
| (1 & PORTAbits.RA0);
if (out < 4) {
LATC = ~0;
*LATRegisters[out] = ~mapPinMap2BitPosn[out];
} else if (out < 7) {
LATA = ~0;
*LATRegisters[out] = ~mapPinMap2BitPosn[out];
} else {
LATA = ~0;
LATC = ~0;
}
}
return;
}

You might also like