diff --git a/eightbit.c b/eightbit.c new file mode 100644 index 0000000000000000000000000000000000000000..190e0221aea325427b155ccdb6adeb227c14cf05 --- /dev/null +++ b/eightbit.c @@ -0,0 +1,46 @@ +#define LED_MATRIX_0_BASE (0x80000000)//100000000 00000000 00000000 0000000 +#define SWITCHES_0_BASE (0x80000004) //100000000 00000000 00000000 0000100 +#define BTN_0_BASE (0x80000008) //100000000 00000000 00000000 0001000 mutat 1 bite-ra és az ott lévő adatot éselem össze +#define PAUSE (0x10) + + +int main() { +volatile unsigned *LED = (unsigned *)LED_MATRIX_0_BASE; +volatile unsigned *switches = (unsigned *)SWITCHES_0_BASE; +volatile unsigned *buttons = (unsigned *)BTN_0_BASE; + +unsigned sw_state; +unsigned stored_value1 = 0; // Az első tárolt érték +unsigned stored_value2 = 0; // A második tárolt érték + +for (;;) { + sw_state = *switches; + + // Gombok kezelése + volatile unsigned store_btn1 = *buttons & 0x01; + volatile unsigned store_btn2 = *buttons & 0x02; + volatile unsigned calc_btn = *buttons & 0x04; + + // Értékek tárolása + if (store_btn1) { + stored_value1 = sw_state; + } else if (store_btn2) { + stored_value2 = sw_state; + } + + // Összeadás gomb kezelése + if (calc_btn) { + volatile unsigned sum = stored_value1 + stored_value2; + while (*buttons & 0x04) { + *LED = sum; + } + } else { + *LED = sw_state; + } + + // Várakozás + for (int n = PAUSE; n > 0; n--) + ; + } + +}