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

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

?? lcd159a.c

?? 使用coderwarrior打開 內含中文字庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
*********************************************************************************************************
*                                                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        : LCD159A.C
Purpose     : Driver for LCDs using a Seiko Epson SED159A controller
----------------------------------------------------------------------   
Version-Date---Author-Explanation                                        
----------------------------------------------------------------------   
1.00b   020204 JE     a) Hardwareinterface routines renamed:
                         ...DATA -> ...A1, ...CMD -> ...A0
1.00a   010926 JE     a) Support for LCD_SWAPXY added
1.00.00 010710 JE     a) Speed optimizations added
0.90.00 010709 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.
                             If 1, several (speed) optimizations are used.
                             Default: ON (1)
----------------------------------------------------------------------
Known problems or limitations with current version
----------------------------------------------------------------------
a) Cache not supported yet, becuse RAM requirement would be 
   to large. LCD_CACHE must be set to 0
----------------------------------------------------------------------
Open issues
----------------------------------------------------------------------
none
---------------------------END-OF-HEADER------------------------------
*/

#include <string.h>             /* 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 == 0x159A) \
      && (!defined(WIN32) | defined(LCD_SIMCONTROLLER))


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

*/

#ifndef LCD_OPTIMIZE
  #define LCD_OPTIMIZE                (1)
#endif

#ifndef LCD_CACHE
  #define  LCD_CACHE                  (0)
#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 Byte);
  void SIM_WriteA0C0(U8 Byte);
  U8   SIM_ReadA1C0(void);
  U8   SIM_ReadA0C0(void);
  #define LCD_WRITE_A1(Byte) SIM_WriteA1C0(Byte) 
  #define LCD_WRITE_A0(Byte) SIM_WriteA0C0(Byte)
  #define LCD_READ_A1(Byte)  Byte = SIM_ReadA1C0()
  #define LCD_READ_A0(Byte)  Byte = 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

/*
        *********************************************************
        *
        *           Macro calculations
        *
        *********************************************************
*/

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

#if (LCD_BITSPERPIXEL != 8)
  #error This controller can handle only 8bpp 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 (!LCD_SWAP_XY) && (!LCD_MIRROR_X) && (!LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) x, y
#elif (!LCD_SWAP_XY) && (!LCD_MIRROR_X) && (LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) x, LCD_YSIZE_PHYS - 1 - (y)
#elif (!LCD_SWAP_XY) && (LCD_MIRROR_X) && (!LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) LCD_XSIZE_PHYS - 1 - (x), y
#elif (!LCD_SWAP_XY) && (LCD_MIRROR_X) && (LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) LCD_XSIZE_PHYS - 1 - (x), LCD_YSIZE_PHYS - 1 - (y)
#elif (LCD_SWAP_XY) && (!LCD_MIRROR_X) && (!LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) y, x
#elif (LCD_SWAP_XY) && (LCD_MIRROR_X) && (!LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) y, LCD_XSIZE - 1 - (x)
#elif (LCD_SWAP_XY) && (!LCD_MIRROR_X) && (LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) LCD_YSIZE - 1 - (y), x
#elif (LCD_SWAP_XY) && (LCD_MIRROR_X) && (LCD_MIRROR_Y)
  #define LOG2PHYS(x, y) LCD_YSIZE - 1 - (y), LCD_XSIZE - 1 - (x)
#else
  #error unsupported configuration
#endif

#define BKCOLOR LCD_BKCOLORINDEX
#define   COLOR LCD_COLORINDEX

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

#if LCD_CACHE
  static U8 VRam[LCD_YSIZE_PHYS][LCD_XSIZE_PHYS];
#endif

static int CurrentX, CurrentY, StartPage, StartColumn, RAM_Mode;

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

/*
        *****************************************
        *
        *           Low level macros
        *
        *****************************************
*/

#define RAM_WRITE (0x5c)
#define RAM_READ  (0x5d)

#define INCREMENT_CURSOR() \
  CurrentX++; \
  if (CurrentX >= LCD_XSIZE_PHYS) { \
    CurrentX = StartColumn; \
    CurrentY++; \
    if (CurrentY >= LCD_YSIZE_PHYS) \
      CurrentY = StartPage; \
  }

#define RESET_CURSOR() \
  CurrentX = StartColumn; \
  CurrentY = StartPage

