#include #include #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 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 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, LED_F | LED_G | LED_B | LED_C, LED_A | LED_F | LED_G | LED_C | LED_D, LED_A | LED_F | LED_G | LED_E | LED_C | LED_D, LED_A | LED_B | LED_C, LED_A | LED_B | LED_C | LED_D | LED_E | LED_F | LED_G, 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(int argc, char * argv[]) { /* initialize the parapin user-land library */ pin_init_user(LPT1); /* set up pins as output pins */ pin_output_mode(LED_ALL); if (argc == 2) { int value = atoi(argv[1]); turnOnDigit(2, value % 10); } } 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); }