機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
實(shí)現(xiàn)存儲(chǔ)器EEPROM AT24C02的數(shù)據(jù)讀寫操作
實(shí)現(xiàn)存儲(chǔ)器EEPROM AT24C02的數(shù)據(jù)讀寫操作
 更新時(shí)間:2010-1-29 16:42:09  點(diǎn)擊數(shù):0
【字體: 字體顏色

#include "INTRINS.H"
#include "reg52.h"

#define  WriteDeviceAddress 0xa0 //寫驅(qū)動(dòng)地址指令
#define  ReadDeviceAddress 0xa1  //讀驅(qū)動(dòng)地址指令

sbit AT24C02_SCL = 0xa4;
sbit AT24C02_SDA = 0xa5;

/*-------------------------------------------------------------
功能:發(fā)起始信號(hào)
------------------------------------------------------------*/
void Start_Cond()
{
 AT24C02_SCL = 0;
    _nop_();
 AT24C02_SDA = 1;
    _nop_();
 AT24C02_SCL = 1;
    _nop_();
 AT24C02_SDA = 0;
 _nop_();
}

/*-------------------------------------------------------------
功能:發(fā)停止信號(hào)
------------------------------------------------------------*/
void Stop_Cond()
{
 AT24C02_SCL = 0;
 _nop_();
 AT24C02_SDA = 0;
 _nop_();
 AT24C02_SCL = 1;
 _nop_();
 AT24C02_SDA = 1;
 _nop_();
}

/*-------------------------------------------------------------
功能:發(fā)確認(rèn)信號(hào)
------------------------------------------------------------*/
void Ack()
{
 AT24C02_SCL = 0;
 _nop_();
 AT24C02_SDA = 0;
 AT24C02_SCL = 1;
 _nop_();
 AT24C02_SCL = 0;
 _nop_();
 AT24C02_SDA = 1;
}

/*-------------------------------------------------------------
功能:發(fā)無(wú)確認(rèn)信號(hào)
------------------------------------------------------------*/
void NoAck()
{
 AT24C02_SCL = 0;
 _nop_();
 AT24C02_SDA = 1;
 _nop_();
 AT24C02_SCL = 1;
 _nop_();
 AT24C02_SCL = 0;
 _nop_();
}

/*-------------------------------------------------------------
功能:寫一個(gè)字節(jié)數(shù)據(jù)
------------------------------------------------------------*/
bit Write8Bit(unsigned char input)
{
 unsigned char i;
 for (i=0;i<8;i++)
 { 
  AT24C02_SCL = 0;
  input <<= 1;
  AT24C02_SDA = CY;
  AT24C02_SCL = 1;
 
 }
 AT24C02_SCL = 0;
    _nop_();
 AT24C02_SDA = 1;
 AT24C02_SCL = 1;
    _nop_();
 CY = AT24C02_SDA;
 return(CY) ;
}

/*-------------------------------------------------------------
功能:讀一個(gè)字節(jié)數(shù)據(jù)
------------------------------------------------------------*/
unsigned char Read8Bit()
 {
 unsigned char temp,rbyte=0;
 for (temp = 8;temp != 0;temp--)
 {
  AT24C02_SCL = 0;
  _nop_();
  rbyte = (rbyte << 1) | AT24C02_SDA;
  AT24C02_SCL = 1;
        _nop_();
 }
 return rbyte;
}

/*-------------------------------------------------------------
功能:從EEPROM中給定一個(gè)地址連續(xù)讀NLEN個(gè)字節(jié)數(shù)據(jù)存放在以指針
nContent開頭的往下內(nèi)容。
------------------------------------------------------------*/
bit Read_Flash ( unsigned char *nContent, unsigned char nAddr, unsigned char nLen )
{
 unsigned char Addr;
 Addr = nAddr;
 Start_Cond();    //寫開始信號(hào)
 Write8Bit(WriteDeviceAddress);  //寫驅(qū)動(dòng)地址
 Write8Bit(Addr);   //寫從EEPROM中讀的開始地址
        Start_Cond();    //寫開始信號(hào)
        Write8Bit(ReadDeviceAddress);  //寫讀數(shù)據(jù)指令
 while(--nLen)
 {

  *nContent=Read8Bit();  //讀出內(nèi)容
  nContent++;   //指針加1
  Ack();    //發(fā)確認(rèn)信號(hào)
 }
 *nContent=Read8Bit();   //讀一字節(jié)
  NoAck();    //沒有確認(rèn)信號(hào)
 Stop_Cond();    //發(fā)停止信號(hào)
 return(0);    //返回
}

/*-------------------------------------------------------------
功能:初始化EEPROM子程序內(nèi)容為FF
------------------------------------------------------------*/
bit Init_Flash ( unsigned int nPage ) //    8 Byte/1Page init 0xFF
{
 unsigned char nLen;
 unsigned char Addr;
 nLen=8;
    Addr=8 *nPage;
 Start_Cond();
    Write8Bit(WriteDeviceAddress);
 Write8Bit(Addr);
 for(;nLen!=0;nLen--)
    {
        if(Write8Bit(0xff)) break;  //if Write8Bit() Return 1 Write Flase
 }
 Stop_Cond();
    return(CY);
}

/*-------------------------------------------------------------
功能:從EEPROM中給定一個(gè)地址連續(xù)寫NLEN個(gè)字節(jié)數(shù)據(jù)存放在以指針
nContent開頭的往下內(nèi)容。
------------------------------------------------------------*/
bit Write_Flash ( unsigned char *nContent, unsigned char nAddr,unsigned char nLen)
{
 unsigned char i,temp;
 unsigned char Addr;
 Addr = nAddr;
 Start_Cond();     //寫開始信號(hào)
  Write8Bit(WriteDeviceAddress);   //寫驅(qū)動(dòng)地址
 Write8Bit(Addr);    //寫從EEPROM中寫的開始地址 
 for(i = 0;i < nLen;i++)
 {
  if(Addr%8==0)   //每頁(yè)8字節(jié)  //換頁(yè)
  {
   Stop_Cond();
                        _nop_();
   Start_Cond();
   Write8Bit(WriteDeviceAddress);
   Write8Bit(Addr);
  }
  temp = *nContent;
  if(Write8Bit(temp)) break;  //CY
  nContent++;
                Addr++;
 }
 Stop_Cond();     //發(fā)停止信號(hào)
 return(CY);
}

/*-------------------------------------------------------------
主程序
功能:實(shí)現(xiàn)存儲(chǔ)器EEPROM AT24C02的數(shù)據(jù)讀寫操作
------------------------------------------------------------*/
void main()
{
        unsigned char dat[16],i;

        Read_Flash(dat,0,16);  //讀出AT24C02中從地址0開始依次往后16個(gè)字節(jié)放入dat數(shù)組中  
        Init_Flash(0);    //將AT24C02的第0頁(yè)初始化為FF
        Read_Flash(dat,0,16);  //讀出AT24C02中從地址0開始依次往后16個(gè)字節(jié)放入dat數(shù)組中

        for(i = 0;i < 16;i++ )
        {
             dat[i] = i;   //對(duì)數(shù)組dat初始化為0---F
        }     
        Write_Flash(dat,0,16);  //將dat數(shù)組中的數(shù)據(jù)寫入AT24C02中地址從0開始
        Read_Flash(dat,1,16);  //讀出AT24C02中從地址1開始依次往后16個(gè)字節(jié)放入dat數(shù)組中
        while(1)
  {
   i = 9;
  }
}

  • 上一篇: 4×4鍵盤及8位數(shù)碼管顯示構(gòu)成的電子密碼鎖
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1