main.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #ifndef _MAIN_H
  3. #define _MAIN_H
  4. //#define F_CPU 16000000UL
  5. /**
  6. * Битовые макросы
  7. */
  8. #define SetBit(x,y) x |= (1 << (y))
  9. #define ClrBit(x,y) x &= ~(1 << (y))
  10. #define InvBit(x,y) x ^= (1 << (y))
  11. #define IsBit(x,y) (x & (1 << (y)))
  12. #define ResBit(reg,bit) (reg &= ~_BV(bit))
  13. /*
  14. Автоматически включается avr/sfr_defs.h, который содержит:
  15. _BV(bit) === (1<<(bit))
  16. bit_is_set(sfr, bit)
  17. bit_is_clear(sfr, bit)
  18. loop_until_bit_is_set(sfr, bit)
  19. loop_until_bit_is_clear(sfr, bit)
  20. */
  21. /**
  22. * Дефайны
  23. */
  24. /* Port B, puttons, input, pull-up */
  25. #define BUTTON1_PIN _BV(PB3)
  26. #define BUTTON2_PIN _BV(PB4)
  27. #define BUTTON3_PIN _BV(PB5)
  28. #define BUTTON_PINS (BUTTON1_PIN | BUTTON2_PIN | BUTTON3_PIN)
  29. #define BUTTON1_STATE (PINB & BUTTON1_PIN)
  30. #define BUTTON2_STATE (PINB & BUTTON2_PIN)
  31. #define BUTTON3_STATE (PINB & BUTTON3_PIN)
  32. #define BUTTONS_STATE (PINB & BUTTON_PINS)
  33. /* Port C, Lamp digits, output */
  34. #define DIGIT_BLANK 0x0F
  35. #define DIGIT_A0 _BV(PC0)
  36. #define DIGIT_A1 _BV(PC1)
  37. #define DIGIT_A2 _BV(PC2)
  38. #define DIGIT_A3 _BV(PC3)
  39. #define DIGIT_PINS (DIGIT_A0 | DIGIT_A1 | DIGIT_A2 | DIGIT_A3)
  40. /* Port D, Lamp anods, Dot, RTC interrupt, UART */
  41. #define DOT_PIN _BV(PD2)
  42. #define ANOD1 _BV(PD4)
  43. #define ANOD2 _BV(PD5)
  44. #define ANOD3 _BV(PD6)
  45. #define ANOD4 _BV(PD7)
  46. #define ANOD_PINS (ANOD1 | ANOD2 | ANOD3 | ANOD4)
  47. #endif