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

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

?? lcd15xx.c

?? uCOS/uCGUI在2440上的移植
?? 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一区二区三区免费野_久草精品视频
亚洲精品乱码久久久久久黑人| 国产电影一区二区三区| 国产精品一区二区视频| 91福利小视频| 国产精品网站一区| 精品一区二区在线视频| 欧美日韩久久不卡| 亚洲色图另类专区| 国产91露脸合集magnet| 91精品国产入口| 石原莉奈一区二区三区在线观看| 国产东北露脸精品视频| 欧美mv和日韩mv国产网站| 一区二区三区四区不卡在线 | 成人动漫视频在线| 91麻豆精品国产91久久久使用方法| 成人免费在线视频观看| 国产不卡高清在线观看视频| 欧美一区二区三区四区高清 | 久久福利资源站| 欧美伦理电影网| 亚洲高清免费一级二级三级| 99国产精品国产精品久久| 国产精品国模大尺度视频| 国产成人精品亚洲777人妖| 精品国产露脸精彩对白| 另类小说综合欧美亚洲| 日韩免费一区二区| 韩国女主播一区| 久久男人中文字幕资源站| 久久精品国产99| 精品国产区一区| 国产呦精品一区二区三区网站| 日韩午夜电影在线观看| 久久99国内精品| 精品播放一区二区| 国产精品69久久久久水密桃| 久久久久久久久久久电影| 国产iv一区二区三区| 国产精品毛片久久久久久| 91视频一区二区| 亚洲永久精品大片| 日韩欧美亚洲国产另类| 激情文学综合丁香| 亚洲欧洲精品天堂一级| 在线观看一区日韩| 日韩av一区二区三区四区| 精品国产123| 波多野结衣精品在线| 亚洲综合免费观看高清完整版在线 | 亚洲同性同志一二三专区| 一本色道久久综合狠狠躁的推荐 | 蜜臀va亚洲va欧美va天堂| 日韩一卡二卡三卡国产欧美| 国产在线精品免费| 亚洲日韩欧美一区二区在线| 欧美色爱综合网| 毛片av一区二区| 国产精品久久久久久久久动漫 | 欧美在线观看视频一区二区| 美女一区二区三区| 国产精品嫩草影院com| 欧美日韩日日夜夜| 国产suv精品一区二区883| 亚洲国产精品嫩草影院| 久久影视一区二区| 色菇凉天天综合网| 免费成人在线视频观看| 国产精品成人一区二区三区夜夜夜| 欧美性猛交一区二区三区精品| 韩国v欧美v日本v亚洲v| 自拍偷拍欧美精品| 久久综合九色综合97婷婷| 欧美怡红院视频| 成a人片亚洲日本久久| 日韩综合小视频| 中文字幕欧美一| 2023国产精品| 91精品视频网| 色国产综合视频| 成人精品国产一区二区4080| 日韩av网站免费在线| 亚洲精品菠萝久久久久久久| 国产日韩欧美一区二区三区乱码| 6080日韩午夜伦伦午夜伦| 91视频com| 不卡一区二区中文字幕| 国产综合色视频| 久久综合综合久久综合| 天天综合网天天综合色| 亚洲人成网站色在线观看| 国产午夜精品一区二区| 欧美一区二区三区免费在线看| 色av成人天堂桃色av| a4yy欧美一区二区三区| 国产激情一区二区三区桃花岛亚洲| 日本成人在线网站| 亚洲成人一区二区在线观看| 一区二区三区毛片| 亚洲裸体xxx| 亚洲视频资源在线| 国产精品色眯眯| 日本一区二区动态图| 精品福利一二区| 欧美精品一区视频| 欧美精品一区二区三区久久久| 欧美精品v国产精品v日韩精品| 在线亚洲高清视频| 日本精品一区二区三区高清 | 精品人在线二区三区| 日韩午夜激情免费电影| 欧美一二区视频| 日韩欧美www| 337p日本欧洲亚洲大胆精品| 精品成人a区在线观看| 久久综合九色综合97_久久久| 亚洲精品一区二区三区香蕉| 久久久综合九色合综国产精品| 日韩免费观看高清完整版| 欧美成人精精品一区二区频| ww亚洲ww在线观看国产| 久久久精品欧美丰满| 中文字幕中文乱码欧美一区二区 | 99久久精品99国产精品| a4yy欧美一区二区三区| 91传媒视频在线播放| 欧美日韩亚洲另类| 欧美一级片在线| 亚洲精品在线三区| 国产精品对白交换视频| 亚洲一区视频在线| 秋霞午夜鲁丝一区二区老狼| 久久er99热精品一区二区| 国产aⅴ综合色| 欧美午夜精品电影| 日韩三级免费观看| 国产精品无圣光一区二区| 伊人开心综合网| 久久av老司机精品网站导航| 成人丝袜高跟foot| 欧美日韩在线免费视频| 91精品国产综合久久久久| 久久美女艺术照精彩视频福利播放| 国产欧美日韩亚州综合| 亚洲欧美日韩国产另类专区 | 日韩一级精品视频在线观看| 国产视频一区二区在线观看| 亚洲免费观看高清完整版在线| 午夜精品视频一区| 高清日韩电视剧大全免费| 欧美在线观看一区二区| 久久久久99精品一区| 一区二区三区在线观看动漫| 激情久久久久久久久久久久久久久久| 成人sese在线| 欧美第一区第二区| 亚洲精品v日韩精品| 国产乱码精品1区2区3区| 色欧美片视频在线观看| 国产日韩精品一区| 日韩不卡一区二区| 色婷婷av一区二区三区之一色屋| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美日韩美少妇| 国产性色一区二区| 五月天久久比比资源色| 成人黄色a**站在线观看| 欧美成人猛片aaaaaaa| 亚洲图片欧美色图| 成人中文字幕在线| 久久久综合网站| 久久精品噜噜噜成人av农村| 91豆麻精品91久久久久久| 国产精品大尺度| 国产suv一区二区三区88区| 日韩一区二区在线看片| 性做久久久久久免费观看| 99视频在线精品| 国产精品久久久久久久久免费桃花| 激情综合色播五月| 7777精品伊人久久久大香线蕉完整版| 国产精品激情偷乱一区二区∴| 国产在线精品免费av| 欧美不卡视频一区| 日本不卡1234视频| 在线播放一区二区三区| 亚洲午夜私人影院| 91福利在线播放| 一区二区三区在线高清| 色婷婷久久一区二区三区麻豆| 国产精品国产三级国产三级人妇 | 久久99热这里只有精品| 欧美嫩在线观看| 手机精品视频在线观看| 欧美日韩精品高清| 亚洲成人tv网| 欧美日韩国产一区| 日韩国产欧美在线视频| 日韩一区二区三区视频| 日韩—二三区免费观看av|