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

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

?? lcd15xx.c

?? 這是我移植到GBA游戲機上的uCGUI3.24 可以通過模擬器仿真
?? C
?? 第 1 頁 / 共 5 頁
字號:
#endif
#if (LCD_NUM_COMS < LCD_YSIZE_P)
  #error Please check com setup of controller 0 and X/YSIZE !!!
#endif

/*
  ********************************************************************
  *                                                                  *
  *       Standard variables for driver                              *
  *                                                                  *
  ********************************************************************
*/

#define BKCOLOR LCD_BKCOLORINDEX
#define   COLOR LCD_COLORINDEX

static LCD_RECT ClipRect;
#if LCD_SUPPORT_VERIFY
  static int ErrCnt;
  static int ErrStat;
#endif

/*
        *****************************************
        *                                       *
        *   Memory areas for caching (optional) *
        *                                       *
        *****************************************

The cache stores only the bytes actually used in every controller.
This is also the reason why different arrays are used for every
controller.
*/

#if LCD_CACHE
  /* Handle controller #0 */
  #define NUM_COMS0   (LCD_LASTCOM0-LCD_FIRSTCOM0+1)
  #define NUM_PAGES0  ((NUM_COMS0+7)/8)
  #define NUM_COLS0    (LCD_LASTSEG0-LCD_FIRSTSEG0+1)
  static U8 Cache0[NUM_PAGES0][NUM_COLS0];
/* Check configuration a bit to capture the worst mistakes ...  */
  #if (NUM_COLS0<LCD_NUM_SEGS0)
    #error Configuration error ! Please check LCD_LASTSEG0, LCD_FIRSTSEG0
  #endif
  #if (NUM_COMS0<LCD_NUM_COMS0)
    #error Configuration error ! Please check LCD_LASTCOM0, LCD_FIRSTCOM0
  #endif
  /* Handle controller #1 */
  #if (LCD_NUM_CONTROLLERS >1)
    #define NUM_COMS1   (LCD_LASTCOM1-LCD_FIRSTCOM1+1)
    #define NUM_PAGES1  ((NUM_COMS1+7)/8)
    #define NUM_COLS1    (LCD_LASTSEG1-LCD_FIRSTSEG1+1)
    static U8 Cache1[NUM_PAGES1][NUM_COLS1];
/* Check configuration a bit to capture the worst mistakes ...  */
    #if (NUM_COLS1<LCD_NUM_SEGS1)
      #error Configuration error ! Please check LCD_LASTSEG1, LCD_FIRSTSEG1
    #endif
    #if (NUM_COMS1<LCD_NUM_COMS1)
      #error Configuration error ! Please check LCD_LASTCOM1, LCD_FIRSTCOM1
    #endif
  #endif
  /* Handle controller #2 */
  #if (LCD_NUM_CONTROLLERS >2)
    #define NUM_PAGES2  ((LCD_LASTCOM2-LCD_FIRSTCOM2+1+7)/8)
    #define NUM_COLS2    (LCD_LASTSEG2-LCD_FIRSTSEG2+1)
    static U8 Cache2[NUM_PAGES2][NUM_COLS2];
  #endif
  /* Handle controller #3 */
  #if (LCD_NUM_CONTROLLERS >3)
    #define NUM_PAGES3  ((LCD_LASTCOM3-LCD_FIRSTCOM3+1+7)/8)
    #define NUM_COLS3    (LCD_LASTSEG3-LCD_FIRSTSEG3+1)
    static U8 Cache3[NUM_PAGES3][NUM_COLS3];
  #endif
#endif

/*
  ********************************************************************
  *                                                                  *
  *                Write Cache variables                             *
  *                                                                  *
  ********************************************************************
*/

