亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcd15e05.c

?? 使用coderwarrior打開 內含中文字庫
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
*********************************************************************************************************
*                                                uC/GUI
*                        Universal graphic software for embedded applications
*
*                       (c) Copyright 2002, Micrium Inc., Weston, FL
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
*              礐/GUI is protected by international copyright laws. Knowledge of the
*              source code may not be used to write a similar product. This file may
*              only be used in accordance with a license and should not be redistributed
*              in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File        : LCD15E05.C
Purpose     : Driver for LCDs using a Seiko Epson S1D15E05 controller
----------------------------------------------------------------------   
Version-Date---Author-Explanation                                        
----------------------------------------------------------------------   
1.00a   020708 JE     a) Changed to work with 2bpp DDP bitmaps
1.00    020204 JE     a) Hardwareinterface routines renamed:
                         ...DATA -> ...A1, ...CMD -> ...A0
0.90.00 011030 JE     a) First release
---------------------------LIST OF CONFIG SWITCHES--------------------
The following is a list of additional configuration switches for this
driver. These switches might not be listed in the manual, because
the manual mainly covers the general config switches which are
supported by all drivers.
----------------------------------------------------------------------
define ----------------------Explanation------------------------------
LCD_OPTIMIZE                 Controls the use of optimized routines.
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
Driver supports only 2bpp mode
----------------------------------------------------------------------
Open issues
----------------------------------------------------------------------
1bpp mode
---------------------------END-OF-HEADER------------------------------
*/

#include <string.h>           /* needed for memset */
#include <stddef.h>           /* needed for definition of NULL */
#include "LCD_Private.h"      /* private modul definitions & config */
#include "GUI_Private.h"
#include "GUIDebug.h"
#include "LCD_0.h"            /* Defines for first display */

#if    (LCD_CONTROLLER == 0x15E05) \
       && (!defined(WIN32) | defined(LCD_SIMCONTROLLER))

/*
        *********************************************************
        *
        *           Defaults for config switches
        *
        *********************************************************
*/

#ifndef LCD_CACHE
  #define  LCD_CACHE                  (1)
#endif

#ifndef LCD_INIT_CONTROLLER
  #define LCD_INIT_CONTROLLER()
#endif

/*
        *********************************************************
        *
        *           Defines for simulation
        *
        *********************************************************
*/

#ifdef WIN32
  #undef LCD_WRITE_A0
  #undef LCD_WRITE_A1
  #undef LCD_READ_A0
  #undef LCD_READ_A1
  void SIM_WriteA1C0(U8 Data);
  void SIM_WriteA0C0(U8 cmd);
  U8   SIM_ReadA1C0(void);
  U8   SIM_ReadA0C0(void);
  #define LCD_WRITE_A1(Data) SIM_WriteA1C0(Data) 
  #define LCD_WRITE_A0(cmd)  SIM_WriteA0C0(cmd)
  #define LCD_READ_A1()      SIM_ReadA1C0()
  #define LCD_READ_A0()      SIM_ReadA0C0()
#endif

/*
        *********************************************************
        *
        *          Remap ...A0, ...A1 -> ...CMD, ...DATA
        *
        *********************************************************
*/

#define LCD_READCMD0    LCD_READ_A0
#define LCD_READDATA0   LCD_READ_A1
#define LCD_WRITECMD0   LCD_WRITE_A0
#define LCD_WRITEDATA0  LCD_WRITE_A1

/*
        *********************************************************
        *
        *           Configuration switch checking
        *
        *********************************************************
*/

#if (LCD_BITSPERPIXEL > 2)
  #error This controller can handle only 1bpp and 2bpp displays
#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).

*/

#if (!defined (LCD_LUT_COM) && !defined(LCD_LUT_SEG))
  #if   (!LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) x, y
  #elif (!LCD_MIRROR_X && !LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) y, x
  #elif (!LCD_MIRROR_X &&  LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) x, LCD_YSIZE - 1 - (y)
  #elif (!LCD_MIRROR_X &&  LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_YSIZE - 1 - (y), x
  #elif ( LCD_MIRROR_X && !LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_XSIZE - 1 - (x), y
  #elif ( LCD_MIRROR_X && !LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_YSIZE - 1 - (y), x
  #elif ( LCD_MIRROR_X &&  LCD_MIRROR_Y && !LCD_SWAP_XY) 
    #define LOG2PHYS(x, y) LCD_XSIZE - 1 - (x), LCD_YSIZE - 1 - (y)
  #elif ( LCD_MIRROR_X &&  LCD_MIRROR_Y &&  LCD_SWAP_XY) 
    #error This combination of mirroring/swapping not yet supported
  #endif
