《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 24C64子程序

24C64子程序

2009-01-16
關鍵詞: 源代碼 單片機

24C64子程序

/*24C64子程序 */
bit   I2C_Start(void);
void  I2C_Stop(void);
void  I2C_Ack(void);
void  I2C_Nack(void);
bit   I2C_Send_Byte( uchar);
uchar I2C_Receive_Byte(void);
void  AT24C64_R(void *mcu_address,uint AT24C64_address,uint count);
void  AT24C64_W(void *mcu_address,uint AT24C64_address,uint count);
void  Delay_10_uS(void)
{
 char i=10;
 while(i--);
}
void Delay_N_mS( uint n_milisecond)  /* n mS delay */
{
 uchar i;
 while(n_milisecond--)
 {
  i=37;
  while(i--);
 }
}
bit I2C_Start(void)
{
 Delay_10_uS();
 I2C_SDA =1;
 Delay_10_uS();
 I2C_SCK =1;
 Delay_10_uS();
 if ( I2C_SDA == 0) return 0;
 if ( I2C_SCK == 0) return 0;
 I2C_SDA = 0;
 Delay_10_uS();
 I2C_SCK = 0;
 Delay_10_uS();
 return 1;
}
void  I2C_Stop(void)
{
 Delay_10_uS();
 I2C_SDA = 0;
 Delay_10_uS();
 I2C_SCK = 1;
 Delay_10_uS();
 I2C_SDA = 1;
 Delay_10_uS();
}
void I2C_Ack(void)
{
 Delay_10_uS();
 I2C_SDA=0;
 Delay_10_uS();
 I2C_SCK=1;
 Delay_10_uS();
 I2C_SCK=0;
 Delay_10_uS();
}
void I2C_Nack(void)
{
 Delay_10_uS();
 I2C_SDA=1;
 Delay_10_uS();
 I2C_SCK=1;
 Delay_10_uS();
 I2C_SCK=0;
 Delay_10_uS();
}
bit I2C_Send_Byte( uchar d)
{
 uchar i = 8;
 bit bit_ack;
 while( i-- )
 {
  Delay_10_uS();
  if ( d &0x80 )   I2C_SDA =1;
  else             I2C_SDA =0;
  Delay_10_uS();
  I2C_SCK = 1;
  Delay_10_uS();
  I2C_SCK = 0;
  d = d << 1;
 }
 Delay_10_uS();
 I2C_SDA = 1;
 Delay_10_uS();
 I2C_SCK = 1;
 Delay_10_uS();
 bit_ack = I2C_SDA;
 I2C_SCK =0;
 Delay_10_uS();
 return bit_ack;
}
uchar I2C_Receive_Byte(void)
{
 uchar i = 8, d;
 Delay_10_uS();
 I2C_SDA = 1;
 while ( i--)
 {
  d = d << 1;
  Delay_10_uS();
  I2C_SCK =1;
  if ( I2C_SDA ) d++;
  Delay_10_uS();
  I2C_SCK =0;
 }
 return d;
}
void AT24C64_W(void *mcu_address,uint AT24C64_address,uint count)
{
 DOG_WDI=!DOG_WDI;
 DOGTIME=0;
 while(count--)
 {
  I2C_Start();
  /*I2C_Send_Byte( 0xa0 + AT24C64_address /256 *2);*/  /* 24C16  USE */
  I2C_Send_Byte( 0xa0 );
  I2C_Send_Byte(  AT24C64_address/256 );
  I2C_Send_Byte( AT24C64_address %256 );
  I2C_Send_Byte( *(uchar*)mcu_address );
  I2C_Stop();
  Delay_N_mS(10);       /* waiting for write cycle to be completed */
  ((uchar*)mcu_address)++;
  AT24C64_address++;
 }
}
void AT24C64_R(void *mcu_address,uint AT24C64_address,uint count)
{
 DOG_WDI=!DOG_WDI;
 DOGTIME=0;
 while(count--)
 {
  I2C_Start();
  /*I2C_Send_Byte( 0xa0 + AT24C64_address / 256 *2 );*/   /* 24C16 USE */
  I2C_Send_Byte( 0xa0 );
  I2C_Send_Byte( AT24C64_address/256 );
  I2C_Send_Byte( AT24C64_address % 256 );
  I2C_Start();
  /*I2C_Send_Byte( 0xa1 + AT24C64_address /256 *2 );*/
  I2C_Send_Byte( 0xa1 );
  *(uchar*)mcu_address = I2C_Receive_Byte();
  I2C_Nack();
  I2C_Stop();
  ((uchar*)mcu_address)++;
  AT24C64_address++;
 }
}

24c32/24c64中文資料

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 久久精品94精品久久精品| 欧美一级片观看| 樱桃黄高清完整版在线观看| 无码专区HEYZO色欲AV| 在公交车上弄到高c了漫画| 国产成人A亚洲精V品无码| 免费一级美国片在线观看| 九九九国产精品成人免费视频| 一区二区三区免费在线视频| 欧美精品综合一区二区三区| 精品午夜福利在线观看| 机机对机机的30分钟免费软件| 少妇激情av一区二区| 国产片欧美片亚洲片久久综合| 免费无码一区二区三区蜜桃大| 亚洲AV福利天堂一区二区三| yellow字幕网在线zmzz91| 免费看男女下面日出水来| 狠狠色综合网久久久久久| 日本在线视频www色| 国产线路中文字幕| 又粗又硬又大又爽免费视频播放| 亚洲国产欧美一区二区欧美 | 亚洲国产精品xo在线观看| 一本之道在线视频| 足恋玩丝袜脚视频免费网站| 欧美色视频在线| 强波多野结衣痴汉电车| 国产成人精品久久一区二区小说| 亚洲色欲久久久综合网东京热 | 国产私拍福利精品视频推出| 男男全肉高h视频在线观看| 日本高清H色视频在线观看| 国产精品欧美一区二区三区不卡| 免费视频淫片aa毛片| 久久久老熟女一区二区三区| 做受视频60秒试看| 特级毛片a级毛片在线播放www| 成人性生交大片免费视频| 国产国产人免费视频成69大陆| 亚洲国产精品福利片在线观看|