#if  LCD_SUPPORT_CACHECONTROL
  static char CacheStat   =0;     /* 0: No changes */
  static char CacheLocked =0;     /* 0: Not locked */
  static U8   aaCacheDirtyTag0[NUM_PAGES0][(NUM_COLS0+7)/8];
  #if (LCD_NUM_CONTROLLERS >1)
    static U8   aaCacheDirtyTag1[NUM_PAGES1][(NUM_COLS1+7)/8];
  #endif
  #if (LCD_NUM_CONTROLLERS >2)
    static U8   aaCacheDirtyTag2[NUM_PAGES2][(NUM_COLS2+7)/8];
  #endif
  #if (LCD_NUM_CONTROLLERS >3)
    static U8   aaCacheDirtyTag3[NUM_PAGES3][(NUM_COLS3+7)/8];
  #endif
#endif

/*
  ********************************************************************
  *                                                                  *
  *                  Hardware access, low level                      *
  *                                                                  *
  *           Write Command/Data, Reset                              *
  *           Read  Command/data if possible (LCD readable)          *
  *                                                                  *
  ********************************************************************

  The following routines are used for all access to the
  LCD-controller(s).
*/

/* This macro can be used to check how much time is used up
   for management and how much for hardware access */
#ifdef LCD_TESTSPEED
  #undef  WRITE_DATA0
  #undef  WRITE_CMD0
  #undef  WRITE_DATA1
  #undef  WRITE_CMD1
  #define WRITE_DATA0(p0)
  #define WRITE_CMD0(p0)
  #define WRITE_DATA1(p0)
  #define WRITE_CMD1(p0)
#endif


        /****************************************
        *                                       *
        *        Write Data                     *
        *                                       *
        ****************************************/

static void LCD_WriteData0(char Data) {
  LCD_LOCK();
  WRITE_DATA0(Data);
  LCD_UNLOCK();
}

#if (LCD_NUM_CONTROLLERS >1)
static void LCD_WriteData1(char Data) {
  LCD_LOCK();
  WRITE_DATA1(Data);
  LCD_UNLOCK();
}
#endif

#if (LCD_NUM_CONTROLLERS >2)
static void LCD_WriteData2(char Data) {
  LCD_LOCK();
  LCD_WRITEDATA2(Data);
  LCD_UNLOCK();
}
#endif

#if (LCD_NUM_CONTROLLERS >3)
static void LCD_WriteData3(char Data) {
  LCD_LOCK();
  LCD_WRITEDATA3(Data);
  LCD_UNLOCK();
}
#endif

        /****************************************
        *                                       *
        *        Write single command           *
        *                                       *
        ****************************************/

static void LCD_WriteSingleCommand0(char cmd) {
  LCD_LOCK();
  WRITE_CMD0(cmd);
  LCD_UNLOCK();
}

#if (LCD_NUM_CONTROLLERS >1)
static void LCD_WriteSingleCommand1(char cmd) {
  LCD_LOCK();
  WRITE_CMD1(cmd);
  LCD_UNLOCK();
}
#endif
#if (LCD_NUM_CONTROLLERS >2)
static void LCD_WriteSingleCommand2(char cmd) {
  LCD_LOCK();
  LCD_WRITECMD2(cmd);
  LCD_UNLOCK();
}
#endif
#if (LCD_NUM_CONTROLLERS >3)
static void LCD_WriteSingleCommand3(char cmd) {
  LCD_LOCK();
  LCD_WRITECMD3(cmd);
  LCD_UNLOCK();
}
#endif

        /****************************************
        *                                       *
        *        Write double command           *
        *                                       *
        ****************************************/

