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

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

?? i2c.c

?? LCD OSD 程序用於8051 開發lcd
?? C
字號:
#include "types.h"
#include "i2cdef.h"
#include "board.h"
#include "debug.h"
#include "misc.h"


#define i2cSlaveAddr(deviceID, addr)	deviceID|((addr>>8)<<1)
#define i2cWordAddr(addr)		addr&0xFF



//====================================
// Setup i2c Start condition
Bool i2c_Start(void)
{ Set_i2c_SDA();
  Delay4us();
  Set_i2c_SCL();
  Delay4us();
  if (i2c_SDALo() || i2c_SCLLo())
    return FALSE;
  Clr_i2c_SDA();
  Delay4us();
  Clr_i2c_SCL();
  return TRUE;
}
//=============================================
// Setup i2c Stop condition
void i2c_Stop(void)
{ // SCL=L, SDA=L, Stop condition.
  Clr_i2c_SCL();
  Delay4us();
  Clr_i2c_SDA();  
  Delay4us();
  Set_i2c_SCL();
  Delay4us();
  Set_i2c_SDA();
}

//============================================
Bool i2c_SendByte(BYTE value)
{ BYTE i;
  Bool result;
  
  for (i=0; i<8; i++) // Send data via i2c pin
    { if (value&BIT7)
        Set_i2c_SDA();
      else
      	Clr_i2c_SDA();      
      Delay4us();
      Set_i2c_SCL();      
      value<<=1;
      Delay4us();    //0329
      Clr_i2c_SCL(); 
    }
  Set_i2c_SDA();
  Delay4us();
  Set_i2c_SCL();
  Delay4us();    //0329
  result=i2c_SDALo(); // see if ACK
  Clr_i2c_SCL();
  Delay4us();
  Clr_i2c_SDA();
    
  return result;
}

//============================================
BYTE i2c_ReceiveByte(const Bool ack)
{ BYTE i;
  BYTE value;

  for (i=0; i<8; i++)
    { value<<=1;
      Set_i2c_SDA();
      Set_i2c_SCL();
      Delay4us();
      if (i2c_SDAHi())
      	value|=BIT0;
      Clr_i2c_SCL();
    }
  if (ack)
    Clr_i2c_SDA();
  else
    Set_i2c_SDA();
  Delay4us();
  Set_i2c_SCL();
  Delay4us();
  Clr_i2c_SCL();
  
  return value;  	
}

Bool i2c_BurstWrite(BYTE count, BYTE *buffer)
{ while (count--)
    { if (i2c_SendByte(*(buffer++))==FALSE)
        return FALSE;
    }
 return TRUE;
}
Bool i2c_BurstRead(BYTE count, BYTE * buffer)
{ BYTE i;

  for (i=0; i<count-1; i++)
    *(buffer+i)=i2c_ReceiveByte(1);
  *(buffer+i)=i2c_ReceiveByte(0);
  i2c_Stop();
  return TRUE;
}

Bool i2c_MasterStart(I2C_Direction direct, BYTE addr)
{ BYTE retry=5;

  if (direct==I2C_READ) // Set I2C direction bit.
    addr|=BIT0;
  else
    addr&=~BIT0;
  
  while (retry--)
    { if (i2c_Start()==FALSE)
        continue;
      
      if (i2c_SendByte(addr)==TRUE) // send address success
        return TRUE;
      i2c_Stop();
      Delay1ms(1);
    }
  return FALSE;
}


void i2c_WriteTBL(BYTE deviceID, WORD addr, BYTE *buffer, BYTE count)
{ BYTE slaveAddr;
  BYTE wordAddr;
  BYTE offset=0;
  BYTE tempSize;
  Bool succ=TRUE;
  
  while (count)
    { slaveAddr=i2cSlaveAddr(deviceID, addr+offset);
      wordAddr=i2cWordAddr(addr+offset);
      if (i2c_MasterStart(I2C_WRITE, slaveAddr)==FALSE)
      	break;
      if (i2c_BurstWrite(1, &wordAddr)==FALSE)
      	break;
      tempSize=0x10-(wordAddr&0xF);
      if (count>tempSize)
      	{ if (i2c_BurstWrite(tempSize, (BYTE*)(buffer+offset))==FALSE)
      	    break;
      	  i2c_Stop();
      	  count-=tempSize;
      	  offset+=tempSize;
      	}
      else if (count>0x10)
      	{ if (i2c_BurstWrite(0x10, (BYTE*)(buffer+offset))==FALSE)
            break;
      	  i2c_Stop();
      	  count-=0x10;
      	  offset+=0x10;
      	}
      else
      	{ if (i2c_BurstWrite(count, (BYTE*)(buffer+offset))==FALSE)
      	    break;
      	  i2c_Stop();
          count=0;
      	}
      ForceDelay1ms(5);   //0329//1);   //ASW for some slower eeprom
    }
  i2c_Stop();
  ForceDelay1ms(10);   //0329
}