#else
  #if   ( defined (LCD_LUT_COM) && !defined(LCD_LUT_SEG))
    #define LOG2PHYS(x, y) x, LCD__aLine2Com0[y]
  #elif (!defined (LCD_LUT_COM) &&  defined(LCD_LUT_SEG))
    #define LOG2PHYS(x, y) LCD__aCol2Seg0[x], y
  #elif ( defined (LCD_LUT_COM) &&  defined(LCD_LUT_SEG))
    #define LOG2PHYS(x, y) LCD__aCol2Seg0[x], LCD__aLine2Com0[y]
  #endif
#endif

#define BKCOLOR LCD_BKCOLORINDEX
#define   COLOR LCD_COLORINDEX


/*
        *********************************************************
        *
        *           Static variables for driver
        *
        *********************************************************
*/

#if LCD_CACHE
  #if   (LCD_BITSPERPIXEL == 1)
    static U8 aVRam[(LCD_YSIZE_PHYS + 7) >> 3][LCD_XSIZE_PHYS];
  #elif (LCD_BITSPERPIXEL == 2)
    static U8 aVRam[(LCD_YSIZE_PHYS + 3) >> 2][LCD_XSIZE_PHYS];
  #endif
#endif

static int Page, Offset;

/*
        *********************************************************
        *
        *           Hardware access macros
        *
        *********************************************************
*/

#define MAX_PAGE   32
#define MAX_OFFSET 159

#define INCREMENT_CURSOR() \
  Offset++; \
  if (Offset > MAX_OFFSET) { \
    Offset = 0; \
    Page ++; \
    if (Page > MAX_PAGE) \
      Page = 0; \
  }

#if LCD_CACHE

  #define READ_DATA(Data) \
    Data = aVRam[Page][Offset]

  #define WRITE_DATA(Data) \
    LCD_WRITECMD0(0x1d); \
    LCD_WRITEDATA0(Data); \
    aVRam[Page][Offset] = Data; \
    INCREMENT_CURSOR()

#else

  #define READ_DATA(Data) \
    LCD_WRITECMD0(0x1c); \
    Data = LCD_READDATA0(); \
    INCREMENT_CURSOR()

  #define WRITE_DATA(Data) \
    LCD_WRITECMD0(0x1d); \
    LCD_WRITEDATA0(Data); \
    INCREMENT_CURSOR()

#endif

#define WRITE_PAGE(NewPage) \
  LCD_WRITECMD0(0xb1); \
  LCD_WRITEDATA0(NewPage); \
  Page = NewPage

#define WRITE_OFFSET(NewOffset) \
  LCD_WRITECMD0(0x13); \
  LCD_WRITEDATA0(NewOffset); \
  Offset = NewOffset

#define SET_PAGE_IF_NEEDED(y) \
  if (Page != (y >> 2)) { \
    WRITE_PAGE(y >> 2); \
  }

#define SET_OFFSET_IF_NEEDED(x) \
  if (Offset != x) { \
    WRITE_OFFSET(x); \
  }

/*
        *********************************************************
        *
        *           Static access routines for pixel access
        *
        *********************************************************

These routines should be only used by access macros to keep
sure, that logical coordinates are mapped to physical level

*/

/*
        *****************************************
        *
        *           SetPixelIndex
        *
        *****************************************
*/

static void SetPixelIndex(int x, int y, LCD_PIXELINDEX ColorIndex) {
  U8 Shift = ((y & 3) << 1);
  U8 AndMask = ~(0x03 << Shift);
  U8 OrMask  = ColorIndex << Shift;
  U8 Data;
  SET_PAGE_IF_NEEDED(y);
  SET_OFFSET_IF_NEEDED(x);
  READ_DATA(Data);
  Data &= AndMask;
  Data |= OrMask;
  SET_OFFSET_IF_NEEDED(x);
  WRITE_DATA(Data);
}

/*
        *****************************************
        *
        *           GetPixelIndex
        *
        *****************************************
*/

