实现存储器EEPROM AT24C02的数据读写操作 采用IIC总线读写 C程序

合集下载

I2C总线AT24C02存储器读写程序

I2C总线AT24C02存储器读写程序
respons();//写完后调用应答函数
write_byte(date);//在芯片第address位置写date.
respons();//写完后调用应答函数
stop();//I2C结束时钟函数
}
uchar read_add(uchar address)
{
uchar date;
{ start();//I2C开始时钟函数
write_byte(0xa0);//at24c02的固定地址A,1010,AO-A3都接地都为0。
respons();//写完后调用应答函数
write_byte(address);//确定从at24c02的第address位置写数据。
aa=k;
ee=aa*2200;
if(D4==0)
{
delay (100);
if(D4==1)
{
aa++;
delay (1);
init();//写直址,最后低位应为0。
write_add(2,aa);//23为at24c02内部储存地址,0xaa为写到23地址的数据。
#include <reg52.h>
#define uint unsigned int //定义unsigned int 为uint
#define uchar unsigned char //定义unsigned char 为uchar
#define uchar unsigned char //定义unsigned char 为uchar
delay (1);
k=read_add(2);//送到P1口显示。//从23地址读数据

STM32----6----I2C读写AT24C02

STM32----6----I2C读写AT24C02

STM32----6----I2C读写AT24C02文章发表于:2011-05-09 13:51STM32作为主机I2C,读写24C02 EEPROM1、时钟和数据的传输:开始和停止条件,数据在SCL的高电平期间有效,在SCL的低电平期间改变。

2、开始条件:在SCL高电平期间,SDA产生一个下降沿3、停止条件:在SCL高电平期间,SDA产生一个上升沿4、应答:成功接收到数据(地址和数据),产生一个应答位(在第9个时钟周期,将SDA拉低)下面是源程序:原理上说,下面程序再移植时,只要将数据类型变化,可以应用到任何处理器AT24c02.h#ifndef __24CXX_H#define __24CXX_H#include "i2c.h"/***************************************************************- 说明:以下参数是AT24Cxx的寻址空间,C0x ,X 表示XK 如C01表示1K- 127表示2^7 1Kbit/8=128Byte 128字节- 255表示2^8 2Kbit/8=256Byte 256字节- 512表示2^9 4Kbit/8=512Byte 512字节-***************************************************************/#define AT24C01 127#define AT24C02 255#define AT24C04 511#define AT24C08 1023#define AT24C16 2047#define AT24C32 4095#define AT24C64 8191#define AT24C128 16383#define AT24C256 32767/**************************************************************--板子使用的是24c02,所以定义EE_TYPE为AT24C02**************************************************************/#define EE_TYPE AT24C02/**************************************************************--EEPROM的操作函数--24CXX驱动函数**************************************************************/u8 AT24CXX_ReadOneByte(u16 ReadAddr); //指定地址读取一个字节void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite); //指定地址写入一个字节void AT24CXX_WriteLenByte(u16 WriteAddr,u32 DataToWrite,u8 Len);//指定地址开始写入指定长度的数据u32 AT24CXX_ReadLenByte(u16 ReadAddr,u8 Len); //指定地址开始读取指定长度数据void AT24CXX_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite); //从指定地址开始写入指定长度的数据void AT24CXX_Read(u16 ReadAddr,u8 *pBuffer,u16 NumToRead); //从指定地址开始读出指定长度的数据u8 AT24CXX_Check(void); //检查器件void AT24CXX_Init(void); //初始化IIC#endif----------------------------------------------------------------------------------------------------------------------------------------- AT24c02.c#include "at24cxx.h"#include "delay.h"/*************************************************************************** - 功能描述:STM32f103 EEPORM初始化函数- 隶属模块:STM32 EEPROM操作- 函数属性:外部,使用户使用- 参数说明:无- 返回说明:无- 函数功能:实现I2C的初始化。

IIC总线协议及EEPROMAT24C02

IIC总线协议及EEPROMAT24C02

IIC总线协议及EEPROMAT24C02IIC总线协议及EEPROMAT24C02IIC总线协议是一种串行通信协议,用于在电子设备之间进行数据传输。

它也被称为I2C(Inter-Integrated Circuit)协议。

IIC总线协议由Philips(现在的NXP Semiconductors)在1982年开发,用于同一电路板上的集成电路芯片之间的通信。

IIC总线是一种主从式结构,其中一个设备作为主设备,其他设备作为从设备。

主设备负责控制数据传输和通信的时序。

每个从设备都有一个唯一的地址,主设备根据地址选择要与之通信的从设备。

从设备根据主设备发出的命令来执行特定的操作,例如读取数据或写入数据。

EEPROM是一种可擦写可编程只读存储器(Electrically Erasable Programmable Read-Only Memory),用于存储非易失性数据。

AT24C02是Microchip Technology公司制造的一种EEPROM芯片,具有容量为2Kbit的存储能力。

AT24C02采用了IIC总线协议,因此可以通过IIC总线与其他设备进行通信。

它有一个7位地址寄存器,可以设置其作为IIC总线上的从设备的地址。

在与主设备通信时,主设备发送一个启动条件,然后发送从设备地址,接下来是读写位和数据。

AT24C02根据主设备的指令来执行读取或写入操作。

AT24C02有一个内部的写保护电路,可以保护存储的数据被误写。

它还支持分页写入,即可以一次写入多个字节的数据,从而提高写入效率。

总结:IIC总线协议是一种用于串行通信的协议,适用于设备之间的数据传输。

AT24C02是一种采用IIC总线协议的EEPROM芯片,具有2Kbit的存储容量。

它通过主设备的控制来进行读写操作,同时具有写保护和分页写入等特性。

C51编写的AT24C02详细的读写程序

C51编写的AT24C02详细的读写程序

C51_AT24C02读写程序:/*void start() //开始信号void stop() //停止信号void Ack() //发确认信号void NoAck() //发无确认信号void init()//初始化信号,拉高SDA和SCL两条总线bit write_byte(uchar date)//写一字节,将date 写入AT24C02 中uchar read_byte()//读一字节,从AT24C02 中读一字节bit busy() //应答查询,stop()后,启动A T24C02内部写周期,启动查询//初始化EEPROM子程序内容为0XFF,nPage(0~31)void Init_Flash(uchar nPage) //8 bytes/1 page init 0xFFvoid write_add(uchar address,uchar date)//向AT24C02 中写数据//从AT24C02中给定的地址nAddr起,将存放在以指针nContent开头的存储空间中的nLen 个字节数据,连续写入AT24C02void write_flash(uchar *nContent,uchar nAddr, uchar nLen)uchar read_add(uchar address)//从AT24C02 中读出数据//从AT24C02中给定的地址nAddr起,读取nLen个字节数据存放在以指针nContent开头的存储空间。

void read_flash(uchar *nContent,uchar nAddr, uchar nLen)*//*单片机P2口接74HC138(三八译码器)P2.3--74HC138:/EI、P2.2--74HC138:A2、P2.1--74HC138:A1、P2.0--74HC138:A0译码器输出Y0,Y1、Y2、Y3、Y4、Y5、Y6、Y7均低电平有效,分别选通1~8个数码管。

AT24C02存储器的读写及显示

AT24C02存储器的读写及显示

天津职业技术师范大学课程设计AT24C02存储器的读写及显示自动化与电气工程学院测控0702关蓓蓓(6 号)宋三虎(22号)王成坤(25号)一、设计任务:通过对EEPROM器件AT24C02的读写用LM016来显示↓流程图二、程序设计:#include<reg51.h>#include<absacc.h>#define REG0 XBYTE[0x0000]#define REG1 XBYTE[0x0001]#define REG2 XBYTE[0x0002]#define REG3 XBYTE[0x0003]Unsigned char busyflag;unsigned char dat,datn;unsigned char word1[16]={"This programm"};unsigned char word2[16]={"by SongSanhu"};code unsigned char word3[16]={"!"};codeunsignedcharword4[16]={"***************!"};code unsigned char word5[16]={"Wellcome To!"};code unsigned char word6[16]={"proteus Tool!"}; sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;sbit P15=P1^5;sbit P16=P1^6;sbit P17=P1^7;#define unchar unsigned char#define uint unsigned int#include <reg51.h>#include "intrins.h"sbit Scl=P3^4;sbit Sda=P3^5;void Start(void){Sda=1;Scl=1;_nop_();_nop_();_nop_();_nop_(); Sda=0;_nop_();_nop_();_nop_();_nop_();}void Stop(void) {Sda=0;Scl=1;_nop_(); _nop_();_nop_();_nop_(); Sda=1;_nop_();_nop_();_nop_();_nop_();}void Ack(void) {Sda=0;_nop_();_nop_();_nop_();_nop_();Scl=1;_nop_();_nop_();_nop_();_nop_();Scl=0;}void NoAck(void) {Sda=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Scl=0;}void Send(unsigned Data) {unsigned BitCounter=8; unsigned temp;do{temp=Data;Scl=0;_nop_();_nop_();_nop_();_nop_();if((temp&0x80)==0x80) Sda=1;Sda=0;Scl=1;temp=Data<<1;Data=temp; BitCounter--;}while(BitCounter);Scl=0;}uchar; Read(void){unsigned temp=0; unsigned temp1=0; unsigned BitCounter=8; Sda=1;do{Scl=0;_nop_();_nop_();_nop_();_nop_();Scl=1;_nop_();_nop_();_nop_();_nop_();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}void WrToROM(unsigned Data[],unsigned Address,unsigned Num) {Unsigned char i;unsigned *PData;PData=Data;Send(0xa0);Ack();Send(Address);Ack();for(i=0;i<Num;i++){Send(*(PData+i));Ack();}Stop();}void RdFromROM(unsigned Data[],unsigned Address,unsigned Num){int i=0;unsigned *PData;PData=Data;for(i=0;i<Num;i++){Start();Send(0xa0);Send(Address+i);Ack();Start();Send(0xa1);Ack();*(PData+i)=Read();Scl=0;NoAck();Stop();}}void busy(){do{busyflag=REG1;}while(busyflag);}void wrc(unsigned char wcon) {busy();REG0=wcon;}void wrd(unsigned char wdat) {busy();REG2=wdat;}void rdd(){busy();dat=REG3;}void lcdint(){wrc(0x38);wrc(0x01);wrc(0x06);wrc(0x0c);void wrn(unsigned char word[]) {unsigned char i;for(i=0;i<16;i++){wrd(word[i]);}}void main(){unsigned char i;lcdint();wrc(0x80);wrn(word1);wrc(0xc0);wrn(word2);while(1){if(P10==0)for(i=0;i<16;i++)word1[i]='d';WrToROM(word1,0x00,16); wrc(0x80);wrn(word1);}if(P11==0){RdFromROM(word2,0x00,16); WrToROM(word2,0x80,16); wrc(0x80);wrn(word1);wrc(0xc0);wrn(word2);}if(P12==0){wrc(0x80);wrn(word3);wrc(0xc0);}if(P13==0) {wrc(0x80); wrn(word5); wrc(0xc0); wrn(word6); }if(P14==0) {wrc(0x80); wrn(word3); wrc(0xc0); wrn(word4); }if(P15==0) {wrc(0x80); wrn(word5); wrc(0xc0);}if(P16==0){wrc(0x80);wrn(word3);wrc(0xc0);wrn(word4);}if(P17==0){wrc(0x80);wrn(word5);wrc(0xc0);wrn(word6);}}}三、硬件电路设计:四、总结:学习protues、keil软件,掌握绘制原理,对AT24C02存储器的读写编辑有了更多的理解,通过对存储器的读写以及输出完成老师给我们的任务。

E2PROM芯片24C02的读写程序

E2PROM芯片24C02的读写程序

E2PROM芯片24C02的读写程序一、实验目的:给24C02的内部RAM写入一组数据,数据从24C02内部RAM的01h开始存放。

然后再把这组数据读出来,检验写入和读出是否正确。

在这里我们给24C02中写入0、1、2的段码,然后把它读出来,送到数码管显示。

二、理论知识准备:上面两个实验主要学习的是利用单片机的串口进行通讯,本实验要介绍的是基于I2C总线的串行通讯方法,下面我们先介绍一下I2C总线的相关理论知识。

(一)、I2C总线概念I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。

目前很多公司都推出了基于I2C总线的外围器件,例如我们学习板上的24C02芯片,就是一个带有I2C总线接口的E2PROM存储器,具有掉电记忆的功能,方便进行数据的长期保存。

(二)、I2C总线结构I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。

具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。

连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。

一个典型的I2C总线应用系统的组成结构如下图所示(假设图中的微控制器、LCD驱动、E2PROM、ADC各器件都是具有I2C总线接口的器件):我们知道单片机串行通讯的发送和接收一般都各用一条线TXD和RXD,而I2C总线的数据线既可以发送也可以接受,工作方式可以通过软件设置。

所以,I2C总线结构的硬件结构非常简洁。

当某器件向总线上发送信息时,它就是发送器,而当其从总线上接收信息时,又成为接收器。

(三)、I2C总线上的数据传送下面我们看看I2C总线是如何进行数据传送的。

我们知道,在一根数据线上传送数据时必须一位一位的进行,所以我们首先研究位传送。

1、位传输I2C总线每传送一位数据必须有一个时钟脉冲。

被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,示意图如下图所示,在标准模式下,高低电平宽度必须不小于4.7us。

I2C总线编程实例(k1-k4:写入、读取、加+、清零)【EEPROM-AT24C02】

I2C总线编程实例(k1-k4:写入、读取、加+、清零)【EEPROM-AT24C02】

I2C总线编程实例(k1-k4:写⼊、读取、加+、清零)【EEPROM-AT24C02】(1)AT24C02是⼀种EEPROM元器件,是⼀种只读寄存器,断电保持,可保存数据100年, 是⼀种可擦除读写的芯⽚,相当于ROM硬盘,在下⾯实验中充当从机⾓⾊;(2)51在下⾯实验中充当主机⾓⾊;(3)在IIC总线标准协议上,进⾏51单⽚机(主机)和AT24C02(从机)的相互读写数据的操作。

⼩结:51单⽚机和各种EEPROM芯⽚之间可以通过IIC总线标准协议进⾏数据交互(通信)的。

实验:四个独⽴按键对应四个不同的功能,k1:将数据写⼊单⽚机,断电保存k2:读取上次保存的数据,断电后仍可读取上次保存的数据k3:当前数据+1k4:当前数据清零------------------------------------------------------------- 采⽤多⽂件的框架模式 -------------------------------------------------------------i2c.h:/*这个⽂件进⾏宏定义:定义I2C串⾏总线的相关数据端⼝、⽅法函数,以及定义⼀些使⽤频率较⾼的元素*/#ifndef _I2C_H_ // 如果没有定义宏#define _I2C_H_ // 定义⼀个宏// 需要⽤到51单⽚机的管脚,所以需要引⼊库⽂件#include <reg52.h>// 查单⽚机原理图可知(其中,SCL是时钟线,SDA是数据线)sbit SCL=P2^1;sbit SDA=P2^0;/* 相关函数 */// I2C的起始信号函数void I2cStart();// I2C的终⽌信号函数void I2cStop();// I2C发送(写⼊)字节函数,成功返回1,失败返回0unsigned char I2cSendByte(unsigned char dat);// I2C接收(读取)字节函数,返回读取的数据unsigned char I2cReadByte();// AT24C02芯⽚的写⼊数据函数void At24c02Write(unsigned char addr, unsigned dat);// AT24C02芯⽚的读取数据函数,返回读取的数据unsigned char At24c02Read(unsigned char addr);#endif // 结束i2c.c:/* 这个⽂件专门针对I2C模块的编程,其他模块可以新建另外⼀个⽂件 */#include <i2c.h> // 引⼊I2C的库⽂件/******************************************************************************** 函数名 : Delay10us()* 函数功能 : 延时10us* 输⼊ : ⽆* 输出 : ⽆*******************************************************************************/void Delay10us() //误差 0usunsigned char a,b;for(b=1;b>0;b--)for(a=2;a>0;a--);}/******************************************************************************** 函数名 : I2cStart()* 函数功能 : 起始信号:在SCL时钟信号在⾼电平期间SDA信号产⽣⼀个下降沿* 输⼊ : ⽆* 输出 : ⽆* 备注 : 起始之后SDA和SCL都为0,表⽰总线被主机占⽤*******************************************************************************/void I2cStart(){// 根据各个单⽚机的时序图来写SDA=1;Delay10us();SCL=1;Delay10us(); // 建⽴时间是SDA保持时间>4.7usSDA=0;Delay10us(); // 保持时间是>4usSCL=0;Delay10us();}/******************************************************************************** 函数名 : I2cStop()* 函数功能 : 终⽌信号:在SCL时钟信号⾼电平期间SDA信号产⽣⼀个上升沿* 输⼊ : ⽆* 输出 : ⽆* 备注 : 结束之后保持SDA和SCL都为1;表⽰总线处于空闲状态*******************************************************************************/void I2cStop(){// 根据各个单⽚机的时序图来写SDA=0;Delay10us();SCL=1;Delay10us(); // 建⽴时间是SDA保持时间>4.7usSDA=1;Delay10us(); // 保持时间是>4us}/******************************************************************************** 函数名 : I2cSendByte(unsigned char dat)* 函数功能 : 通过I2C发送⼀个字节。

单片机课程设计-IIC总线式EEPROM存储器应用设计

单片机课程设计-IIC总线式EEPROM存储器应用设计

目录1 设计要求 (2)2 设计目的 (2)3 器件EEPROM的介绍 (2)3.1 EEPROM简介 (2)3.2 EEPROM24XX系列功能概述 (3)4 IIC协议的介绍 (3)4.1 IIC协议总线特征 (3)4.2 IIC协议工作原理 (3)4.3 IIC协议总线基本状态 (3)4.4 寻址约定 (5)5 EEPROM读写功能实现 (5)5.1写操作 (5)5.1.1 字节写操作 (6)5.1.2 页写入操作 (6)5.2 确认查询 (7)5.3 读操作 (7)5.3.1 当前地址的读操作 (8)5.3.2 随机读操作 (8)5.3.3 连续读操作 (9)6 具体设计过程 (10)6.1 程序流程设计 (10)6.2执行结果 (13)6.3 系统组成模块结构及功能 (15)6.3.1 函数定义 (15)6.3.2 主函数设计 (17)6.3.3 源程序 (19)7 设计心得体会 (27)8 参考文献 (28)IIC总线式EEPROM存储器应用设计1 设计要求利用51单片机和IIC总线式EEPROM芯片24C02进行存储器设计。

按下KEYWRITE1键,向24C02存储器写入数据1和2;按下KEYWRITE2键,向24C02存储器写入数据3和4;按下KEYREAD键,从24C02存储器读出刚写入的数据数据;写入数据显示在左两位,读出数据显示在右两位。

如图1.1所示。

图1.1 系统仿真运行图2 设计目的通过设计,了解IIC协议的基本原理,并对EEPROM读写功能的实现有个系统的概念,对其实现过程比较清楚。

同时,在设计中,巩固我们所学的理论知识。

3 器件EEPROM的介绍3.1 EEPROM简介EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。

EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*************************************************************** 功能:11:32 2008-6-27作者:SG时间:2004-03-15版本:V1.0***************************************************************/#include "INTRINS.H"#include "reg52.h"#define WriteDeviceAddress 0xa0 //写驱动地址指令#define ReadDeviceAddress 0xa1 //读驱动地址指令sbit AT24C02_SCL = 0xa4;sbit AT24C02_SDA = 0xa5;/*-------------------------------------------------------------功能:发起始信号------------------------------------------------------------*/void Start_Cond(){AT24C02_SCL = 0;_nop_();AT24C02_SDA = 1;_nop_();AT24C02_SCL = 1;_nop_();AT24C02_SDA = 0;_nop_();}/*-------------------------------------------------------------功能:发停止信号------------------------------------------------------------*/void Stop_Cond(){AT24C02_SCL = 0;_nop_();AT24C02_SDA = 0;_nop_();AT24C02_SCL = 1;_nop_();AT24C02_SDA = 1;_nop_();/*------------------------------------------------------------- 功能:发确认信号------------------------------------------------------------*/ void Ack(){AT24C02_SCL = 0;_nop_();AT24C02_SDA = 0;AT24C02_SCL = 1;_nop_();AT24C02_SCL = 0;_nop_();AT24C02_SDA = 1;}/*------------------------------------------------------------- 功能:发无确认信号------------------------------------------------------------*/ void NoAck(){AT24C02_SCL = 0;_nop_();AT24C02_SDA = 1;_nop_();AT24C02_SCL = 1;_nop_();AT24C02_SCL = 0;_nop_();}/*------------------------------------------------------------- 功能:写一个字节数据------------------------------------------------------------*/ bit Write8Bit(unsigned char input){unsigned char i;for (i=0;i<8;i++){A T24C02_SCL = 0;input <<= 1;A T24C02_SDA = CY;A T24C02_SCL = 1;}AT24C02_SCL = 0;_nop_();AT24C02_SDA = 1;AT24C02_SCL = 1;_nop_();CY = AT24C02_SDA;return(CY) ;}/*-------------------------------------------------------------功能:读一个字节数据------------------------------------------------------------*/unsigned char Read8Bit(){unsigned char temp,rbyte=0;for (temp = 8;temp != 0;temp--){A T24C02_SCL = 0;_nop_();rbyte = (rbyte << 1) | AT24C02_SDA;A T24C02_SCL = 1;_nop_();}return rbyte;}/*-------------------------------------------------------------功能:从EEPROM中给定一个地址连续读NLEN个字节数据存放在以指针nContent开头的往下内容。

------------------------------------------------------------*/bit Read_Flash ( unsigned char *nContent, unsigned char nAddr, unsigned char nLen ) {unsigned char Addr;Addr = nAddr;Start_Cond(); //写开始信号Write8Bit(WriteDeviceAddress); //写驱动地址Write8Bit(Addr); //写从EEPROM中读的开始地址Start_Cond(); //写开始信号Write8Bit(ReadDeviceAddress); //写读数据指令while(--nLen){*nContent=Read8Bit(); //读出内容nContent++; //指针加1Ack(); //发确认信号}*nContent=Read8Bit(); //读一字节NoAck(); //没有确认信号Stop_Cond(); //发停止信号return(0); //返回}/*-------------------------------------------------------------功能:初始化EEPROM子程序内容为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中给定一个地址连续写NLEN个字节数据存放在以指针nContent开头的往下内容。

------------------------------------------------------------*/bit Write_Flash ( unsigned char *nContent, unsigned char nAddr,unsigned char nLen) {unsigned char i,temp;unsigned char Addr;Addr = nAddr;Start_Cond(); //写开始信号Write8Bit(WriteDeviceAddress); //写驱动地址Write8Bit(Addr); //写从EEPROM中写的开始地址for(i = 0;i < nLen;i++){if(Addr%8==0) //每页8字节//换页{Stop_Cond();_nop_();Start_Cond();Write8Bit(WriteDeviceAddress);Write8Bit(Addr);}temp = *nContent;if(Write8Bit(temp)) break; //CYnContent++;Addr++;}Stop_Cond(); //发停止信号return(CY);}/*-------------------------------------------------------------主程序功能:实现存储器EEPROM AT24C02的数据读写操作------------------------------------------------------------*/void main(){unsigned char dat[16],i;Read_Flash(dat,0,16); //读出AT24C02中从地址0开始依次往后16个字节放入dat 数组中Init_Flash(0); //将AT24C02的第0页初始化为FFRead_Flash(dat,0,16); //读出AT24C02中从地址0开始依次往后16个字节放入dat 数组中for(i = 0;i < 16;i++ ){dat[i] = i; //对数组dat初始化为0---F}Write_Flash(dat,0,16); //将dat数组中的数据写入AT24C02中地址从0开始Read_Flash(dat,1,16); //读出AT24C02中从地址1开始依次往后16个字节放入dat 数组中while(1){i = 9;}}。

相关文档
最新文档