#define SET_RAMMODE(Mode) \
  RAM_Mode = Mode; \
  LCD_WRITECMD0 (Mode); \
  RESET_CURSOR()

#define PASET(y) \
  RAM_Mode = 0; \
  LCD_WRITECMD0 (0x75); \
  LCD_WRITEDATA0(y); \
  LCD_WRITEDATA0(LCD_YSIZE_PHYS - 1); \
  StartPage = y
  
#define CASET(x) \
  RAM_Mode = 0; \
  LCD_WRITECMD0 (0x15); \
  LCD_WRITEDATA0(x); \
  LCD_WRITEDATA0(LCD_XSIZE_PHYS - 1); \
  StartColumn = x

#define LCD_ON() \
  LCD_WRITECMD0 (0xaf); \
  SET_RAMMODE(RAM_WRITE)

#define LCD_OFF() \
  LCD_WRITECMD0 (0xae); \
  SET_RAMMODE(RAM_WRITE)

#define DUMMYREAD(Data) \
  LCD_READDATA0(Data)

#if (LCD_OPTIMIZE)
  
  #define SET_RECT(x1, y1, x2, y2) \
    CurrentX = CurrentY = 0xfff; \
    LCD_WRITECMD0 (0x15); \
    LCD_WRITEDATA0(x1); \
    LCD_WRITEDATA0(x2); \
    LCD_WRITECMD0 (0x75); \
    LCD_WRITEDATA0(y1); \
    LCD_WRITEDATA0(y2); \
    LCD_WRITECMD0 (0x5c)

  #define WRITEDATA_DIRECT(Data) \
    LCD_WRITEDATA0(Data)

#endif

#if LCD_CACHE

  #define WRITEDATA(Data) \
    if (VRam[CurrentX][CurrentY] != Data) { \
      VRam[CurrentX][CurrentY] = Data; \
      LCD_WRITEDATA0(Data); \
    } \
    INCREMENT_CURSOR()

  #define READDATA(Data) \
    Data = VRam[CurrentX][CurrentY]

#else

  #define WRITEDATA(Data) \
    LCD_WRITEDATA0(Data); \
    INCREMENT_CURSOR()

  #define READDATA(Data) \
    LCD_READDATA0(Data); \
    INCREMENT_CURSOR()

#endif

/*
        *****************************************
        *
        *           GotoXY
        *
        *****************************************
*/

void GotoXY(int x, int y, int Mode) {
  if ((CurrentX != x) || (CurrentY != y)) {
    CASET(x);
    PASET(y);
  }
  if (RAM_Mode != Mode) {
    SET_RAMMODE(Mode);
  }
}

#define GOTOXY(x, y, Mode) GotoXY(x, y, Mode)

/*
        *********************************************************
        *
        *           Drawing routines, internal
        *
        *********************************************************
*/

/*
        *****************************************
        *
        *           SET pixel
        *
        *****************************************
*/

static void SetPixel(int x, int y, U8 Color) {
  GOTOXY(x, y, RAM_WRITE);
  WRITEDATA(Color);
}

/*
        *****************************************
        *
        *           GET pixel
        *
        *****************************************
*/

static U8 GetPixel(int x, int y) {
  U8 Color;
  CASET(x);
  PASET(y);
  SET_RAMMODE(RAM_READ);
  DUMMYREAD(Color);
  READDATA(Color);
  return Color;
}

/*
        *****************************************
        *
        *           XOR pixel
        *
        *****************************************
*/

static void XorPixel(int x, int y) {
  U8 Color = GetPixel(x, y);
  Color ^= 0xff;
  SET_RAMMODE(RAM_WRITE);
  WRITEDATA(Color);
}

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

Use only this macros for pixel access

*/

#define XORPIXEL(x, y) \
  XorPixel(LOG2PHYS(x, y));

#define SETPIXEL(x, y, Color) \
  SetPixel(LOG2PHYS(x, y), Color);

#define GETPIXEL(x, y, Color) \
  Color = GetPixel(LOG2PHYS(x, y));

/*
        *********************************************************
        *
        *           Exported routines
        *
        *********************************************************
*/

/*
        *****************************************
        *
        *           LCD_L0_XorPixel
        *
        *****************************************

Purpose:  This routine is called by emWin. It writes 1 pixel into the
          display.

*/

void LCD_L0_XorPixel(int x, int y) {
  XORPIXEL(x, y);
}

