// Author: Sam Cohen
// Date: 1/11/25
// File Name: avr_macros.h
// Desc: Some useful macros for avr programming.

#ifndef AVR_MACROS_H
#define AVR_MACROS_H

#define setRH(reg, bit) do{reg |= (1 << bit);} while(0)
#define setRL(reg, bit) do{reg &= ~(1 << bit);} while(0)
#define setR(reg, value) do{reg = value;} while(0)

#define getBit(val, bit) ((val >> bit) & 1)

#define setRV(reg, bit, v) do{if(v) {reg |= (1 << bit);} else {reg &= ~(1 << bit);}} while(0)

#define InRange(val, l, h) ((val > l) && (val < h))

#define peekR(reg, bit) (reg &= (1 << bit))

#endif