久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

IIC總線時序

作者:lch900   來源:lch900   點擊數:  更新時間:2014年05月16日   【字體:

 

 
 
最近做的項目中涉及了IIC總線的運用
 
IIC總線的運用范圍十分廣泛
 
寫下博客記錄
 
 
 
IIC總線延時 大于4.7us
 
 
 
#define Decoded_iic_delay() \
{\
 Decoded_iic_DELAY_TMP=Decoded_iic_DELAY_VALUE;\
 while(--Decoded_iic_DELAY_TMP);\
}
 
初始化
 
void Decoded_iic_init()
{
 Decoded_iic_SCL=1;
 Decoded_iic_delay();
 Decoded_iic_SDA=1;
 Decoded_iic_delay();
}
 
開始信號
 
void Decoded_iic_start()
{
 Decoded_iic_SDA=1; 
 Decoded_iic_delay();
 //Myputchar(Decoded_iic_SDA);
 
 Decoded_iic_SCL=1;
 Decoded_iic_delay();
 //Myputchar(Decoded_iic_SCL);
 
 Decoded_iic_SDA=0;
 Decoded_iic_delay();
 //Myputchar(Decoded_iic_SDA);
 
 Decoded_iic_SCL=0;
 Decoded_iic_delay();
 //Myputchar(Decoded_iic_SCL);
}
 
寫時序
 
void Decoded_iic_write(uchar dat)
 uchar idata t=8;
 while(t--)
 {
  Decoded_iic_SDA=(bit)(dat&0x80);
  dat<<=1;
  Decoded_iic_SCL=1;
  Decoded_iic_delay();
  Decoded_iic_SCL=0;
  Decoded_iic_delay();
 }
}
 
讀時序
 
uchar Decoded_iic_read()
{
 uchar dat=0;
 uchar t=8;
 
 //Myputchar(dat);
 
 Decoded_iic_SDA=1;讀之前SDA拉高
 while(t--)
 {
  Decoded_iic_SCL=1;
  Decoded_iic_delay();
 
  dat <<= 1;一定要先移位后讀 如果先讀后移位會擠掉最高位
 
  if(Decoded_iic_SDA)
  {
   dat |= 0x01;
  }
 
  Decoded_iic_SCL=0;
  Decoded_iic_delay();
 }
 
 
 
 return dat;
}
 
獲取ACK
 
bit Decoded_iic_getack()
{
 bit ack;
 Decoded_iic_SDA=1;SDA為高釋放總線
 Decoded_iic_delay();
 Decoded_iic_SCL=1;
 Decoded_iic_delay();
 ack=Decoded_iic_SDA;
 
 Decoded_iic_SCL=0;
 Decoded_iic_delay();
 
 return ack;
}
 
發送ACK
 
void Decoded_iic_putack(bit ack)
{
 Decoded_iic_SDA=ack;
 Decoded_iic_SCL=1;
 Decoded_iic_delay();
 Decoded_iic_SCL=0;
 Decoded_iic_delay(); 
}
 
結束信號
 
void Decoded_iic_stop()
{
 uint t=Decoded_iic_WAIT_VALUE;
 Decoded_iic_SDA=0;
 Decoded_iic_delay();
 Decoded_iic_SCL=1;
 Decoded_iic_delay();
 Decoded_iic_SDA=1;
 Decoded_iic_delay();
 while(t--);
}
 
綜合發送
 
bit Decoded_iic_puts(unsigned char SlaveAddr,uchar *dat,unsigned int Length)
{
 if ( Length == 0 ) return 0;
 
 Decoded_iic_start();
 
 Decoded_iic_write(SlaveAddr);發送地址
 
 if ( Decoded_iic_getack() )
 {
  Decoded_iic_stop();
  return 1;
 }
 
發送數據
 do
 {
  Decoded_iic_write(*dat++);
  if ( Decoded_iic_getack() )
  { 
   //Myputchar('c');
    break;
  }
 } while ( --Length != 0 );
 
 Decoded_iic_stop();
 
 if ( Length == 0 )
 {
  //Myputchar('a');
  return 0;
  
 }
 else
 {
  //Myputchar('b');
  return 1;
  
 }
}
 
綜合接收數據
 
bit Decoded_iic_gets(unsigned char SlaveAddr,uchar *dat,unsigned int Length)
{
 if(!Length)
 return 0;
 
 Decoded_iic_start();
 Decoded_iic_write(SlaveAddr+1);發送地址+1  +1是讀的意思
 
 if(Decoded_iic_getack())
 {
  Decoded_iic_stop();
  return 1; 
 }
 
 for (;;)
 {
  *dat++ = Decoded_iic_read();
  if ( --Length == 0 )
  {
   Decoded_iic_putack(1);發送非ACK
   break;
  }
  Decoded_iic_putack(0);發送ACK
 }
//接收完畢,停止I2C總線,并返回結果
 Decoded_iic_stop();
 return 0;
}
 
關閉窗口

相關文章

主站蜘蛛池模板: 欧美一区二区三区在线看 | 99久久亚洲 | 天天干天天色 | 日本激情视频在线播放 | 精品日韩在线 | 99热热精品 | 中文字幕在线观看视频一区 | 亚洲一区 | 在线观看毛片网站 | www.日韩欧美 | 一区二区三区亚洲精品国 | 午夜影视免费片在线观看 | 高清人人天天夜夜曰狠狠狠狠 | 成人一区二区视频 | 婷婷综合色 | 欧美一区二区视频 | 国产精品九九九 | 亚洲精品日韩一区二区电影 | 一区二区三区四区在线 | 黄片毛片免费看 | 国产免费一区二区三区 | 欧美黄色一区 | 91精品久久久久久久久久小网站 | 久久国内精品 | 91成人影院 | 久久毛片网站 | 99精品一级欧美片免费播放 | 视频在线亚洲 | 成人欧美一区二区三区在线播放 | 99re国产视频| 在线视频91 | 欧美日韩亚洲视频 | 午夜爱爱毛片xxxx视频免费看 | 99九九久久 | 国产在线成人 | 色综合桃花网 | 九一精品 | 夜夜操av | 欧美激情久久久久久 | 久久欧美高清二区三区 | 日韩一区精品 |