/*
        *****************************************
        *
        *           LCD_L0_SetPixelIndex
        *
        *****************************************

Purpose:  This routine is called by emWin. It writes 1 pixel into the
          display.

*/

void LCD_L0_SetPixelIndex(int x, int y, int ColorIndex) {
  SETPIXEL(x, y, ColorIndex);
}

/*
        *****************************************
        *
        *           LCD_L0_GetPixelIndex
        *
        *****************************************
*/

unsigned int LCD_L0_GetPixelIndex(int x, int y) {
  U8 ColorIndex;
  GETPIXEL(x, y, ColorIndex);
  return ColorIndex;
}

/*
        *****************************************
        *
        *           LCD_L0_DrawPixel
        *
        *****************************************
*/

void LCD_L0_DrawPixel(int x, int y) {
  SETPIXEL(x, y, COLOR);
}

/*
        ****************************************
        *
        *           LCD_DrawHLine
        *
        ****************************************
*/

#if  (LCD_OPTIMIZE)  \
  && (!LCD_MIRROR_X) \
  && (!LCD_MIRROR_Y) \
  && (!LCD_SWAP_XY)

void LCD_L0_DrawHLine  (int x0, int y,  int x1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    while (x0 <= x1) {
      XORPIXEL(x0, y);
      x0++;
    }
  } else {
    SET_RECT(x0, y, x1, y);
    while (x0++ <= x1) {
      WRITEDATA_DIRECT(COLOR);
    }
  }
}

#else

void LCD_L0_DrawHLine  (int x0, int y,  int x1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    while (x0 <= x1) {
      XORPIXEL(x0, y);
      x0++;
    }
  } else {
    while (x0 <= x1) {
      SETPIXEL(x0, y, COLOR);
      x0++;
    }
  }
}

#endif

/*
        ****************************************
        *
        *           LCD_DrawVLine
        *
        ****************************************
*/

#if  (LCD_OPTIMIZE)  \
  && (!LCD_MIRROR_X) \
  && (!LCD_MIRROR_Y) \
  && (!LCD_SWAP_XY)