void i2c_ReadTBL(BYTE deviceID, WORD addr, BYTE *buffer, BYTE count)
{ WORD retry=5;
  BYTE slaveAddr;
  BYTE wordAddr;

  slaveAddr=i2cSlaveAddr(deviceID, addr);
  wordAddr=i2cWordAddr(addr);
  while (retry--)
    { if (i2c_MasterStart(I2C_WRITE, slaveAddr)==FALSE)
        continue;
      if (i2c_BurstWrite(1, &wordAddr)==FALSE)
      	continue;
      if (i2c_MasterStart(I2C_READ, slaveAddr)==FALSE)
        continue;
      if (i2c_BurstRead(count, buffer)==FALSE)
      	continue;      
      return;
    }  
}

#if 0
void i2c_WriteByte(BYTE deviceID, WORD addr, BYTE *value)
{ i2c_WriteTBL(deviceID, addr, value, 1);
}
void i2c_ReadByte(BYTE deviceID, WORD addr, BYTE *value)
{ i2c_ReadTBL(deviceID, addr, value, 1);
}
#endif








?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看国产日韩| 国产自产视频一区二区三区| 免费在线看成人av| 国产麻豆91精品| 色综合天天综合网国产成人综合天| 91久久香蕉国产日韩欧美9色| 5858s免费视频成人| 欧美激情艳妇裸体舞| 一区二区成人在线观看| 久久91精品久久久久久秒播| 99热99精品| 欧美一区二区美女| 国产精品精品国产色婷婷| 亚洲成人黄色小说| 国产麻豆精品95视频| 在线日韩国产精品| 26uuu久久综合| 一区二区三区四区中文字幕| 极品少妇xxxx精品少妇| 色综合久久久网| 精品久久一二三区| 亚洲精品视频在线看| 精品亚洲aⅴ乱码一区二区三区| youjizz国产精品| 日韩免费电影网站| 一区二区三区**美女毛片| 国产老肥熟一区二区三区| 欧美性感一区二区三区| 欧美激情资源网| 免费欧美高清视频| 在线影院国内精品| 欧美国产日韩在线观看| 亚洲成a人片在线观看中文| 成人av片在线观看| 精品美女一区二区| 午夜在线成人av| caoporn国产精品| 久久久三级国产网站| 午夜精品在线视频一区| 97精品国产97久久久久久久久久久久 | 国产成人免费9x9x人网站视频| 欧美日韩视频在线观看一区二区三区| 久久精品日产第一区二区三区高清版 | 亚洲与欧洲av电影| 成人一区二区三区在线观看| 日韩欧美123| 日韩精品亚洲一区二区三区免费| 91麻豆精品一区二区三区| 国产欧美日韩精品一区| 精品一区二区三区在线视频| 91麻豆精品国产91久久久使用方法| 亚洲日本va在线观看| 成人小视频免费在线观看| 欧美精品一区二区三区在线| 日韩高清不卡一区二区| 欧美亚洲自拍偷拍| 亚洲另类一区二区| 99re视频精品| 亚洲欧洲国产日本综合| 国产白丝网站精品污在线入口 | 国内精品久久久久影院薰衣草| 欧美精品久久久久久久久老牛影院| 一区二区三区色| 91国偷自产一区二区使用方法| 国产精品伦理一区二区| 高清在线不卡av| 日本一区二区三区在线观看| 国产成人av一区二区三区在线| 2023国产一二三区日本精品2022| 麻豆成人在线观看| 欧美成人三级在线| 久久99精品国产麻豆不卡| 精品黑人一区二区三区久久| 国产自产视频一区二区三区| 久久精品水蜜桃av综合天堂| 国产精品亚洲成人| 国产精品久久久久久久午夜片 | 国产精品理论片在线观看| 波多野结衣亚洲一区| 国产精品乱码久久久久久 | 一区视频在线播放| 99久久综合狠狠综合久久| 中文字幕一区在线| 色网站国产精品| 亚洲v中文字幕| 日韩欧美在线1卡| 国产揄拍国内精品对白| 国产日韩欧美制服另类| 成人aa视频在线观看| 亚洲精品视频在线观看免费| 欧美性生活影院| 免费高清在线视频一区·| 久久婷婷色综合| 成人av免费在线| 亚洲第一成人在线| 欧美mv日韩mv| 成人午夜私人影院| 亚洲在线视频一区| 欧美一区二区视频在线观看2020| 精品一区免费av| 亚洲欧洲99久久| 在线成人av网站| 国产激情精品久久久第一区二区| 中文字幕中文乱码欧美一区二区| 在线精品视频免费播放| 青青草伊人久久| 国产精品日韩成人| 欧美三级中文字幕在线观看| 秋霞影院一区二区| 国产精品无圣光一区二区| 91国偷自产一区二区使用方法| 日产国产高清一区二区三区| 国产午夜精品一区二区| 日本电影欧美片| 经典三级一区二区| 亚洲黄色性网站| 精品日韩一区二区三区| 99精品久久99久久久久| 日本亚洲视频在线| 国产精品毛片高清在线完整版| 欧美日本在线视频| 国产成人精品一区二区三区四区 | 国产精品一区一区| 亚洲综合清纯丝袜自拍| 日韩欧美国产三级| 一本大道av伊人久久综合| 美国三级日本三级久久99| 国产精品久久久久桃色tv| 91精品国产综合久久福利软件| 丁香激情综合国产| 免费高清在线视频一区·| 综合久久久久久| 精品日韩一区二区三区| 在线国产亚洲欧美| 国产伦精品一区二区三区免费迷| 一级做a爱片久久| 国产免费观看久久| 91精品国产乱| 日本高清不卡视频| 丁香桃色午夜亚洲一区二区三区| 丝袜亚洲另类欧美| 1000精品久久久久久久久| 欧美不卡123| 欧美日韩国产综合一区二区三区| 成人性生交大片免费看中文| 麻豆精品视频在线| 亚洲午夜久久久久| 中文字幕字幕中文在线中不卡视频| 欧美va亚洲va在线观看蝴蝶网| 欧美综合在线视频| 99久久精品免费看国产| 国产在线看一区| 另类小说色综合网站| 午夜精品国产更新| 一区二区三区在线影院| 国产精品视频第一区| 久久免费美女视频| 欧美一级在线免费| 欧美日本不卡视频| 91官网在线免费观看| 不卡一区二区在线| 高清久久久久久| 国产综合一区二区| 蜜臂av日日欢夜夜爽一区| 亚洲aⅴ怡春院| 亚洲国产精品久久不卡毛片| 亚洲免费观看视频| 亚洲人一二三区| 亚洲三级电影网站| 中文字幕一区二区三区四区不卡 | 久久精品国产99国产精品| 五月天亚洲婷婷| 亚洲国产综合人成综合网站| 亚洲精品成人在线| 亚洲精品国产一区二区三区四区在线 | 一区二区三区毛片| 亚洲欧洲综合另类| 亚洲精品欧美综合四区| 一区二区三区在线视频观看| 自拍偷在线精品自拍偷无码专区| 国产精品素人视频| 国产精品天美传媒沈樵| 国产精品久久久久久久久果冻传媒| 国产嫩草影院久久久久| 日本一区二区高清| 国产精品国产成人国产三级| 国产精品久久久久影院老司| 中文字幕中文在线不卡住| 日韩伦理电影网| 一区二区三区高清在线| 亚洲高清视频在线| 日韩精品国产欧美| 久久精品国产免费| 国产伦精一区二区三区| 成人午夜精品在线| 91美女片黄在线观看| 欧美羞羞免费网站| 91精品国产一区二区三区| 精品欧美一区二区三区精品久久| 2020国产精品自拍|