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

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

?? i2c.c

?? 本軟件為tft型液晶顯示器的驅動程序 可用于車載主機顯示屏等
?? C
字號:
#include <define.h>
#include <variable.h>

//TWCR
#define TWINT  7//中斷標志,發送成功就會置位
#define TWEA   6
#define TWSTA  5
#define TWSTO  4
#define TWWC   3
#define TWEN   2
#define TWIE   0
//TWSR
#define TWS7   7
#define TWS6   6
#define TWS5   5
#define TWS4   4
#define TWS3   3
#define TWPS1  1
#define TWPS0  0

#define START        0x08
#define RESTART      0x10
#define MT_SLA_ACK   0x18
#define MT_SLA_NACK  0x20

#define MT_DAT_ACK   0x28
#define MT_DAT_NACK  0x30

#define MR_SLA_ACK   0x40
#define MR_SLA_NACK  0x48


#define MR_DAT_ACK   0x50
#define MR_DAT_NACK  0x58

void I2c_Init(void)
{
    TWCR=0x00;
    TWBR=80;//38;//0x12;
    TWSR=0x01;//0x02;
    TWCR=0x04;
}

void I2c_SendData(uchar device,uchar address,uchar c)//Test OK!
{
    uDelay(200);
    TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//Send Start
    while(!(TWCR&(1<<TWINT)));//waiting Start complete
    if((TWSR&0xF8)!=START)
        goto error;
      
    TWDR=device;
    TWCR=(1<<TWINT)|(1<<TWEN);//Send device
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_SLA_ACK)
        goto error;    
  
    TWDR=address;
    TWCR=(1<<TWINT)|(1<<TWEN);//Send slave
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_DAT_ACK)
        goto error;     
    
    TWDR=c;
    TWCR=(1<<TWINT)|(1<<TWEN);//Send data
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_DAT_ACK)
        goto error;   
error:   
    TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//stop 
    uDelay(200);
}
/*
    noted:
          p[]包含了器件的子地址 address,
*/
void I2c_SendMData(uchar device,uchar *p,uchar n)//Test OK!
{
    uchar i;
    uDelay(200); 
    TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//Send Start
    while(!(TWCR&(1<<TWINT)));//waiting Start complete
    if((TWSR&0xF8)!=START)
        goto error;
    
    uDelay(200); 
    
    TWDR=device;
    TWCR=(1<<TWINT)|(1<<TWEN);//Send device
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_SLA_ACK)
        goto error;     
    
    for(i=0;i<n;i++)
       {
          TWDR=p[i];
          TWCR=(1<<TWINT)|(1<<TWEN);//Send data
          while(!(TWCR&(1<<TWINT)));//waiting complete
          if((TWSR&0xF8)!=MT_DAT_ACK)
              goto error;
          uDelay(50); 
        } 
error: 
    uDelay(200);  
    TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN);//stop 
    uDelay(200); 
}

uchar I2c_ReadData(uchar device,uchar address)//Test OK!
{
    uchar c;
    uDelay(200); 
    TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//Send Start
    while(!(TWCR&(1<<TWINT)));//waiting Start complete
    if((TWSR&0xF8)!=START)
        goto error;
    
    TWDR=device;
    TWCR=(1<<TWINT)|(1<<TWEN);//Send device
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_SLA_ACK)
        goto error;    
  
    TWDR=address;
    TWCR=(1<<TWINT)|(1<<TWEN);//Send slave
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_DAT_ACK)
        goto error;  
    
    TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//Send repeate Start
    while(!(TWCR&(1<<TWINT)));//waiting Start complete
    if((TWSR&0xF8)!=RESTART)
        goto error;
    
    TWDR=device+1;
    TWCR=(1<<TWINT)|(1<<TWEN);//receive data
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MR_SLA_ACK)//接收到ACK
        goto error;
    
    TWSR&=0x07;    
    TWCR=(1<<TWINT)|(1<<TWEN);//receive data
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MR_DAT_NACK)//發送NACK
        goto error;
    
    c=TWDR;
