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

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

?? lcd15e05.c

?? s3c44b0+ucgui+初始化的一個版本
?? 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视频国产精品| 久久精品国产99国产精品| 亚洲欧洲成人精品av97| 欧美电影免费观看高清完整版在线 | 精品美女一区二区| 欧美最新大片在线看| 狠狠网亚洲精品| 偷拍与自拍一区| 一区二区三区产品免费精品久久75| 日韩美一区二区三区| 欧美性猛交xxxx黑人交| 成人一区二区视频| 久久99精品视频| 色综合色综合色综合| 久久精品国产亚洲5555| 亚洲国产裸拍裸体视频在线观看乱了| 久久久精品2019中文字幕之3| 欧美福利一区二区| 欧美亚洲自拍偷拍| 欧洲av一区二区嗯嗯嗯啊| 波多野洁衣一区| 粉嫩一区二区三区性色av| 激情综合一区二区三区| 美女网站在线免费欧美精品| 石原莉奈在线亚洲三区| 亚洲国产cao| 亚洲综合在线电影| 亚洲视频免费在线| 日韩毛片一二三区| 亚洲视频在线观看一区| 国产精品盗摄一区二区三区| 国产精品美女久久久久av爽李琼| 国产女人aaa级久久久级| 久久综合九色综合欧美亚洲| 精品国产一区二区亚洲人成毛片 | 亚洲品质自拍视频| 最新国产精品久久精品| 国产精品成人在线观看| 国产精品久久久99| 亚洲乱码日产精品bd| 亚洲老司机在线| 一区二区三区四区精品在线视频 | 一区二区三区四区蜜桃| 洋洋成人永久网站入口| 亚洲一区二区三区影院| 亚洲无人区一区| 首页亚洲欧美制服丝腿| 奇米一区二区三区| 韩国一区二区在线观看| 国产精品亚洲专一区二区三区| 国产精品99久久久久久宅男| 顶级嫩模精品视频在线看| 99国产精品久| 欧美午夜精品久久久久久超碰| 欧美男人的天堂一二区| 欧美变态口味重另类| 国产网站一区二区| 亚洲欧美乱综合| 视频一区中文字幕国产| 精彩视频一区二区三区| www.av亚洲| 欧美日韩在线播放三区| 精品福利一区二区三区| 国产精品久久久久久一区二区三区| 亚洲美女精品一区| 五月激情综合网| 国产成人亚洲综合a∨婷婷图片| 99久久精品免费看| 欧美日韩国产精品成人| 精品第一国产综合精品aⅴ| 亚洲视频一区在线观看| 蜜臀精品久久久久久蜜臀| 国产suv一区二区三区88区| 91国产免费观看| 五月天一区二区三区| 麻豆91精品91久久久的内涵| 丰满放荡岳乱妇91ww| 欧美日韩国产高清一区二区三区| 精品成人免费观看| 一区二区三区欧美| 国产一区二区伦理| 色哟哟一区二区三区| 欧美成人精品二区三区99精品| 国产精品美女一区二区在线观看| 婷婷综合久久一区二区三区| 国v精品久久久网| 欧美电影一区二区| 中文字幕色av一区二区三区| 秋霞国产午夜精品免费视频| 大胆欧美人体老妇| 日韩一区二区麻豆国产| 中文字幕一区二| 国产自产视频一区二区三区| 欧洲亚洲精品在线| 日本一区二区不卡视频| 日本网站在线观看一区二区三区 | 欧美一级xxx| 亚洲同性同志一二三专区| 蜜臀99久久精品久久久久久软件| 99re这里都是精品| 欧美精品一区二区三区蜜臀| 午夜精品福利在线| 91久久国产最好的精华液| 久久九九全国免费| 麻豆精品在线视频| 欧美日韩一级二级三级| 亚洲色图欧美偷拍| 成人综合婷婷国产精品久久免费| 欧美电影精品一区二区 | 9人人澡人人爽人人精品| 日韩欧美在线1卡| 亚洲va天堂va国产va久| 色呦呦国产精品| 亚洲欧洲日本在线| 成人免费视频caoporn| 久久久久青草大香线综合精品| 久久99久久99小草精品免视看| 在线电影一区二区三区| 亚洲成人av在线电影| 欧美天堂一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 成人美女视频在线观看18| 久久人人爽爽爽人久久久| 极品少妇一区二区三区精品视频| 欧美一区二区三区男人的天堂| 亚洲午夜精品在线| 欧美色精品天天在线观看视频| 亚洲精品高清视频在线观看| av亚洲精华国产精华| 中文字幕一区二区三区蜜月| thepron国产精品| 中文字幕一区二区三区在线不卡| 成人黄色777网| 国产精品乱码人人做人人爱| 成人性生交大片免费| 国产精品黄色在线观看| 成人激情综合网站| 日韩一区在线看| 色一情一伦一子一伦一区| 一区二区三区产品免费精品久久75| 欧美在线999| 亚洲成av人片www| 538在线一区二区精品国产| 日日夜夜免费精品| 日韩免费在线观看| 国产suv精品一区二区三区| 经典三级视频一区| 欧美国产日韩在线观看| 99精品黄色片免费大全| 一区二区三区加勒比av| 欧美日韩国产一区| 久久99精品久久只有精品| 国产日本亚洲高清| 一本色道a无线码一区v| 午夜电影网一区| 久久久精品免费网站| 99精品国产热久久91蜜凸| 亚洲综合色噜噜狠狠| 在线电影院国产精品| 国产一区二区三区日韩| 亚洲欧洲日韩av| 欧美人体做爰大胆视频| 经典三级视频一区| 亚洲欧美一区二区在线观看| 欧美日韩一区高清| 国模冰冰炮一区二区| 日韩美女精品在线| 日韩西西人体444www| 懂色av一区二区在线播放| 亚洲一区二区三区四区在线免费观看 | 国产成人免费在线| 一区二区三区免费看视频| 欧美一区二区三区男人的天堂| 成人午夜激情影院| 日韩专区在线视频| 国产精品亲子伦对白| 欧美日韩综合在线免费观看| 国产在线观看一区二区| 一区二区国产视频| ww亚洲ww在线观看国产| 欧美性受xxxx黑人xyx| 国产成人亚洲综合a∨猫咪| 亚洲成a人片在线观看中文| 欧美国产精品一区二区三区| 欧美体内she精高潮| 粉嫩aⅴ一区二区三区四区五区| 午夜精品久久久久久久久久 | 亚洲精品自拍动漫在线| 精品人伦一区二区色婷婷| 在线观看亚洲精品| 国产九色sp调教91| 五月天激情综合| 中文字幕一区二区日韩精品绯色| 日韩欧美久久一区| 欧美日韩精品一区二区| 97久久精品人人做人人爽|