#include "seven_segments.h"
#include "switch.h"
#define DDR_F ((volatile uint8_t *)0x30)
#define DATA_OUT ((volatile uint8_t *)0x31)
#define DDR_K ((volatile uint8_t *)0x107)
#define DATA_IN ((volatile uint8_t *)0x106)
#define SWITCHES 8
struct SevenSegment sevSeg = { DDR_F, DATA_OUT, 0xFF };
struct Switch switches[SWITCHES] = {
{DDR_K, DATA_IN, 0x01},
{DDR_K, DATA_IN, 0x02},
{DDR_K, DATA_IN, 0x04},
{DDR_K, DATA_IN, 0x08},
{DDR_K, DATA_IN, 0x10},
{DDR_K, DATA_IN, 0x20},
{DDR_K, DATA_IN, 0x40},
{DDR_K, DATA_IN, 0x80},
};
void setup() {
// put your setup code here, to run once:
volatile uint8_t sws;
init_seven_segments(&sevSeg);
for (sws = 0; sws < SWITCHES; sws++) {
init_switch(&switches[sws]);
}
}
void loop() {
// put your main code here, to run repeatedly:
volatile uint8_t sws, is_clicked;
for (sws = 0; sws < SWITCHES; sws++) {
is_clicked = sw_clicked(&switches[sws]);
if (is_clicked != 0) {
display(&sevSeg, switches[sws].mask);
} else {
display(&sevSeg, 0x00);
}
}
}