diff --git a/led.c b/led.c index cae1637..06e7d1b 100644 --- a/led.c +++ b/led.c @@ -1,22 +1,24 @@ #include -#define LED_A 2 -#define LED_B 3 -#define LED_C 4 -#define LED_D 5 -#define LED_E 6 -#define LED_F 7 -#define LED_G 8 -#define LED_DP 9 +#define LED_A LP_PIN02 +#define LED_B LP_PIN03 +#define LED_C LP_PIN04 +#define LED_D LP_PIN05 +#define LED_E LP_PIN06 +#define LED_F LP_PIN07 +#define LED_G LP_PIN08 +#define LED_DP LP_PIN09 -#define LED_1 17 -#define LED_2 16 -#define LED_3 14 +#define LED_1 LP_PIN17 +#define LED_2 LP_PIN16 +#define LED_3 LP_PIN14 + +#define LED_POSITION_MASK (LED_1 | LED_2 | LED_3) #define LED_ALL (LED_A | LED_B | LED_C | LED_D | LED_E | LED_F | LED_G | LED_DP | LED_1 | LED_2 | LED_3) -int digit2leds[] = { +int digit2pins[] = { LED_B | LED_C, LED_A | LED_B | LED_G | LED_E | LED_D, LED_A | LED_B | LED_G | LED_C | LED_D, @@ -28,6 +30,14 @@ int digit2leds[] = { LED_A | LED_B | LED_C | LED_D | LED_F | LED_G }; +int position2pins[] = { + LED_1, + LED_2, + LED_3 +}; + +void turnOnDigit(int digitPosition, int value); + int main { /* initialize the parapin user-land library */ @@ -36,3 +46,14 @@ int main /* set up pins as output pins */ pin_output_mode(LED_ALL); } + +void turnOnDigit(int digitPosition, int value) +{ + /* turn all pins off */ + clear_pin(LED_ALL); + + /* enable the positional pin */ + register int pinSet = LED_POSITION_MASK & ~position2pins[digitPosition]; + pinSet |= digit2pins[value]; + set_pin(pinSet); +}