static LCD_PIXELINDEX GetPixelIndex(int x, int y) {
  U8 Shift = ((y & 3) << 1);
  U8 AndMask = 0x03 << Shift;
  U8 Data;
  SET_PAGE_IF_NEEDED(y);
  SET_OFFSET_IF_NEEDED(x);
  READ_DATA(Data);
  return (Data & AndMask) >> Shift;
}

/*
        *****************************************
        *
        *           XorPixel
        *
        *****************************************
*/

static void XorPixel(int x, int y) {
  U8 Data = GetPixelIndex(x, y);
  Data = LCD_NUM_COLORS - 1 - Data;
  SetPixelIndex(x, y, Data);
}

/*
        *********************************************************
        *
        *           Access macros for pixel access
        *
        *********************************************************
*/

#define SETPIXEL(x, y, c)  SetPixelIndex(LOG2PHYS(x, y), c)
#define GETPIXEL(x, y)     GetPixelIndex(LOG2PHYS(x, y))
#define XORPIXEL(x, y)     XorPixel     (LOG2PHYS(x, y))

/*
        *********************************************************
        *
        *           Static DrawBitLineXBPP functions
        *
        *********************************************************
*/

/*
        *****************************************
        *
        *           Draw Bitmap 1 BPP
        *           no optimizations
        *
        *****************************************
*/

