From 1388ef3aa3e22ea45af8f361103c5a0e9eb19bf1 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Tue, 4 Mar 2025 17:21:44 +0100 Subject: [PATCH] it's flashing ! --- module00/ex03/main.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 module00/ex03/main.c diff --git a/module00/ex03/main.c b/module00/ex03/main.c new file mode 100644 index 0000000..f219aa9 --- /dev/null +++ b/module00/ex03/main.c @@ -0,0 +1,45 @@ +#include +#include + +#define SET(REGISTER, BIT) REGISTER |= 1 << BIT +#define CLEAR(REGISTER, BIT) REGISTER &= ~(1 << BIT) +#define TEST(REGISTER, BIT) REGISTER & 1 << BIT +#define TEST_PIN(PORT, BIT) PIN ## PORT & 1 << BIT +#define TOGGLE(REGISTER, BIT) REGISTER ^= 1 << BIT +#define TOGGLE_PIN(PORT, BIT) PIN ## PORT |= 1 << BIT +#define MODE_INPUT(PORT, BIT) CLEAR(DDR ## PORT, BIT) +#define MODE_OUTPUT(PORT, BIT) SET(DDR ## PORT, BIT) +#define IS_PIN_SET(PORT, BIT) (TEST_PIN(PORT, BIT)) == 0 +#define IS_PIN_CLEAR(PORT, BIT) (TEST_PIN(PORT, BIT)) == 1 + +#define D1 0 +#define D2 1 +#define D3 2 +#define D4 4 +#define SW1 2 +#define SW2 4 + +#define ON 1 +#define OFF 0 +#define SWITCH(state) state = (state == ON) ? OFF : ON; + +int main() { + + // FLASHING + + MODE_OUTPUT(B, D1); + MODE_INPUT(D, SW1); + int state = OFF; + while(1) { + if (IS_PIN_SET(D, SW1)) { + SWITCH(state); + } + if (state) { + SET(PORTB, D1); + } + else { + CLEAR(PORTB, D1); + } + _delay_ms(100); + } +} \ No newline at end of file