📄 lcd15xx.lst
字号:
C51 COMPILER V8.05a LCD15XX 04/11/2008 14:19:23 PAGE 5
-ssible loss of data
#pragma warning(disable : 4761) // warning C4761: integral size mismatch in argument; conversion suppli
-ed
#pragma warning(disable : 4305) // warning C4305: '=' : truncation from 'const int ' to ...
#endif
#ifndef LCD_DISPLAY_INDEX
#define LCD_DISPLAY_INDEX 0
#endif
/*********************************************************************
*
* Map hardware macros
*
**********************************************************************
*/
/* mapping for multi-display configuration */
#if (LCD_NUM_DISPLAYS > 1)
#if (LCD_DISPLAY_INDEX == 0) /* First display in a multi-display configuration */
#define LCD_WRITE_A0 LCD_WRITE_A0_0
#define LCD_WRITE_A1 LCD_WRITE_A1_0
#define LCD_WRITE_A0C1 LCD_WRITE_A0C1_0
#define LCD_WRITE_A1C1 LCD_WRITE_A1C1_0
#define LCD_WRITE_A0C2 LCD_WRITE_A0C2_0
#define LCD_WRITE_A1C2 LCD_WRITE_A1C2_0
#define LCD_WRITE_A0C3 LCD_WRITE_A0C3_0
#define LCD_WRITE_A1C3 LCD_WRITE_A1C3_0
#define LCD_READ_A0 LCD_READ_A0_0
#define LCD_READ_A0 LCD_READ_A0_0
#define LCD_READ_A0C1 LCD_READ_A0C1_0
#define LCD_READ_A0C1 LCD_READ_A0C1_0
#define LCD_READ_A0C2 LCD_READ_A0C2_0
#define LCD_READ_A0C2 LCD_READ_A0C2_0
#define LCD_READ_A0C3 LCD_READ_A0C3_0
#define LCD_READ_A0C3 LCD_READ_A0C3_0
#elif (LCD_DISPLAY_INDEX == 1) /* Second display in a multi-display configuration */
#define LCD_WRITE_A0 LCD_WRITE_A0_1
#define LCD_WRITE_A1 LCD_WRITE_A1_1
#define LCD_WRITE_A0C1 LCD_WRITE_A0C1_1
#define LCD_WRITE_A1C1 LCD_WRITE_A1C1_1
#define LCD_WRITE_A0C2 LCD_WRITE_A0C2_1
#define LCD_WRITE_A1C2 LCD_WRITE_A1C2_1
#define LCD_WRITE_A0C3 LCD_WRITE_A0C3_1
#define LCD_WRITE_A1C3 LCD_WRITE_A1C3_1
#define LCD_READ_A0 LCD_READ_A0_1
#define LCD_READ_A0 LCD_READ_A0_1
#define LCD_READ_A0C1 LCD_READ_A0C1_1
#define LCD_READ_A0C1 LCD_READ_A0C1_1
#define LCD_READ_A0C2 LCD_READ_A0C2_1
#define LCD_READ_A0C2 LCD_READ_A0C2_1
#define LCD_READ_A0C3 LCD_READ_A0C3_1
#define LCD_READ_A0C3 LCD_READ_A0C3_1
#else
#error This many displays not yet supported !
#endif
#endif
/* Command definitions in dependence of selected LCD-controller */
#if (LCD_CONTROLLER/100 == 15) || (LCD_CONTROLLER == 0713)
C51 COMPILER V8.05a LCD15XX 04/11/2008 14:19:23 PAGE 6
#define SET_PAGE0(Page) LCD_WriteSingleCommand0(0xb0 + Page)
#define SET_CADR0(Col) LCD_WriteDoubleCommand0(0x10 + (Col >> 4), 0x00 + (Col & 0xf))
#define CMD_LCD_ON 0xaf
#define CMD_LCD_OFF 0xae
#define WAIT0()
#define WAIT1()
#define WAIT2()
#define WAIT3()
#elif (LCD_CONTROLLER == 108) || (LCD_CONTROLLER == 61202)
static int _Status;
#define SET_PAGE0(Page) LCD_WriteSingleCommand0(0xb8 + Page);
#define SET_CADR0(Col) LCD_WriteSingleCommand0(0x40 + Col);
#if (LCD_NUM_CONTROLLERS > 1)
#define SET_PAGE1(Page) LCD_WriteSingleCommand1(0xb8 + Page);
#define SET_CADR1(Col) LCD_WriteSingleCommand1(0x40 + Col);
#endif
#define CMD_LCD_ON 0x3f
#define CMD_LCD_OFF 0x3e
#define WAIT0() do { LCD_READ_A0(_Status); } while (_Status & 0x80);
#define WAIT1() do { LCD_READ_A0C1(_Status); } while (_Status & 0x80);
#define WAIT2() do { LCD_READ_A0C2(_Status); } while (_Status & 0x80);
#define WAIT3() do { LCD_READ_A0C3(_Status); } while (_Status & 0x80);
#else
#error LCD-controller not supported!
#endif
#ifdef WIN32 /* SEGGER internal simulation */
void SIM_WriteA1C0(U8 Data);
void SIM_WriteA0C0(U8 cmd);
U8 SIM_ReadA0C0(void);
U8 SIM_ReadA1C0(void);
#define WRITE_DATA0(Data) SIM_WriteA1C0(Data)
#define WRITE_CMD0(cmd) SIM_WriteA0C0(cmd)
#define READ_DATA0(Data) Data = SIM_ReadA1C0()
#define READ_CMD0(cmd) cmd = SIM_ReadA0C0()
#define INIT_CONTROLLER()
#if LCD_NUM_CONTROLLERS > 1
void SIM_WriteA1C1(U8 Data);
void SIM_WriteA0C1(U8 cmd);
U8 SIM_ReadA0C1(void);
U8 SIM_ReadA1C1(void);
#define WRITE_DATA1(Data) SIM_WriteA1C1(Data)
#define WRITE_CMD1(cmd) SIM_WriteA0C1(cmd)
#define READ_DATA1(Data) Data = SIM_ReadA1C1()
#define READ_CMD1(cmd) cmd = SIM_ReadA0C1()
#endif
#if LCD_NUM_CONTROLLERS > 2
void SIM_WriteA1C2(U8 Data);
void SIM_WriteA0C2(U8 cmd);
U8 SIM_ReadA0C2(void);
U8 SIM_ReadA1C2(void);
#define WRITE_DATA2(Data) SIM_WriteA1C2(Data)
#define WRITE_CMD2(cmd) SIM_WriteA0C2(cmd)
#define READ_DATA2(Data) Data = SIM_ReadA1C2()
#define READ_CMD2(cmd) cmd = SIM_ReadA0C2()
#endif
#if LCD_NUM_CONTROLLERS > 3
void SIM_WriteA1C3(U8 Data);
void SIM_WriteA0C3(U8 cmd);
U8 SIM_ReadA0C3(void);
U8 SIM_ReadA1C3(void);
#define WRITE_DATA3(Data) SIM_WriteA1C3(Data)
C51 COMPILER V8.05a LCD15XX 04/11/2008 14:19:23 PAGE 7
#define WRITE_CMD3(cmd) SIM_WriteA0C3(cmd)
#define READ_DATA3(Data) Data = SIM_ReadA1C3()
#define READ_CMD3(cmd) cmd = SIM_ReadA0C3()
#endif
#else
#define WRITE_CMD0(cmd) WAIT0(); LCD_WRITE_A0(cmd)
#define WRITE_DATA0(Data) WAIT0(); LCD_WRITE_A1(Data)
#define READ_DATA0(Data) WAIT0(); LCD_READ_A1(Data)
#define READ_CMD0(cmd) WAIT0(); LCD_READ_A0(cmd)
#define INIT_CONTROLLER LCD_INIT_CONTROLLER
#if LCD_NUM_CONTROLLERS > 1
#define WRITE_CMD1(cmd) WAIT1(); LCD_WRITE_A0C1(cmd)
#define WRITE_DATA1(Data) WAIT1(); LCD_WRITE_A1C1(Data)
#define READ_DATA1(Data) WAIT1(); LCD_READ_A1C1(Data)
#define READ_CMD1(cmd) WAIT1(); LCD_READ_A0C1(cmd)
#endif
#if LCD_NUM_CONTROLLERS > 2
#define WRITE_CMD2(cmd) WAIT(2); LCD_WRITE_A0C2(cmd)
#define WRITE_DATA2(Data) WAIT(2); LCD_WRITE_A1C2(Data)
#define READ_DATA2(Data) WAIT(2); LCD_READ_A1C2(Data)
#define READ_CMD2(cmd) WAIT(2); LCD_READ_A0C2(cmd)
#endif
#if LCD_NUM_CONTROLLERS > 3
#define WRITE_CMD3(cmd) WAIT(3); LCD_WRITE_A0C3(cmd)
#define WRITE_DATA3(Data) WAIT(3); LCD_WRITE_A1C3(Data)
#define READ_DATA3(Data) WAIT(3); LCD_READ_A1C3(Data)
#define READ_CMD3(cmd) WAIT(3); LCD_READ_A0C3(cmd)
#endif
#endif
/*
********************************************************************
*
* ID translation table
*
********************************************************************
This table contains 0, 1, 2, ... and serves as translation table for DDBs
*/
#define INTS(Base) Base+0,Base+1,Base+2,Base+3,Base+4,Base+5, \
Base+6,Base+7,Base+8,Base+9,Base+10,Base+11, \
Base+12,Base+13,Base+14,Base+15
static const LCD_PIXELINDEX aID[] = {
INTS(0),
#if LCD_MAX_LOG_COLORS > 0x10
INTS(0x10),
#endif
#if LCD_MAX_LOG_COLORS > 0x20
INTS(0x20),
INTS(0x30),
#endif
#if LCD_MAX_LOG_COLORS > 0x40
INTS(0x40),
INTS(0x50),
INTS(0x60),
INTS(0x70),
#endif
#if LCD_MAX_LOG_COLORS > 0x80
INTS(0x80),
C51 COMPILER V8.05a LCD15XX 04/11/2008 14:19:23 PAGE 8
INTS(0x90),
INTS(0xa0),
INTS(0xb0),
INTS(0xc0),
INTS(0xd0),
INTS(0xe0),
INTS(0xf0)
#endif
};
/*
********************************************************************
* *
* Defaults for config switches *
* *
********************************************************************
*/
#ifndef LCD_CACHE
#define LCD_CACHE (1)
#endif
#ifndef LCD_SUPPORT_REFRESH
#define LCD_SUPPORT_REFRESH LCD_CACHE
#endif
#ifndef LCD_REVERSEMODE_SUPPORT
#define LCD_REVERSEMODE_SUPPORT (0)
#endif
#ifndef LCD_SUPPORT_VERIFY
#define LCD_SUPPORT_VERIFY (0)
#endif
/* Drivers supports anti-aliasing if active. */
#ifndef LCD_SUPPORT_ANTIALIASING
#define LCD_SUPPORT_ANTIALIASING (0)
#endif
/* Switch for support of cache control (locking) */
#ifndef LCD_SUPPORT_CACHECONTROL
#define LCD_SUPPORT_CACHECONTROL (1)
#endif
/* Switch support for the LCD_CopyRect function of the driver */
#ifndef LCD_SUPPORT_COPYRECT
#define LCD_SUPPORT_COPYRECT (1)
#endif
/* If disabled, selected drawmode is ignored.
==> XOR, REVERSE drawing not supported */
#ifndef LCD_SUPPORT_DRAWMODE
#define LCD_SUPPORT_DRAWMODE (1)
#endif
/* Switch support for the LCD_On, LCD_Off functions of the driver */
#ifndef LCD_SUPPORT_ONOFF
#define LCD_SUPPORT_ONOFF (1)
#endif
/* Switch for support of multiple pages.
Only available with certain LCD-controllers */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -