[an error occurred while processing this directive]
|
#define BIT(x) (1<<(x)) // Определение макросов
#define LOW(x) ((x) & 0xFF)
#define HIGH(x) ((x) >> 8)
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Класс описания апаратного обеспечения модуля
class HARD
{
private:
static unsigned char LBT[3]; // Состояние кнопок однократного нажатия
static unsigned char HBT[4]; // Состояние кнопок с автоповтором
public:
enum PORT_PINS
{
CSL = 1, // PD1 - линия управления CS SED1335
RES = 2, // PD2 - линия управления RES SED1335
CSR = 0, // PF0 - линия управления CS RAM
PS = 2, // PE2 - выборка страницы RAM
Light = 3, // PG3 - включение подсветки индикатора
Sound = 3, // PE3 - звуковой сигнал
LED = 5, // PD5 - линия управления светодиодом
SFINT = 5 // PE5 - линия Software interrupt (INT5)
};
enum SBEnumerate
{
SBErase = 1, // PF1 - кнопка "Стереть"
SBList = 2, // PF2 - кнопка "Лист"
SBUp = 4, // PF4 - кнопка "Вверх"
SBDown = 5, // PF5 - кнопка "Вниз"
SBLeft = 3, // PF3 - кнопка "Влево"
SBRight = 7, // PD7 - кнопка "Вправо"
SBEnter = 6, // PD6 - кнопка "Ввод"
SBReceipt = 4, // PD4 - кнопка "Квитирование"
SBReset = 3 // PD3 - кнопка "Сброс"
};
enum Buttons
{
BErase = 0, // Кнопка "Стереть" - младший байт
BList = 1, // Кнопка "Лист"
BEnter = 2, // Кнопка "Ввод"
BReceipt = 3, // Кнопка "Квитирование"
BReset = 4, // Кнопка "Сброс"
BLeft = 0, // Кнопка "Влево" - старший байт
BRight = 1, // Кнопка "Вправо"
BUp = 2, // Кнопка "Вверх"
BDown = 3 // Кнопка "Вниз"
};
//--------------------------------------------------
//--------------------------------------------------
static inline void LedON(void){ PORTD |= BIT(LED); } // Включить светодиод "Статус"
static inline void LedOFF(void){ PORTD &= ~BIT(LED); } // Выключить светодиод "Статус"
static inline void SoundON(void){ PORTE |= BIT(Sound); } // Включить звуковой сигнал
static inline void SoundOFF(void){ PORTE &= ~BIT(Sound); } // Выключить звуковой сигнал
//--------------------------------------------------
static void IOPortInit(void); // Инициализация портов I/O
static void DeviceInit(void); // Инициализация устройств
static void StartTMR1(void); // Запуск TMR1
static unsigned short GetKey(void); // Опрос клавиатуры
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Управление шиной внешней памяти
class ExtBUS
{
private:
static void Enable(void){ PORTF &= ~BIT(HARD::CSR); } // Активация внешней RAM
static void Disable(void){ PORTF |= BIT(HARD::CSR); } // Деактивация внешней RAM
public:
//--------------------------------------------------
//--------------------------------------------------
static void HighPage(void){ PORTE |= BIT(HARD::PS); } // Выбор верхней страницы внешней RAM
static void LowPage(void){ PORTE &= ~BIT(HARD::PS); } // Выбор нижней страницы внешней RAM
static void Initialize(void) // Инициализация внешней шины
{
XMCRB = 0x00; // Upper sector = 0x1100 - 0xFFFF
XMCRA = BIT(SRW11); // Wait one cycle during read/write strobe
MCUCR = BIT(SRE)|BIT(SRW10);
};
static void RAMtoLCD() // Переключение шины на LCD
{
PORTF |= BIT(HARD::CSR);
PORTD &= ~BIT(HARD::CSL);
MCUCR |= BIT(SRW10);
};
static void LCDtoRAM() // Переключение шины на RAM
{
PORTD |= BIT(HARD::CSL);
PORTF &= ~BIT(HARD::CSR);
MCUCR &= ~BIT(SRW10);
};
//--------------------------------------------------
static long TestRAM(void); // Тест работоспособности внешней памяти
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Функция записи данных в EEPROM
void SaveEEPROM(void *Ptr,unsigned short Addr,unsigned char Count);
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#endif //__HARDWARE_DESCRIPTION_H
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------