static void  DrawBitLine1BPP(int x, int y, U8 const*p, int Diff, int xsize, const LCD_PIXELINDEX*pTrans) {
  LCD_PIXELINDEX pixels;
  LCD_PIXELINDEX Index0 = *(pTrans+0);
  LCD_PIXELINDEX Index1 = *(pTrans+1);
/*
// Jump to right entry point
*/
  pixels = *p;
  switch (GUI_Context.DrawMode & (LCD_DRAWMODE_TRANS|LCD_DRAWMODE_XOR)) {
  case 0:
    switch (Diff&7) {
    case 0:   
      goto WriteBit0;
    case 1:   
      goto WriteBit1;
    case 2:
      goto WriteBit2;
    case 3:
      goto WriteBit3;
    case 4:
      goto WriteBit4;
    case 5:   
      goto WriteBit5;
    case 6:   
      goto WriteBit6;
    case 7:   
      goto WriteBit7;
    }
    break;
  case LCD_DRAWMODE_TRANS:
    switch (Diff&7) {
    case 0:
      goto WriteTBit0;
    case 1:
      goto WriteTBit1;
    case 2:
      goto WriteTBit2;
    case 3:
      goto WriteTBit3;
    case 4:
      goto WriteTBit4;
    case 5:   
      goto WriteTBit5;
    case 6:   
      goto WriteTBit6;
    case 7:   
      goto WriteTBit7;
    }
    break;
  case LCD_DRAWMODE_XOR:
    switch (Diff&7) {
    case 0:   
      goto WriteXBit0;
    case 1:   
      goto WriteXBit1;
    case 2:
      goto WriteXBit2;
    case 3:
      goto WriteXBit3;
    case 4:
      goto WriteXBit4;
    case 5:   
      goto WriteXBit5;
    case 6:   
      goto WriteXBit6;
    case 7:   
      goto WriteXBit7;
    }
  }
/*
        Write with transparency
*/
  WriteTBit0:
    if (pixels&(1<<7)) SETPIXEL(x+0, y, Index1);
    if (!--xsize)
      return;
  WriteTBit1:
    if (pixels&(1<<6)) SETPIXEL(x+1, y, Index1);
    if (!--xsize)
      return;
  WriteTBit2:
    if (pixels&(1<<5)) SETPIXEL(x+2, y, Index1);
    if (!--xsize)
      return;
  WriteTBit3:
    if (pixels&(1<<4)) SETPIXEL(x+3, y, Index1);
    if (!--xsize)
      return;
  WriteTBit4:
    if (pixels&(1<<3)) SETPIXEL(x+4, y, Index1);
    if (!--xsize)
      return;
  WriteTBit5:
    if (pixels&(1<<2)) SETPIXEL(x+5, y, Index1);
    if (!--xsize)
      return;
  WriteTBit6:
    if (pixels&(1<<1)) SETPIXEL(x+6, y, Index1);
    if (!--xsize)
      return;
  WriteTBit7:
    if (pixels&(1<<0)) SETPIXEL(x+7, y, Index1);
    if (!--xsize)
      return;
    x+=8;
    pixels = *(++p);
    goto WriteTBit0;
/*
        Write without transparency
*/
  WriteBit0:
    SETPIXEL(x+0, y, (pixels&(1<<7)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit1:
    SETPIXEL(x+1, y, (pixels&(1<<6)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit2:
    SETPIXEL(x+2, y, (pixels&(1<<5)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit3:
    SETPIXEL(x+3, y, (pixels&(1<<4)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit4:
    SETPIXEL(x+4, y, (pixels&(1<<3)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit5:
    SETPIXEL(x+5, y, (pixels&(1<<2)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit6:
    SETPIXEL(x+6, y, (pixels&(1<<1)) ? Index1 : Index0);
    if (!--xsize)
      return;
  WriteBit7:
    SETPIXEL(x+7, y, (pixels&(1<<0)) ? Index1 : Index0);
    if (!--xsize)
      return;
    x+=8;
    pixels = *(++p);
    goto WriteBit0;
/*
        Write XOR mode
*/
  WriteXBit0:
    if (pixels&(1<<7))
      XORPIXEL(x+0, y);
    if (!--xsize)
      return;
  WriteXBit1:
    if (pixels&(1<<6))
      XORPIXEL(x+1, y);
    if (!--xsize)
      return;
  WriteXBit2:
    if (pixels&(1<<5))
      XORPIXEL(x+2, y);
    if (!--xsize)
      return;
  WriteXBit3:
    if (pixels&(1<<4))
      XORPIXEL(x+3, y);
    if (!--xsize)
      return;
  WriteXBit4:
    if (pixels&(1<<3))
      XORPIXEL(x+4, y);
    if (!--xsize)
      return;
  WriteXBit5:
    if (pixels&(1<<2))
      XORPIXEL(x+5, y);
    if (!--xsize)
      return;
  WriteXBit6:
    if (pixels&(1<<1))
      XORPIXEL(x+6, y);
    if (!--xsize)
      return;
  WriteXBit7:
    if (pixels&(1<<0))
      XORPIXEL(x+7, y);
    if (!--xsize)
      return;
    x+=8;
    pixels = *(++p);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三专区| 国产99久久久国产精品免费看| 丰满亚洲少妇av| 精品日韩99亚洲| 日本不卡一二三区黄网| 日本乱人伦一区| 日韩三区在线观看| 美女爽到高潮91| 精品理论电影在线观看| 老司机精品视频在线| 91精品国产91综合久久蜜臀| 亚洲电影视频在线| 欧美日本国产一区| 日本视频一区二区| 日韩一区和二区| 国产曰批免费观看久久久| 欧美人与z0zoxxxx视频| 香蕉影视欧美成人| 欧美精品自拍偷拍| 热久久久久久久| 日韩精品一区二区三区视频在线观看| 国产一区91精品张津瑜| 色香蕉久久蜜桃| 日韩精品成人一区二区在线| 精品伦理精品一区| 色老汉av一区二区三区| 免费看精品久久片| 中文字幕一区二区在线观看| 欧美人体做爰大胆视频| 国产精品1区2区| 天天色 色综合| 国产欧美一区二区精品性色 | 日本久久一区二区| 免费看欧美女人艹b| 国产精品国模大尺度视频| 6080国产精品一区二区| 成人av电影在线网| 视频在线观看一区| 国产精品沙发午睡系列990531| 在线精品亚洲一区二区不卡| 国产精品亚洲人在线观看| 伊人夜夜躁av伊人久久| 久久免费国产精品 | 欧美日产国产精品| 成人午夜免费电影| 激情成人午夜视频| 亚洲最快最全在线视频| 欧美激情在线免费观看| 在线综合+亚洲+欧美中文字幕| 国产精品资源在线观看| 午夜伦理一区二区| 亚洲精品美腿丝袜| 国产日产欧美一区二区视频| 91精品国产免费久久综合| 99免费精品在线观看| 激情综合网最新| 蜜臀a∨国产成人精品| 一区二区国产视频| 国产精品国产三级国产专播品爱网 | 欧美亚洲综合在线| 成人午夜私人影院| 国产精品一区一区| 免费观看日韩电影| 日韩一区欧美二区| 一区二区三区中文字幕电影| 国产精品丝袜黑色高跟| 久久免费看少妇高潮| 精品免费国产一区二区三区四区| 欧美视频一区二区在线观看| 不卡的av网站| 成人国产精品免费观看视频| 国产福利电影一区二区三区| 久久不见久久见中文字幕免费| 亚洲国产日产av| 亚洲第一二三四区| 五月天网站亚洲| 亚洲午夜视频在线观看| 亚洲自拍偷拍av| 亚洲女爱视频在线| 国产精品美女久久久久高潮| 中文字幕在线一区二区三区| 国产精品卡一卡二卡三| 国产精品―色哟哟| 国产精品久久精品日日| 国产精品久久久久久久久动漫| 中文字幕一区三区| 综合激情成人伊人| 亚洲午夜日本在线观看| 首页欧美精品中文字幕| 男男成人高潮片免费网站| 轻轻草成人在线| 国产在线精品国自产拍免费| 国产馆精品极品| av成人免费在线观看| 91在线视频18| 欧美色图一区二区三区| 欧美日韩国产在线观看| 欧美一区二区黄色| 久久久久久久久久久99999| 久久天天做天天爱综合色| 欧美韩国日本不卡| 亚洲精品成人a在线观看| 亚洲国产一区视频| 蜜桃视频在线观看一区| 国产一区二区在线影院| 99精品视频一区二区三区| 欧美在线综合视频| 日韩一区二区三区免费观看| 久久女同互慰一区二区三区| 国产精品二三区| 天天av天天翘天天综合网| 国产在线一区二区综合免费视频| 国产成人综合视频| 在线观看国产一区二区| 欧美大片一区二区| 1024精品合集| 青青草原综合久久大伊人精品优势| 国产在线国偷精品免费看| 色婷婷激情综合| 精品国产乱码久久久久久老虎 | 国产呦萝稀缺另类资源| a在线欧美一区| 91精品国产综合久久蜜臀| 国产精品不卡一区| 精品影视av免费| 欧美日韩一区二区三区免费看| 久久久不卡网国产精品二区 | 日韩欧美成人激情| 亚洲品质自拍视频| 国产一区在线观看麻豆| 欧美日韩黄色影视| 最新欧美精品一区二区三区| 美女尤物国产一区| 色婷婷久久综合| 中文字幕成人在线观看| 婷婷夜色潮精品综合在线| 国产精品18久久久| 9人人澡人人爽人人精品| 欧美片网站yy| 亚洲综合男人的天堂| 狠狠色狠狠色综合系列| 欧美久久久久中文字幕| 国产精品久久久久久久久快鸭 | 精品乱人伦一区二区三区| 国产精品二三区| 国产福利不卡视频| 欧美日韩不卡一区| 一区二区三区在线看| 精品亚洲免费视频| 欧美一区二区三区免费在线看| 欧美激情综合五月色丁香小说| 男男成人高潮片免费网站| 成人网页在线观看| 精品蜜桃在线看| 奇米777欧美一区二区| 日韩一区二区在线看片| 亚洲成人免费在线| 成人黄色av网站在线| 亚洲国产电影在线观看| 国产高清久久久久| 欧美军同video69gay| 午夜精彩视频在线观看不卡| 成人av电影在线| 国产精品久久久久久久久免费樱桃| 国产一区二区三区在线观看精品| 欧美精品视频www在线观看| 亚洲小少妇裸体bbw| 99国产欧美另类久久久精品| 国产精品久久久久永久免费观看| 精品影视av免费| 国产亚洲综合av| 蜜臂av日日欢夜夜爽一区| 欧美在线视频日韩| 亚瑟在线精品视频| 欧美丝袜第三区| 青青草97国产精品免费观看| 欧美日韩激情在线| 美女视频网站久久| 久久人人爽爽爽人久久久| 久久精品国产精品青草| 久久无码av三级| 国产精品综合二区| 久久蜜桃av一区二区天堂| 狠狠色丁香久久婷婷综| 精品乱码亚洲一区二区不卡| 国产不卡视频一区二区三区| 国产精品久久久久久妇女6080| av中文字幕不卡| 亚洲亚洲人成综合网络| 欧美日韩高清在线| 蜜桃一区二区三区在线观看| 欧美三级电影网| 激情综合色综合久久综合| 国产精品天天摸av网| 国产成人综合网站| 一区二区三区在线影院| 在线观看日韩一区| 韩国女主播成人在线| 日韩毛片精品高清免费| 91国产视频在线观看|