error:
    
    //TWCR=(1<<TWINT)+(1<<TWSTO)+(1<<TWEN);//stop 
    TWCR=0x94;
    uDelay(200); 
    return c;
}

void I2c_ReadMData(uchar device,uchar address,uchar p[],uchar n)
{
    uchar i;
    TWCR=(1<<TWINT)+(1<<TWSTA)+(1<<TWEN);//Send Start
    while(!(TWCR&(1<<TWINT)));//waiting Start complete
    if((TWSR&0xF8)!=START)
        goto error;
    
    TWDR=device;
    TWCR=(1<<TWINT)+(1<<TWEN);//Send device
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_SLA_ACK)
        goto error;
  
    TWDR=address;
    TWCR=(1<<TWINT)+(1<<TWEN);//Send slave
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MT_DAT_ACK)
        goto error;
    
    TWCR=(1<<TWINT)+(1<<TWSTA)+(1<<TWEN);//Send repeate Start
    while(!(TWCR&(1<<TWINT)));//waiting Start complete
    if((TWSR&0xF8)!=RESTART)
        goto error;
    
    TWDR=device+1;
    TWCR=(1<<TWINT)+(1<<TWEN);//receive data
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MR_SLA_ACK)//接收到ACK
        goto error;
    
    for(i=0;i<n-1;i++)
     {    
       TWSR&=0x07;    
       TWCR=(1<<TWINT)+(1<<TWEN)+(1<<TWEA);//receive data
       while(!(TWCR&(1<<TWINT)));//waiting complete
       if((TWSR&0xF8)!=MR_DAT_ACK)//發送ACK
          goto error;    
       p[i]=TWDR;
      }
    TWSR&=0x07;    
    TWCR=(1<<TWINT)+(1<<TWEN);//receive data
    while(!(TWCR&(1<<TWINT)));//waiting complete
    if((TWSR&0xF8)!=MR_DAT_NACK)//發送NACK
         goto error;    
    p[i]=TWDR;
error:
    
    TWCR=(1<<TWINT)+(1<<TWSTO)+(1<<TWEN);//stop  
}

/* Read Time */
//DS1302
  /*
uchar RTC_ReadData(uchar address)
{
    uchar i,c;
    uchar add;
    add=address;
    add<<=1;
    add|=0x81;
    TDAT_Out;
    TCLK_Low;
    TRST_Low;
    TRST_High;
    for(i=0;i<8;i++)
      {
        TCLK_Low;
        NOP;NOP;        
        if(add&0x01)//Lst-->Mst
           TDAT_High;
        else 
           TDAT_Low;
        NOP;NOP;
        TCLK_High;
        NOP;NOP;       
        add>>=1;
       }
   TDAT_In;
   TDAT_High;
   c=0;
   for(i=0;i<8;i++)
     {
       c>>=1;
       TCLK_Low;//
       NOP;NOP;
       if(TDAT_Val)
          c|=0x80;
       else
          c&=0x7F;
       TCLK_High;
       NOP;NOP;
      }
   TRST_Low;
   TDAT_Out;
   TCLK_Low;
   return c;   
}

void RTC_SendData(uchar address,uchar data)
{
   uchar add;
   uchar i;
   add=address;
   add<<=1;
   add|=0x80;
  
   TCLK_Low;
   TRST_Low;
   TRST_High;//set Rst
   for(i=0;i<8;i++)
     {
       TCLK_Low;
       if(add&0x01)
          TDAT_High;
       else
          TDAT_Low;
       NOP;NOP;
       TCLK_High;
       NOP;NOP;
       add>>=1;
      }
   for(i=0;i<8;i++)
     {
       TCLK_Low;
       if(data&0x01)
          TDAT_High;
       else
          TDAT_Low;
       NOP;NOP;
       TCLK_High;
       data>>=1;
       NOP;NOP;
      }
   TRST_Low;
   TCLK_Low;
}

void RTC_Init(void)
{
   TCLK_Low;
   TRST_Low;   
}
*/
//PCF8563
uchar RTC_ReadData(uchar address)
{
   return I2c_ReadData(0xA2,address);
}


void RTC_SendData(uchar address,uchar data)
{
   I2c_SendData(0xA2,address,data);
}

void RTC_Init(void)
{
   RTC_SendData(0x00,0x00);
   RTC_SendData(0x01,0x01);
   RTC_SendData(0x0F,64);
   RTC_SendData(0x0E,0x81);
   RTC_SendData(0x03,0x00);
   RTC_SendData(0x04,0x09);
   RTC_SendData(0x05,0x21);
   RTC_SendData(0x07,0x03);
   RTC_SendData(0x08,0x07);
}

void RTC_ReadTime(uchar * Hour,uchar * Minute)//BCD
{
   
}
void RTC_ReadDat(uchar *year,uchar *month,uchar *data)
{
  
}

void RTC_SetTime(uchar hour,uchar minute)//BCD
{
   RTC_SendData(0x03,minute);
   RTC_SendData(0x04,hour);
}

void RTC_SetDat(uchar year,uchar month,uchar data)//BCD
{
   RTC_SendData(0x05,data);
   RTC_SendData(0x07,month);
   RTC_SendData(0x08,year);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国内精品野花午夜精品| 欧美视频中文字幕| 99久久精品免费观看| 欧美www视频| 国产欧美精品区一区二区三区| 91在线观看美女| 高清国产一区二区三区| 欧美日韩在线一区二区| 精品av综合导航| 亚洲精品高清在线观看| 国产伦精品一区二区三区免费| 成人激情文学综合网| 日韩精品影音先锋| 一区二区三区精品在线| 99国产精品视频免费观看| 欧美一级搡bbbb搡bbbb| 亚洲永久免费视频| 91亚洲国产成人精品一区二区三 | 日韩三级在线免费观看| 91精品国产综合久久福利| 亚洲丝袜另类动漫二区| 国产一区二区三区四| 91精品国产色综合久久不卡电影| 亚洲卡通动漫在线| 99精品桃花视频在线观看| 精品国产髙清在线看国产毛片| 夜夜爽夜夜爽精品视频| 99v久久综合狠狠综合久久| 欧美激情一区二区三区不卡| 午夜成人在线视频| 欧美性感一类影片在线播放| **欧美大码日韩| 欧美日精品一区视频| 亚洲午夜私人影院| 欧美精品久久99| 美女视频黄 久久| 久久免费偷拍视频| jvid福利写真一区二区三区| 亚洲图片激情小说| 91在线国产福利| 日韩精品欧美精品| 国产色婷婷亚洲99精品小说| 成人h版在线观看| 五月天一区二区| 日本一区二区电影| 在线精品观看国产| 久久精品国产久精国产爱| 国产欧美一区二区精品性色| 色婷婷久久99综合精品jk白丝| 亚洲国产美国国产综合一区二区| 日韩一级成人av| av在线免费不卡| 精品夜夜嗨av一区二区三区| 国产精品网站在线| 日韩你懂的电影在线观看| 91成人免费在线视频| 国产精品1区2区3区在线观看| 亚洲伊人伊色伊影伊综合网| 久久精品人人做| 日韩久久久精品| 8v天堂国产在线一区二区| 色噜噜狠狠一区二区三区果冻| 国产乱码精品1区2区3区| 日本欧美肥老太交大片| 午夜精品久久久久影视| 一区二区高清免费观看影视大全| 国产欧美一区二区三区网站| 精品欧美乱码久久久久久 | 中文字幕一区二区视频| 久久久91精品国产一区二区精品 | 91影院在线免费观看| 不卡一区二区在线| 福利一区福利二区| 国模套图日韩精品一区二区| 免费高清不卡av| 免费成人在线网站| 久久精品久久精品| 韩国成人在线视频| 韩国精品免费视频| 成人综合婷婷国产精品久久 | 久久久美女毛片| 国产女主播在线一区二区| 国产日产欧美一区| 亚洲美女一区二区三区| 亚洲h精品动漫在线观看| 日韩成人伦理电影在线观看| 美女脱光内衣内裤视频久久网站| 久久99久久久欧美国产| 国产成人免费9x9x人网站视频| 国产99久久精品| 欧美午夜免费电影| 国产精品女同互慰在线看| 一区二区三区日本| 久久狠狠亚洲综合| 东方aⅴ免费观看久久av| 色女孩综合影院| 久久欧美一区二区| 午夜欧美2019年伦理| 丰满白嫩尤物一区二区| 欧美丰满少妇xxxxx高潮对白 | 国产精品系列在线观看| 欧美三级资源在线| 国产色91在线| 开心九九激情九九欧美日韩精美视频电影| 韩国视频一区二区| 91 com成人网| 一卡二卡欧美日韩| 不卡大黄网站免费看| 久久日韩粉嫩一区二区三区| 轻轻草成人在线| 777欧美精品| 亚洲午夜电影网| 色噜噜狠狠成人中文综合| 国产精品久久久久久户外露出| 老司机精品视频导航| 欧美一区二区久久久| 日韩电影在线观看电影| 另类欧美日韩国产在线| 在线欧美小视频| 婷婷一区二区三区| 国产精品久久久久影院老司| 在线观看国产91| 国产精品水嫩水嫩| 一本到高清视频免费精品| 亚洲欧洲国产日韩| 91精品福利视频| 夜色激情一区二区| 欧美美女一区二区三区| 日本视频在线一区| 欧美电影免费观看高清完整版在线观看| 热久久久久久久| 欧美国产视频在线| 538在线一区二区精品国产| 久草在线在线精品观看| 亚洲色图清纯唯美| 欧美丰满少妇xxxbbb| 国产精品一区二区视频| 综合久久久久综合| 91精品国产综合久久久蜜臀图片| 国产精华液一区二区三区| 丝袜脚交一区二区| 国产精品久久夜| 久久伊人中文字幕| 91黄色激情网站| 在线观看视频91| 蜜臀va亚洲va欧美va天堂| 在线播放日韩导航| 欧美日本一区二区| 制服丝袜亚洲精品中文字幕| 91精品婷婷国产综合久久竹菊| 91麻豆高清视频| 日本高清免费不卡视频| av中文字幕亚洲| 成人国产精品免费网站| 国产一区二区看久久| 亚洲亚洲人成综合网络| 夜夜嗨av一区二区三区四季av| 国产精品毛片a∨一区二区三区| 精品久久久久久久久久久久久久久久久| 欧美午夜免费电影| 欧美一级欧美三级| 久久午夜老司机| 久久久久久久国产精品影院| 国产亚洲一区二区三区在线观看| 午夜在线电影亚洲一区| 亚洲同性gay激情无套| 一区二区三区四区五区视频在线观看| 国产精品视频你懂的| 亚洲少妇30p| 亚洲国产cao| 久久精品国产网站| 成人蜜臀av电影| 91国模大尺度私拍在线视频| 欧美一区三区二区| 欧美tk—视频vk| 国产欧美精品在线观看| 三级成人在线视频| 成人小视频免费在线观看| 精品污污网站免费看| 综合精品久久久| 国产精品一区2区| 欧美一二三四区在线| 亚洲电影视频在线| 久久不见久久见免费视频7| 成人精品视频一区二区三区尤物| 色婷婷一区二区| 欧美va亚洲va香蕉在线| 亚洲美女视频在线| 极品少妇xxxx偷拍精品少妇| kk眼镜猥琐国模调教系列一区二区| 欧美视频你懂的| 国产精品久久精品日日| 日本怡春院一区二区| 91麻豆精品秘密| 久久精品一区二区三区四区 | 午夜视频在线观看一区二区| 国产一区二区在线观看免费| 在线成人免费视频| 亚洲色图19p| 懂色av中文字幕一区二区三区|