static void LCD_WriteDoubleCommand0(char P1, char P2) {
  LCD_LOCK();
  WRITE_CMD0(P1);
  WRITE_CMD0(P2);
  LCD_UNLOCK();
}
#if (LCD_NUM_CONTROLLERS >1)
static void LCD_WriteDoubleCommand1(char P1, char P2) {
  LCD_LOCK();
  WRITE_CMD1(P1);
  WRITE_CMD1(P2);
  LCD_UNLOCK();
}
#endif
#if (LCD_NUM_CONTROLLERS >2)
static void LCD_WriteDoubleCommand2(char P1, char P2) {
  LCD_LOCK();
  LCD_WRITECMD2(P1);
  LCD_WRITECMD2(P2);
  LCD_UNLOCK();
}
#endif
#if (LCD_NUM_CONTROLLERS >3)
static void LCD_WriteDoubleCommand3(char P1, char P2) {
  LCD_LOCK();
  LCD_WRITECMD3(P1);
  LCD_WRITECMD3(P2);
  LCD_UNLOCK();
}
#endif

        /****************************************
        *                                       *
        *          Read data                    *
        *                                       *
        ****************************************/

#if LCD_READABLE
static U8 LCD_ReadData0(void) {
  U8 r;
  LCD_LOCK();
  READ_DATA0(r);
  LCD_UNLOCK();
  return r;
}
#if (LCD_NUM_CONTROLLERS >1)
static U8 LCD_ReadData1(void) {
  U8 r;
  LCD_LOCK();
  READ_DATA1(r);
  LCD_UNLOCK();
  return r;
}
#endif
#if (LCD_NUM_CONTROLLERS >2)
static U8 LCD_ReadData2(void) {
  U8 r;
  LCD_LOCK();
  READ_DATA2(r);
  LCD_UNLOCK();
  return r;
}
#endif
#if (LCD_NUM_CONTROLLERS >3)
static U8 LCD_ReadData3(void) {
  U8 r;
  LCD_LOCK();
  READ_DATA3(r);
  LCD_UNLOCK();
  return r;
}
#endif
#endif

        /****************************************
        *                                       *
        *          Read command (status)        *
        *                                       *
        ****************************************/

#if LCD_READABLE
static U8 LCD_ReadCmd0(void) {
  U8 r;
  LCD_LOCK();
  READ_CMD0(r);
  LCD_UNLOCK();
  return r;
}
#if (LCD_NUM_CONTROLLERS >1)
static U8 LCD_ReadCmd1(void) {
  U8 r;
  LCD_LOCK();
  READ_CMD1(r);
  LCD_UNLOCK();
  return r;
}
#endif
#if (LCD_NUM_CONTROLLERS >2)
static U8 LCD_ReadCmd2(void) {
  U8 r;
  LCD_LOCK();
  READ_CMD2(r);
  LCD_UNLOCK();
  return r;
}
#endif
#if (LCD_NUM_CONTROLLERS >3)
static U8 LCD_ReadCmd3(void) {
  U8 r;
  LCD_LOCK();
  READ_CMD3(r);
  LCD_UNLOCK();
  return r;
}
#endif
#endif

/*
        ****************************************
        *                                      *
        *     Write to  all controllers        *
        *                                      *
        ****************************************

Some commands should be written to all controllers at the same time.
(Commands used in the init-sequence, or display on/off).
With a multi-controller LCD it can come in handy to have a routine to
write to all of them at once.
*/

#if (LCD_NUM_CONTROLLERS ==1)
  #define LCD_WriteSingleCommandAll LCD_WriteSingleCommand0
#else
  void LCD_WriteSingleCommandAll(char cmd) {
    LCD_WriteSingleCommand0(cmd);
    LCD_WriteSingleCommand1(cmd);
    #if (LCD_NUM_CONTROLLERS >2)
      LCD_WriteSingleCommand2(cmd);
    #endif
    #if (LCD_NUM_CONTROLLERS >3)
      LCD_WriteSingleCommand3(cmd);
    #endif
  }
#endif

/*
  ********************************************************************
  *                                                                  *
  *                  Hardware access, register level                 *
  *                                                                  *
  *           Write Page / Column                                    *
  *                                                                  *
  ********************************************************************

 The following routines are used for all access to the
 LCD-controller(s).

*/
#if (LCD_NUM_CONTROLLERS > 1)
  static U8 CurController;    /* Currently selected controller. All
                                 hardware operations are executed on
                                 this particular controller. It is
                                 more efficient to have a global
                                 variable than to pass this value as
                                 parameter many times. And in a low 
                                 level driver as this one, the
                                 priority of efficiency is top of
                                 the list.  */
