📄 lcd13xx.lst
字号:
#undef LCD_WRITE_MEM
#undef LCD_WRITE_REG
#if LCD_BUSWIDTH==8
#define LCD_READ_MEM(Off) PC_ReadMem8(Off)
#define LCD_WRITE_MEM(Off,Data) PC_WriteMem8(Off, Data)
#define LCD_READ_REG(Off) PC_ReadReg8(Off)
#define LCD_WRITE_REG(Off,Data) PC_WriteReg8(Off, Data)
#else
#define LCD_READ_MEM(Off) PC_ReadMem16(Off)
#define LCD_WRITE_MEM(Off,Data) PC_WriteMem16(Off, Data)
#define LCD_READ_REG(Off) PC_ReadReg16(Off)
#define LCD_WRITE_REG(Off,Data) PC_WriteReg16(Off, Data)
#endif
#endif
/********************************************************
*
* Remap Hardware macros
*
*********************************************************
*/
#if LCD_NUM_DISPLAYS ==1 /* Use single display macros */
#else
#if LCD_DISPLAY_INDEX == 0 /* First display in a multi-display configuration */
#define LCD_READ_MEM(Off) LCD_READ_MEM_0(Off)
#define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_0(Off,Data)
#define LCD_READ_REG(Off) LCD_READ_REG_0(Off)
#define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_0(Off,Data)
#define LCD_INIT_CONTROLLER LCD_INIT_CONTROLLER_0
#else
#define LCD_READ_MEM(Off) LCD_READ_MEM_1(Off)
#define LCD_WRITE_MEM(Off,Data) LCD_WRITE_MEM_1(Off,Data)
#define LCD_READ_REG(Off) LCD_READ_REG_1(Off)
#define LCD_WRITE_REG(Off,Data) LCD_WRITE_REG_1(Off,Data)
#define LCD_INIT_CONTROLLER LCD_INIT_CONTROLLER_1
C51 COMPILER V8.05a LCD13XX 04/11/2008 14:19:22 PAGE 9
#endif
#endif
/*
*********************************************************
* *
* Internal types *
* *
*********************************************************
*/
/*
*********************************************************
* *
* SCHEDULING *
* *
*********************************************************
*/
#if (LCD_SCHEDULE_CNT !=0)
static int ScheduleCntRem=LCD_SCHEDULE_CNT;
#define CHECK_SCHEDULE(PixelCnt) \
if ((ScheduleCntRem-=(PixelCnt)) <=0) { \
ScheduleCntRem=LCD_SCHEDULE_CNT; \
LCD_SCHEDULE(); \
}
#else
#define CHECK_SCHEDULE(PixelCnt)
#endif
/*
*********************************************************
* *
* Macro calculations *
* *
*********************************************************
*/
/* To make life easier, assign physical x/y size */
#if !LCD_SWAP_XY
#define LCD_XSIZE_P LCD_XSIZE
#define LCD_YSIZE_P LCD_YSIZE
#define LCD_VXSIZE_P LCD_VXSIZE
#define LCD_VYSIZE_P LCD_VYSIZE
#else
#define LCD_XSIZE_P LCD_YSIZE
#define LCD_YSIZE_P LCD_XSIZE
#define LCD_VXSIZE_P LCD_VYSIZE
#define LCD_VYSIZE_P LCD_VXSIZE
#endif
#if LCD_BITSPERPIXEL == 1
#define BYTESPERLINE (LCD_VXSIZE_P/8)
#define WORDSPERLINE (LCD_VXSIZE_P/16)
#elif LCD_BITSPERPIXEL == 2
#define BYTESPERLINE (LCD_VXSIZE_P/4)
#define WORDSPERLINE (LCD_VXSIZE_P/8)
#elif LCD_BITSPERPIXEL == 4
C51 COMPILER V8.05a LCD13XX 04/11/2008 14:19:22 PAGE 10
#define BYTESPERLINE (LCD_VXSIZE_P/2)
#define WORDSPERLINE (LCD_VXSIZE_P/4)
#elif LCD_BITSPERPIXEL == 8
#define BYTESPERLINE (LCD_VXSIZE_P)
#define WORDSPERLINE (LCD_VXSIZE_P/2)
#elif (LCD_BITSPERPIXEL == 15)
#define BYTESPERLINE (LCD_VXSIZE_P*2)
#define WORDSPERLINE (LCD_VXSIZE_P)
#elif (LCD_BITSPERPIXEL == 16)
#define BYTESPERLINE (LCD_VXSIZE_P*2)
#define WORDSPERLINE (LCD_VXSIZE_P)
#else
#error This colordepth is not supported !!!
#endif
#ifndef LCD_USE_32BIT_OFF
#if ((WORDSPERLINE * LCD_YSIZE) > 0xFFFF)
#define LCD_USE_32BIT_OFF 1
#else
#define LCD_USE_32BIT_OFF 0
#endif
#endif
#if LCD_USE_32BIT_OFF
typedef unsigned long tOff;
#else
typedef unsigned int tOff;
#endif
/*
*********************************************************
* *
* Macros, standard *
* *
*********************************************************
These macros can be found in any LCD-driver as they serve purposes
that can be found in any class of LCD-driver (Like clipping).
*/
#define BKCOLOR LCD_BKCOLORINDEX
#define COLOR LCD_COLORINDEX
/*
*********************************************************
* *
* Configuration switch checking *
* *
*********************************************************
Please be aware that not all configuration errors can be captured !
*/
/* Check number of controllers */
#if ((LCD_NUM_CONTROLLERS >1) || (LCD_NUM_CONTROLLERS <0))
#error "More than 1 controller not supported by this driver"
#endif
#if ((LCD_CONTROLLER==1356)||(LCD_CONTROLLER==13806)) && (LCD_BUSWIDTH !=16)
#error This controller does not work with 8-bit bus
C51 COMPILER V8.05a LCD13XX 04/11/2008 14:19:22 PAGE 11
#endif
#if (((LCD_CONTROLLER==1356)||(LCD_CONTROLLER==13806)) && LCD_USE_BITBLT && ((LCD_BITSPERPIXEL != 8) && (L
-CD_BITSPERPIXEL != 16)))
#error BitBlt-Access only available for 8bpp and 16bpp mode
#endif
#if (LCD_CONTROLLER==1374)
#if (LCD_BITSPERPIXEL == 8)
#if (LCD_FIXEDPALETTE != 233)
#error This controller supports only 233 palette in 8 bpp mode !
#endif
#endif
#endif
/*
*********************************************************
* *
* Macros for internal use *
* *
*********************************************************
*/
#if !defined (LCD_LUT_COM)
#define LINE2COM(y) y
#else
#define LINE2COM(y) LCD__aLine2Com0[y]
#endif
#if LCD_BUSWIDTH == 16
#if (LCD_BITSPERPIXEL == 16)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)WORDSPERLINE+(x))
#elif (LCD_BITSPERPIXEL == 15)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)WORDSPERLINE+(x))
#elif (LCD_BITSPERPIXEL == 8)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)WORDSPERLINE+(x>>1))
#elif (LCD_BITSPERPIXEL == 4)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)WORDSPERLINE+(x>>2))
#elif (LCD_BITSPERPIXEL == 2)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)WORDSPERLINE+((x)>>3))
#elif (LCD_BITSPERPIXEL == 1)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)WORDSPERLINE+((x)>>4))
#endif
#else
#if (LCD_BITSPERPIXEL == 16)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)BYTESPERLINE+((x)<<1))
#elif (LCD_BITSPERPIXEL == 15)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)BYTESPERLINE+((x)<<1))
#elif (LCD_BITSPERPIXEL == 8)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)BYTESPERLINE+(x))
#elif (LCD_BITSPERPIXEL == 4)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)BYTESPERLINE+((x)>>1))
#elif (LCD_BITSPERPIXEL == 2)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)BYTESPERLINE+((x)>>2))
#elif (LCD_BITSPERPIXEL == 1)
#define XY2OFF(x,y) (tOff)((tOff)LINE2COM(y)*(tOff)BYTESPERLINE+((x)>>3))
#endif
#endif
C51 COMPILER V8.05a LCD13XX 04/11/2008 14:19:22 PAGE 12
#if ((LCD_SWAP_BYTE_ORDER) && (LCD_BITSPERPIXEL <=8)) | ((LCD_SWAP_BYTE_ORDER==0) && (LCD_BITSPERPIXEL >
-8))
#define READ_MEM(Off, Data) Data = LCD_READ_MEM(Off); Data = ((Data & 0xff) << 8) + (Data >> 8)
#define WRITE_MEM(Off, Data) LCD_WRITE_MEM(Off, (U16)(((Data & 0xff) << 8) + ((Data & 0xff00) >> 8)))
#else
#define READ_MEM(Off, Data) Data = LCD_READ_MEM(Off)
#define WRITE_MEM(Off, Data) LCD_WRITE_MEM(Off, Data)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -