diff --git a/README.md b/README.md index 2021fb6..0323bb8 100644 --- a/README.md +++ b/README.md @@ -79,3 +79,38 @@ avrdude: safemode: Fuses OK (E:00, H:00, L:00) avrdude done. Thank you. ``` + +## test macros + +#include +#include + +// // stringify +#define STRINGIFY_HELPER(x) #x +#define STRINGIFY(x) STRINGIFY_HELPER(x) + +#define CONCAT_HELPER(x, y) x ## y +#define CONCAT(x, y) CONCAT_HELPER(x, y) + +// get argument at nth position +#define ARG_1(v1, v2) v1 +#define ARG_2(v1, v2) v2 +#define GET_PORT(args) ARG_1 args +#define GET_BIT(args) ARG_2 args + +// actions on registers +#define SET(register, bit) register |= 1 << bit + +// actions on ports +#define MODE_OUTPUT(elem) SET(CONCAT(DDR, GET_PORT(elem)), GET_BIT(elem)) + +// elements +#define LED1 (B, 0) + +int main() +{ +MODE_OUTPUT(LED1); + + return 0; + +}