#pragma once #ifndef _MAIN_H #define _MAIN_H //#define F_CPU 16000000UL /** * Битовые макросы */ #define SetBit(x,y) x |= (1 << (y)) #define ClrBit(x,y) x &= ~(1 << (y)) #define InvBit(x,y) x ^= (1 << (y)) #define IsBit(x,y) (x & (1 << (y))) #define ResBit(reg,bit) (reg &= ~_BV(bit)) /* Автоматически включается avr/sfr_defs.h, который содержит: _BV(bit) === (1<<(bit)) bit_is_set(sfr, bit) bit_is_clear(sfr, bit) loop_until_bit_is_set(sfr, bit) loop_until_bit_is_clear(sfr, bit) */ /** * Дефайны */ /* Port B, puttons, input, pull-up */ #define BUTTON1_PIN _BV(PB3) #define BUTTON2_PIN _BV(PB4) #define BUTTON3_PIN _BV(PB5) #define BUTTON_PINS (BUTTON1_PIN | BUTTON2_PIN | BUTTON3_PIN) #define BUTTON1_STATE (PINB & BUTTON1_PIN) #define BUTTON2_STATE (PINB & BUTTON2_PIN) #define BUTTON3_STATE (PINB & BUTTON3_PIN) #define BUTTONS_STATE (PINB & BUTTON_PINS) /* Port C, Lamp digits, output */ #define DIGIT_BLANK 0x0F #define DIGIT_A0 _BV(PC0) #define DIGIT_A1 _BV(PC1) #define DIGIT_A2 _BV(PC2) #define DIGIT_A3 _BV(PC3) #define DIGIT_PINS (DIGIT_A0 | DIGIT_A1 | DIGIT_A2 | DIGIT_A3) /* Port D, Lamp anods, Dot, RTC interrupt, UART */ #define DOT_PIN _BV(PD2) #define ANOD1 _BV(PD4) #define ANOD2 _BV(PD5) #define ANOD3 _BV(PD6) #define ANOD4 _BV(PD7) #define ANOD_PINS (ANOD1 | ANOD2 | ANOD3 | ANOD4) #endif