52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
|
|
#ifndef SEGMENT_H
|
||
|
|
#define SEGMENT_H
|
||
|
|
|
||
|
|
#include "lib/mystd.h"
|
||
|
|
|
||
|
|
typedef uint8_t segment_digit;
|
||
|
|
|
||
|
|
typedef enum {
|
||
|
|
DIGIT_NONE = 0,
|
||
|
|
DIGIT_1 = BV((0 + 4)),
|
||
|
|
DIGIT_2 = BV((1 + 4)),
|
||
|
|
DIGIT_3 = BV((2 + 4)),
|
||
|
|
DIGIT_4 = BV((3 + 4)),
|
||
|
|
DIGIT_ALL = DIGIT_1 | DIGIT_2 | DIGIT_3 | DIGIT_4,
|
||
|
|
_DIGIT_MASK = DIGIT_ALL,
|
||
|
|
} segment_mask;
|
||
|
|
|
||
|
|
typedef struct {
|
||
|
|
segment_digit digits[4];
|
||
|
|
segment_mask mask;
|
||
|
|
bool enable;
|
||
|
|
} segment_data;
|
||
|
|
|
||
|
|
#define SEG_0 (0b00111111)
|
||
|
|
#define SEG_1 (0b00000110)
|
||
|
|
#define SEG_2 (0b01011011)
|
||
|
|
#define SEG_3 (0b01001111)
|
||
|
|
#define SEG_4 (0b01100110)
|
||
|
|
#define SEG_5 (0b01101101)
|
||
|
|
#define SEG_6 (0b01111101)
|
||
|
|
#define SEG_7 (0b00000111)
|
||
|
|
#define SEG_8 (0b01111111)
|
||
|
|
#define SEG_9 (0b01101111)
|
||
|
|
|
||
|
|
#define SEG_a (BV(0))
|
||
|
|
#define SEG_b (BV(1))
|
||
|
|
#define SEG_c (BV(2))
|
||
|
|
#define SEG_d (BV(3))
|
||
|
|
#define SEG_e (BV(4))
|
||
|
|
#define SEG_f (BV(5))
|
||
|
|
#define SEG_g (BV(6))
|
||
|
|
#define SEG_dp (BV(7))
|
||
|
|
|
||
|
|
t_error segment_init(void);
|
||
|
|
t_error segment_set_digit(segment_digit data, segment_mask digit);
|
||
|
|
t_error segment_set_mask(segment_mask mask);
|
||
|
|
t_error segment_refresh_display(void);
|
||
|
|
void segment_enable(void);
|
||
|
|
void segment_disable(void);
|
||
|
|
|
||
|
|
#endif /* SEGMENT_H */
|