
#ifndef __LCD_H
#define __LCD_H

typedef enum _dspl {ON = 0x3F, OFF = 0x3E} _display;
typedef enum _crstl {First = 1, Second = 2} _crystal;

#define LCD_CMD1	0x68000000
#define LCD_CMD2	0x70000000

#define LCD_DATA1	0x6C000000
#define LCD_DATA2	0x74000000

void __SysTickInit(void);				//Функция инициализации системного таймера
void Pause8us(void);					//Функция отсчета паузы 8 мкс
unsigned char ReadStatus(_crystal);		//Функция чтения статуса с LCD
void PortsForLCD(void);					//Функция конфигурирования портов ввода/вывода для работы модуля
void SystemBusInit(void);				//Функция конфигурирования внешней системной шины
void ResetLCD(void);					//Функция сброса LCD
void SetStartLine(unsigned int);		//Функция установки первой строаки LCD
void DisplayOnOff(_display);			//Функция включения/выключения LCD дисплея
void SetPage(unsigned int, _crystal);	//Функция устаноовки страницы ОЗУ LCD (строка шириной 8 бит)
void SetAddress(unsigned int);			//Функция установки адреса ОЗУ для вывода изображения (столбец)
unsigned char ReadStatus(_crystal);		//Функция чтения статуса LCD
void WriteByte(unsigned char, unsigned char);	//Функция записи байта в память ОЗУ LCD
unsigned char ReadByte(unsigned int, unsigned int);			//Функция чтения байта из памяти ОЗУ LCD
void ClearLCD(void);					//Функция очистки дисплея LCD
void ClearPage(unsigned char, _crystal);//Функция для очистки одной страницы дисплея LCD
void ClearPageAtTo(unsigned int, unsigned int, unsigned int);	//Функция очистки LCD внутри строки в пределах одной страницы
void LCDInit(void);						//Функция инициализации LCD-модуля
__inline void EnableSysTick(void);		//Функция для разрешения работы системного таймера и прерываний от него
__inline void DisableSysTick(void);		//Функция для запрета работы системного таймера и прерываний от него
void __SysTickInit(void);				//Функция инициализации системного таймера
void SysTick_Handler(void);				//Обработчик прерываний от системного таймера
void Pause8us(void);					//Функция отсчета паузы 8 мкс

#endif	//__LCD_H