void LCD_L0_DrawVLine  (int x, int y0,  int y1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    while (y0 <= y1) {
      XORPIXEL(x, y0);
      y0++;
    }
  } else {
    SET_RECT(x, y0, x, y1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲久本草在线中文字幕| 亚洲一区在线观看免费| 91免费在线看| 美女视频黄 久久| 亚洲欧美另类小说视频| 精品国产亚洲一区二区三区在线观看| 成人av资源在线观看| 六月丁香综合在线视频| 曰韩精品一区二区| 欧美国产97人人爽人人喊| 欧美一区二视频| 在线视频一区二区三| 国产99精品在线观看| 免费成人性网站| 亚洲国产成人av网| 亚洲天堂中文字幕| 中文字幕精品一区二区精品绿巨人| 日韩欧美自拍偷拍| 欧美日本在线播放| 在线日韩一区二区| 91丨porny丨户外露出| 国产成人免费av在线| 国产在线不卡一卡二卡三卡四卡| 天堂午夜影视日韩欧美一区二区| 亚洲女人****多毛耸耸8| 中文字幕成人在线观看| 欧美精品一区二区久久久| 欧美精品123区| 欧美日韩免费在线视频| 在线观看一区二区精品视频| 色综合天天综合色综合av| 菠萝蜜视频在线观看一区| 国产精品一级二级三级| 久久99精品国产麻豆婷婷| 蜜臀久久99精品久久久久久9 | 在线视频观看一区| 91在线丨porny丨国产| 成人高清视频在线| 99久久夜色精品国产网站| 丰满白嫩尤物一区二区| 国产91对白在线观看九色| 国产高清不卡二三区| 国产精品一品视频| 国产+成+人+亚洲欧洲自线| 成人午夜电影网站| 成人免费福利片| 91蜜桃视频在线| 日本精品视频一区二区三区| 色中色一区二区| 欧美性大战久久久久久久| 欧美日韩一区二区三区在线 | 2020国产精品自拍| 久久久99免费| 中文字幕乱码一区二区免费| 国产精品视频线看| 亚洲欧洲一区二区三区| 亚洲美女视频在线| 视频一区中文字幕| 国产一区二三区| 成人免费的视频| 在线欧美日韩精品| 欧美日产在线观看| 久久伊99综合婷婷久久伊| 日本一二三四高清不卡| 亚洲天堂av老司机| 天天综合网 天天综合色| 毛片av中文字幕一区二区| 国产精品一区专区| 91免费版在线看| 欧美美女一区二区三区| 亚洲精品一区二区三区精华液| 国产日韩欧美综合在线| 一区二区欧美视频| 经典三级视频一区| 91丨porny丨最新| 5566中文字幕一区二区电影| 久久久三级国产网站| 亚洲午夜一区二区三区| 经典三级一区二区| 在线免费观看日韩欧美| 欧美成人video| 亚洲欧洲成人精品av97| 免费成人美女在线观看.| 成人a级免费电影| 宅男在线国产精品| 国产精品传媒在线| 美女一区二区三区| 91丨九色丨尤物| 久久久国产综合精品女国产盗摄| 一区二区三区自拍| 国产真实乱对白精彩久久| 在线看日本不卡| 国产清纯在线一区二区www| 五月天久久比比资源色| 成人毛片在线观看| 精品国产免费久久| 亚欧色一区w666天堂| 粉嫩av一区二区三区| 日韩一区二区三区视频在线| 最好看的中文字幕久久| 经典三级在线一区| 91精品国产欧美一区二区18| 亚洲欧洲av一区二区三区久久| 麻豆成人av在线| 欧美中文字幕一区| 日韩一区在线播放| 国产精品原创巨作av| 日韩欧美中文字幕精品| 五月综合激情婷婷六月色窝| kk眼镜猥琐国模调教系列一区二区| 日韩你懂的在线播放| 天天综合色天天| 在线免费观看一区| 亚洲色图.com| 成人av在线一区二区| 久久久噜噜噜久久人人看| 喷白浆一区二区| 欧美久久一区二区| 一区二区三区av电影| 91麻豆精品视频| 国产精品久久久久久久久久久免费看 | 亚洲在线视频网站| 91论坛在线播放| 国产精品嫩草99a| 国产一区二区三区在线看麻豆| 91精品国产一区二区三区香蕉| 亚洲一区视频在线| 一本到不卡免费一区二区| 国产精品黄色在线观看| 成人精品小蝌蚪| 国产精品久久三区| 国产91丝袜在线播放0| 久久精品视频在线看| 国模冰冰炮一区二区| 久久亚洲影视婷婷| 国产精品77777| 国产午夜亚洲精品午夜鲁丝片 | 久久99日本精品| 日韩精品一区二区三区蜜臀 | 精品亚洲国产成人av制服丝袜 | 99麻豆久久久国产精品免费优播| 久久精品人人做| 国产成人精品亚洲日本在线桃色| 久久久欧美精品sm网站| 成人免费视频视频在线观看免费| 国产欧美日韩卡一| 99久久国产综合精品色伊| 中文字幕一区二区三区不卡| 91啪在线观看| 亚洲午夜视频在线| 51精品国自产在线| 久久99久国产精品黄毛片色诱| 精品日韩一区二区| 国产成人在线视频免费播放| 国产精品伦一区二区三级视频| 成人三级伦理片| 洋洋av久久久久久久一区| 91精品国产手机| 国产一区二区主播在线| 国产精品国产自产拍高清av| 日本韩国精品一区二区在线观看| 亚洲国产日日夜夜| 欧美成人a在线| 成人av网站免费观看| 亚洲一二三专区| 日韩精品一区二区三区中文不卡| 激情综合网av| 成人欧美一区二区三区| 欧美久久久一区| 国产一区视频导航| 亚洲毛片av在线| 日韩网站在线看片你懂的| 国产寡妇亲子伦一区二区| 亚洲精品视频免费看| 亚洲日本电影在线| 久久不见久久见免费视频7| 日韩欧美成人午夜| 成人av高清在线| 婷婷成人激情在线网| 欧美韩日一区二区三区| 欧美私人免费视频| 国产高清在线观看免费不卡| 亚洲午夜电影在线观看| 久久久久97国产精华液好用吗| 91麻豆精品一区二区三区| 久久 天天综合| 夜夜精品视频一区二区| 久久精品一区二区| 欧美三级视频在线观看| 国产福利一区二区| 亚洲18影院在线观看| 国产精品久久久久久福利一牛影视| 欧美色区777第一页| 成人午夜短视频| 久久精品国产免费看久久精品| 亚洲色图一区二区| 久久久久久久一区| 在线综合+亚洲+欧美中文字幕| 成人午夜av在线| 国产一区二区在线观看视频|