67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
|
|
#include <stdlib.h>
|
|
#include <parapin.h>
|
|
|
|
#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()
|
|
{
|
|
/* 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);
|
|
}
|