#endif
static U8* pCacheByte;
static U8 aPage[LCD_NUM_CONTROLLERS];   /* Current page of
                                           LCD controller(s) */
static U8 aCAdr[LCD_NUM_CONTROLLERS];   /* Current column adr
                                           of LCD controller(s) */
static U8 Page, Col;            /* Page / column of cache byte */
static U8 DataW_Dirty;          /* Set (1) bits are dirty */
static U8 DataW_Cache;          /* Data to be written
                                  (not all bits may be valid !) */
static U8 DataR_Valid;
static U8 DataR_Cache;

/* The coordinates of the cache byte. We save current X,Y as well
   as Y0/Y1 (min/max) in Y-direction. Note that on this level we
   always talk about physical coordinates ! */
static int DataCacheX=-1;   /* x-adr. of currently cached byte.
                               If it is <0 it is sure invalid ! */
static int DataCacheY;
static int DataCacheY0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品麻豆视频| eeuss国产一区二区三区| 91国在线观看| 亚洲精选免费视频| 91啪九色porn原创视频在线观看| 国产亚洲一本大道中文在线| 国产在线观看免费一区| 精品久久国产字幕高潮| 久久激情五月激情| 日韩免费视频线观看| 美女视频一区二区三区| 日韩免费视频线观看| 理论电影国产精品| 久久精品男人天堂av| 国产·精品毛片| 国产精品久久久久婷婷| av动漫一区二区| 亚洲制服丝袜av| 7777精品伊人久久久大香线蕉 | 精品毛片乱码1区2区3区| 另类小说图片综合网| 欧美色成人综合| 亚洲图片欧美一区| 日本韩国精品在线| 日韩精品一级中文字幕精品视频免费观看 | 久久精品一级爱片| 成人福利视频网站| 中文在线一区二区| 99国产精品一区| 最新成人av在线| 欧美日韩一级二级三级| 久久er精品视频| 国产精品成人午夜| 欧美色成人综合| 韩国精品一区二区| 国产精品的网站| 欧美蜜桃一区二区三区| 国产在线国偷精品免费看| 亚洲欧洲国产日韩| 欧美一级欧美三级| 成人午夜免费av| 欧美国产一区二区在线观看 | 久久av资源网| 自拍视频在线观看一区二区| 3751色影院一区二区三区| 狠狠色丁香久久婷婷综| 一区二区三区美女| 在线不卡的av| av电影一区二区| 免费在线成人网| 亚洲另类一区二区| 国产天堂亚洲国产碰碰| 在线亚洲高清视频| 亚洲色图视频网站| 国产成人午夜精品影院观看视频| 精品久久99ma| 在线精品视频免费观看| 国产精品一线二线三线精华| 亚洲一区国产视频| 国产精品色哟哟| 日韩午夜小视频| 色婷婷激情久久| 国产91丝袜在线播放| 蜜臀va亚洲va欧美va天堂| 亚洲精品国产无天堂网2021| www国产成人| 欧美美女一区二区三区| 国产精品一区二区久激情瑜伽| 免费亚洲电影在线| 中文成人综合网| 欧美区在线观看| www.欧美.com| 国产黄色成人av| 狠狠网亚洲精品| 美女mm1313爽爽久久久蜜臀| 亚洲女与黑人做爰| 中文字幕佐山爱一区二区免费| 国产亚洲一区二区三区四区| 日韩三区在线观看| 欧美一区二区三区视频在线观看| 在线观看一区日韩| 色琪琪一区二区三区亚洲区| 成人在线视频一区| 粉嫩av一区二区三区| 国产综合久久久久久鬼色 | 风间由美中文字幕在线看视频国产欧美| 午夜影院在线观看欧美| 亚洲一区在线观看网站| 亚洲免费伊人电影| 亚洲女同ⅹxx女同tv| 成人免费视频在线观看| 中文字幕av一区二区三区| 国产三级精品在线| 国产精品久久久久永久免费观看| 中文字幕乱码一区二区免费| 在线综合亚洲欧美在线视频| 91福利在线导航| 欧美日韩在线三区| 欧美一区二区国产| 欧美本精品男人aⅴ天堂| 日韩亚洲欧美综合| xvideos.蜜桃一区二区| 久久久久久综合| 国产精品欧美精品| 亚洲欧美偷拍卡通变态| 亚洲自拍偷拍欧美| 日本欧美韩国一区三区| 韩国成人在线视频| 丁香另类激情小说| 91亚洲精华国产精华精华液| 日本韩国精品在线| 在线综合+亚洲+欧美中文字幕| 欧美mv和日韩mv国产网站| 国产欧美一区二区三区沐欲| 欧美高清在线精品一区| 中文字幕一区三区| 一区二区三区日韩精品视频| 视频一区视频二区在线观看| 九一久久久久久| jiyouzz国产精品久久| 欧美在线不卡一区| 日韩欧美国产一区二区三区| 国产欧美精品一区| 亚洲网友自拍偷拍| 美国欧美日韩国产在线播放| 大陆成人av片| 欧美日韩精品一区二区三区四区| 欧美情侣在线播放| 国产欧美一区二区精品性| 亚洲啪啪综合av一区二区三区| 天堂成人国产精品一区| 国产另类ts人妖一区二区| 92国产精品观看| 日韩欧美国产麻豆| **网站欧美大片在线观看| 亚洲电影视频在线| 99re8在线精品视频免费播放| 91精品国产乱| 亚洲精品乱码久久久久久久久| 激情亚洲综合在线| 欧美伊人久久久久久久久影院 | 欧美一区二区三区视频在线观看| 在线播放欧美女士性生活| 99国产精品久久久久久久久久久 | 欧美午夜精品免费| 久久精品亚洲一区二区三区浴池 | 久久综合色天天久久综合图片| 国产精品三级av| 国产一区 二区 三区一级| 欧美三级日韩三级国产三级| 欧美电视剧在线观看完整版| 一区二区三区四区av| 粗大黑人巨茎大战欧美成人| 欧美日韩综合色| 一区二区在线免费| www.综合网.com| 国产精品久久777777| 国产精品资源网| 欧美日韩精品福利| 亚洲免费观看在线观看| 国产成人精品三级麻豆| 欧美精品一区二区三区高清aⅴ| 亚洲一区免费视频| 不卡的电视剧免费网站有什么| 久久久久久久久伊人| 蜜臀久久99精品久久久久久9| 欧美日韩精品福利| 性欧美大战久久久久久久久| 国产乱淫av一区二区三区 | 麻豆成人久久精品二区三区红| 欧美系列一区二区| 最新高清无码专区| 91成人免费在线| 一区二区三区四区不卡视频| 欧美在线观看视频一区二区三区| 亚洲日本一区二区三区| 91片在线免费观看| 亚洲摸摸操操av| 91麻豆精品秘密| 亚洲欧美偷拍另类a∨色屁股| 91免费国产在线| 一区二区三区资源| 欧美视频一区二区在线观看| 国产精品三级久久久久三级| www.欧美日韩| 亚洲线精品一区二区三区八戒| 欧美视频中文字幕| 午夜激情一区二区| 日韩精品一区二区三区在线| 日本一不卡视频| 精品毛片乱码1区2区3区| 国产99久久久国产精品潘金| 国产欧美日韩久久| 色拍拍在线精品视频8848| 亚洲一二三四久久| 日韩一区二区三区精品视频| 国产在线精品不卡| 成人永久免费视频| 亚洲综合999| www国产精品av|