標(biāo)題: 常用的EEPROM器件AT24C02的驅(qū)動(dòng)程序以及IIC協(xié)議驅(qū)動(dòng) [打印本頁]

作者: iCekrY    時(shí)間: 2018-10-25 17:36
標(biāo)題: 常用的EEPROM器件AT24C02的驅(qū)動(dòng)程序以及IIC協(xié)議驅(qū)動(dòng)
AT24C02的驅(qū)動(dòng)可以作為模塊化的程序直接使用非常方便,但需要配合著IIC協(xié)議共同使用,在這里分享給大家。

單片機(jī)源程序:
  1. #include "AT24C02.H"
  2. #include "IIC.H"

  3. void At24c02_write_add(unsigned char address, unsigned char dat)
  4. {
  5.         IIC_start();
  6.         IIC_write_byte(0xa0);
  7.         IIC_respons();
  8.         IIC_write_byte(address);
  9.         IIC_respons();
  10.         IIC_write_byte(dat);
  11.         IIC_respons();
  12.         IIC_stop();
  13. }

  14. //由地址讀取
  15. unsigned char At24c02_read_add(unsigned char address)
  16. {
  17.         unsigned char dat;
  18.         IIC_start();
  19.         IIC_write_byte(0xa0);
  20.         IIC_respons();
  21.         IIC_write_byte(address);
  22.         IIC_respons();
  23.         IIC_start();
  24.         IIC_write_byte(0xa1);
  25.         IIC_respons();
  26.   dat=IIC_read_byte();
  27.         IIC_stop();
  28.         return dat;
  29. }

  30. void At24c02_write_page(unsigned char address,unsigned char dat[],unsigned char Cnt)
  31. {
  32.         unsigned char i;
  33.         IIC_start();
  34.         IIC_write_byte(0xa0);
  35.         IIC_respons();
  36.         IIC_write_byte(address);
  37.         IIC_respons();
  38.         for(i=0;i<Cnt;i++)
  39.         {
  40.                 IIC_write_byte(dat[i]);
  41.                 IIC_respons();
  42.         }
  43.         IIC_stop();
  44. }



  45. void At24c02_read_page(unsigned char address,unsigned char dat[],unsigned char Cnt)
  46. {
  47.         unsigned char i,j;
  48.         IIC_start();
  49.         IIC_write_byte(0xa0);
  50.         IIC_respons();
  51.         IIC_write_byte(address);
  52.         IIC_respons();
  53.         IIC_start();
  54.         IIC_write_byte(0xa1);
  55.         IIC_respons();
  56.         for(i=0;i<Cnt;i++)
  57.         {
  58.                 dat[i]=IIC_read_byte();
  59.                 IIC_SDA=0;                                        //這里必須有,是MCU向EEPROM發(fā)送
  60.                 IIC_SCL=1;                                        //應(yīng)答脈沖
  61.                 for(j=20;j>0;j--);
  62.                 IIC_SCL=0;        
  63.         }
  64.         IIC_stop();
  65. }
復(fù)制代碼


更多詳細(xì)代碼和頭文件申明都在壓縮文件里 親測。

全部資料51hei下載地址:
AT24C02驅(qū)動(dòng)和IIC協(xié)議.rar (1.62 KB, 下載次數(shù): 41)



作者: KB1996    時(shí)間: 2018-12-9 09:07
n你這樣不就全寫到一個(gè)地址了么,不會(huì)覆蓋嗎




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1