如何使用单片机模拟读写24C01EEPROM数据

合集下载

eeprom读写程序详解

eeprom读写程序详解

eeprom读写程序详解

EEPROM(Electrically Erasable Programmable Read-Only Memory) 是一种可编程只读存储器,可以在电信号的作用下进行擦写和改写。它通常用于存储单片机或其他嵌入式系统中的数据、设置参数、配置文件等。

对于 EEPROM 的读写程序,需要考虑以下几个方面:

1. 读操作:

读操作通常包括以下步骤:

- 等待上次读操作完成。

- 获取要读取的数据的单元地址。

- 将 EEPGD 位和 CFGS 位清零。

- 启动读操作控制位 RD。

- 等待本次读操作完成。

- 将该单元地址中对应的数据返回。

在读取 EEPROM 数据时,为了避免芯片在一瞬间无法获取到数据,需要给芯片一定的时间来稳定获取数据。因此,在读取操作中需要加入等待步骤。

2. 写操作:

写操作通常包括以下步骤:

- 等待上次写操作完成。

- 获取要写的数据的单元地址。

- 将要写的数据写入 EEPROM 的单元中。

- 将 EEPGD 位和 CFGS 位清零。

- 启动写操作控制位 WP。

- 等待写操作完成。

在写操作中,为了确保数据的可靠性,需要将要写的数据写入EEPROM 的单元中,并等待写操作完成。同时,在写操作过程中,需要注意避免对无关的单元进行写操作,以免损坏 EEPROM 芯片。

3. 中断处理:

在 EEPROM 的读写操作中,通常需要加入中断处理机制,以便在读写过程中及时响应和处理异常情况。例如,在读取 EEPROM 数据时,如果 EEPROM 芯片出现故障,可能会导致读取失败。为了避免这种情况,可以在读取操作中加入中断处理机制,在读取失败时及时报警或采取相应的应对措施。

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 0xFF

void write_add(uchar address,uchar date)//向AT24C02 中写数据

//从AT24C02中给定的地址nAddr起,将存放在以指针nContent开头的存储空间中的nLen 个字节数据,连续写入AT24C02

void 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)

51单片机读写内部EEPROM详解

51单片机读写内部EEPROM详解
#define uint unsigned int
#endif
/**********************************
PIN口定义
**********************************
#define LCD1602_DATAPINS P0
sbit LCD1602_E二P 2八7;
xcx(0x2002,6);//对EEPROM区2002h写入6
*/
/*
函数:擦除某一扇区(每个扇区512字节)
入口:addr=某一扇区首地址
*/
void cc(uint addr)
//打开IAP功能(ISP_CONTR.7)=允许编程改变Flash设置Flash操作等待时 间
//0x83(晶振v5M)0x82(晶振v10M)0x81(晶振v20M)0x80(晶振<40M)
cwk.baidu.com(0x2000);//擦除第1个扇区(2000h~21FFh
xcx(0x2002,2);//对EEPROM区2002h写入2
if(!K2)
while(!K2);
LED1=0;LED2=0;
cc(0x2000);//擦除第1个扇区(2000h~21FFh
xcx(0x2002,6);//对EEPROM区2002h写入6
sbit K2= P3八3;//按钮2

EEPROM---AT24Cxx应用介绍

EEPROM---AT24Cxx应用介绍

EEPROM---AT24Cxx应⽤介绍

结论:1、读写AT24CXX芯⽚,根据容量有多种⽅式:⼀、容量为AT24C01~AT24C16,⾸先发送设备地址(8位地址),再发送数据地址(8位地址),再发送或者接受数据。

⼆、AT24C32/AT24C64~AT24C512,⾸先发送设备地址(8位地址),再发送⾼位数据地址,再发送地位数据地址,再发送或者接受数据。

三、容量AT24C1024的芯⽚,是把容量⼀和容量⼆的⽅法结合,设备地址中要⽤⼀位作为数据地址位,存储地址长度是17位。

2、它的设备地址根据容量不同有区别:

1)、AT24C01~AT24C16:这⼀类⼜分为两类,分别为AT24C01/AT24C02和AT24C04~AT24C16;他们的设备地址为⾼7位,低1位⽤来作为读写标⽰位,1为读,0为写。

*1*、AT24C01/AT24C02。AT24C01/AT24C02的A0、A1、A2引脚作为7位设备地址的低三位,⾼4为固定为1010B,低三位A0、A1、A2确定了AT24CXX的设备地址,所以⼀根I2C线上最⼤可以接8个AT24CXX,地址为1010000B~1010111B。

*2*、AT24C04~AT24C16的 A0、A1、A2只使⽤⼀部分,不⽤的悬空或者接地(数据⼿册中写的是悬空不接)。举例:AT24C04只⽤A2、A1引脚作为设备地址,另外⼀位A0不⽤悬空,发送地址中对应的这位(A0)⽤来写⼊页寻址的页⾯号,⼀根I2C线上最⼤可以接4个,地址为101000xB~101011xB

经典的24C01--24C256读写操作程序

经典的24C01--24C256读写操作程序

#pragma ot(6 SIZE)#include #include #define ERRORCOUNT 10sbit SDA=P0^0;sbit SCL=P0^1;enum eepromtype {M2401 M2402 M2404 M2408 M2416 M2432 M2464 M24128 M24256};enum eepromtype EepromType;//DataBuff为读写数据输入/输出缓冲区的首址//ByteQuantity 为要读写数据的字节数量//Address 为EEPROM的片内地址//ControlByte 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W) 其中R/W=1 //表示读操作 R/W=0为写操作 A2 A1 A0为EEPROM的页选或片选地址;//EepromType为枚举变量 需为M2401至M24256中的一种 分别对应24C01至24C256;//函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;//ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1//SDA和SCL由用户自定义,这里暂定义为P0^0和P0^1;//其余的用户不用管,只要把只子程序放在你的程序中并调用它就可以了;/***********************************************************************************/bit RW24XX(unsigned char *DataBuff unsigned char ByteQuantity unsigned int Address unsigned char ControlByte enum eepromtype EepromType){void Delay(unsigned char DelayCount);void IICStart(void);void IICStop(void);bit IICRecAck(void);void IICNoAck(void);void IICAck(void);unsigned char IICReceiveByte(void);void IICSendByte(unsigned char sendbyte);unsigned char data j i=ERRORCOUNT;bit errorflag=1;while(i--){IICStart();IICSendByte(ControlByte&0xfe);if(IICRecAck())continue;if(EepromType>M2416){IICSendByte((unsigned char)(Address>>8));if(IICRecAck())continue;}IICSendByte((unsigned char)Address);if(IICRecAck())continue;if(!(ControlByte&0x01)){j=ByteQuantity;errorflag=0; //********clr errorflagwhile(j--){IICSendByte(*DataBuff++);if(!IICRecAck())continue;errorflag=1;break;}if(errorflag==1)continue;break;}else{IICStart();IICSendByte(ControlByte);if(IICRecAck())continue;while(--ByteQuantity){*DataBuff++=IICReceiveByte();IICAck();}*DataBuff=IICReceiveByte(); //read last byte dataIICNoAck();errorflag=0;break;}}IICStop();if(!(ControlByte&0x01)){Delay(255);Delay(255);Delay(255);Delay(255);}return(errorflag);}/*****************以下是对IIC总线的操作子程序***//*****************启动总线**********************/void IICStart(void){SCL=0; //SDA=1;SCL=1;_nop_();_nop_();_nop_();SDA=0;_nop_();_nop_();_nop_();_nop_();SCL=0;SDA=1; //}/*********

24C系列串行EEPROM与单片机的接口设计及应用

24C系列串行EEPROM与单片机的接口设计及应用

型号多 , 以及工作电压允许范围宽 、 容量扩展配置
Ab t a t sr c :
I1 c a a t r t s f c mmo 2 C 2 wi s r l EP 0M ae nr d c d T e 1e h r c e s c o o i i n 4 - r e i E R e a r i t u e . h o
i e ae e os e ens a E P O 2 C 4 n T 95 i lci M c cm u r i i n rc t d t e r l E R M(4 6 )adA 8¥ s g p ioo pt t n tf m h b w e i 1 ne h r e wh
E PO , E R M) 其内容可由软件进行随机读写以实现 数据的更新 , 并可在芯片断电的情况下长期保存
片内信息 , 兼备了 R M 和 R M 的基本特点. A O 串行 E P O 使 用 内 部 集 成 电 路 (n r ER M Ie t
收稿 日期 :2 1 0 3 0 0— 6— 0
要 :介 绍了常用 的 2 C系列 串行 E P O 4 E R M所具备 的特点 , 出 了在 随机语 音录制 系统 中串行 E P O 给 E R M
(4 6 ) 2 C 4 与单 片 机 A 8 ¥ 1的接 口方 法 , 重 分 析 了 如 何 根 据 IC总 线 所 要 求 的操 作 时 序 应 用 串 行 T95 着 2 E P O 以单字节读 写操作为例 , E R M. 实现了单片机对 串行 E P O 的读写操作. ERM

STM32 读写 EEPROM 24C02方法

STM32 读写 EEPROM 24C02方法
while((number - 1) > 0) {
number--;
//Read a byte from the EEPROM *s = I2C_ReceiveData(I2Cx);
printf("\r\n The I2C1 has received data %x \r\n", *s); s++;
int main(void) {
RCC_Configuration(); GPIO_Configuration();
USART_Configuration(); I2C_Configuration(); NVIC_Configuration();
I2C1_Buffer_Tx[0] = 0x44; I2C1_Buffer_Tx[1] = 0x55;
//Test on EV7 and clear it while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_RECEIVED));
//In the case of a single data transfer disable ACK before reading the data I2C_AcknowledgeConfig(I2Cx, DISABLE);
注意事项: 1.USART1:PA9 为 TX,PA10 为 RX I2C1:PB6 为 SCL,PB7 为 SDA I2C2:PB10 为 SCL,PB11 为 SDA

24C64EEPROM的读写的C语言程序.

24C64EEPROM的读写的C语言程序.
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
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++;
*(uchar*mcu_address = I2C_Receive_Byte(;
I2C_Nack(;
I2C_Stop(;
((uchar*mcu_address++;
AT24C64_address++;
}
}
return 1;
}
void I2C_Stop(void
{
Delay_10_uS(;

K24C系列EEPROM烧写操作流程

K24C系列EEPROM烧写操作流程

K24C系列EEPROM烧写操作流程

一:烧录器型号

适用于K24C系列EEPROM的烧录器有:周立功EasyPro系列,SmartPro系列、LPC Pro 等

二:烧写步骤

1)确认烧录器、软件版本支持烧录该型号之组件。

2)将烧录器与电脑连接,并上电。

3)将EEPROM装入烧录器的插座中(注意方向)。

4)鼠标双击桌面上的快捷图标SmartPRO Programmer, 见下图

5)弹出下图对话框,选择烧录器的型号,并点击OK。若无需选择直接跳过这一步。

6)选择好型号后,您可以看到以下界面。

7)“芯片”菜单,点击“选择芯片”,或在快捷工具栏中点击“选择”。见下图

参见下图红色标记处。

9)打开“选项”菜单,点击“系统设置”,或点击快捷工具栏内的“设置”,参见下图

10)在设置对话框内选中所需设置,点击“确定”。

11)点击“编辑”菜单,选择“编辑缓冲区”或“填充缓冲区”,或点击“打开”菜单其中:“编辑缓冲区”您可以进行所有字节编辑,填写您所需数据。光标停留处可

以通过键盘输入。

“填充缓冲区”您可以对所有字节进行编辑,但填充的数据是单一的。

当然您可以通过“打开”文件菜单,导入您所需要的hex文件。

12)若您对每个芯片设置不同的ID,可以点击“芯片”菜单,选择“芯片编号”

13)在“芯片编号”对话框中填写您要设定的不同ID的地址段,变化量(自增步长),初始值,自增方式。例如,我要求每个芯片除了00000040h---00000045h的数据不同,其余地址数据都相同,那么在“自增首址”中填入00000040h,“自增末址”中填入00000045h,自增步长为“1”,初始文件为“00”。既第一个芯片的00000040h

IIC总线24C02读写

IIC总线24C02读写

实验说明:

T24C01A/AT24C02为I2C总线型EEPROM存储器,容量为1K/2K位(128/256*8),前读/写时序遵循I2C总线协议

标准。A T24C01A/A T24C02内部设有一个控制寄存器,其每一位的含义如下:

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

1 0 1 0 A

2 A1 A0 R/W

其中A2/A1/A0用于选择总线上待访问的I2C器件,R/W=1读操作,R/W=0写操作;从上述时序可以看出,I2C总线上最多可以扩展23=8片同样的1K/2K容量EEPROM存储器或者可以扩展1片容量为16K Bits的EEPROM存储器。如果扩展8片2K以内容量的EEPROM 存储器,每片存储器将对应一个地址,这个由于实验仪上的A T24C01A/AT24C02的A2/A1/A0引脚全部接地,等效为实验仪上的AT24C01A/AT24C02的地址为0,所以在实验中读写控制字分别为:0xa1/0xa0

实验要求

利用实验仪上的I2C总线器件AT24C01A/AT24C02,编写I2C总线读写程序并自行验证程序的正确性。

c语言:

/* 实验四十二IIC总线24C02读写*/

/* C51 */

#include

#include

/* **********************************************************

24C01/02 为IIC总线EEPROM存储器, 容量为1k位(128 * 8)

************************************************************/

AT24C32 AT24C56读写程序

AT24C32 AT24C56读写程序

转载一个AT24C01~AT24C256读写通用程序(只做了少许改动),附件里面有关于AT24系列读写资料!希望对大家有所帮助,共同进步!/* 以下为AT24C01~AT24C256的读写程序,各人可根据自己的需要应用。在buf1中填入需要写入的内容,buf2的大小可根据需要定义。addr可根据使用的芯片选择,可从任何位置读写,只要在该芯片的范围内。enumer=ATxxx,根据使用的芯片赋值。各函数中的形式参数不需改变。本程序只要在调用的程序中定义实际参数即可,下述各子程序不必改动。*/#include <reg52.h>#include <intrins.h>#define ERROR 10 //允许ERROR的最大次数 sbit SDA=P3^0;sbit SCL=P3^1;enum eepromtype {AT2401,AT2402,AT2404,AT2408,AT2416,AT2432,AT2464,AT24128,AT24256};/*器件的型号*/enum eepromtype enumer; //定义一个枚举变量unsigned char code buf1 []={1,3,5,7,9,10,11,12,13,15}; /* 发送缓冲区 */unsigned char buf2 [10]; /* 接收缓冲区 *//* 一个通用的24C01-24C256共9种EEPROM的字节读写操作程序,此程序有五个入口条件,分别为读写数据缓冲区指针,进行读写的字节数,EEPROM首址,EEPROM控制字节,以及EEPROM类型。此程序结构性良好,具有极好的容错性,程序机器码也不多:DataBuff为读写数据输入/输出缓冲区的首址Length 为要读写数据的字节数量Addr 为EEPROM的片内地址 AT24256为0~32767Control 为EEPROM的控制字节,具体形式为(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,表示读操作,R/W=0为写操作,A2,A1,A0为EEPROM的页选或片选地址;enumer为枚举变量,需为AT2401至AT24256中的一种,分别对应AT24C01至AT24C256;函数返回值为一个位变量,若返回1表示此次操作失效,0表示操作成功;ERROR为允许最大次数,若出现ERRORCOUNT次操作失效后,则函数中止操作,并返回1SDA和SCL由用户自定义,这里暂定义为P3^0和P3^1; *//*对于1K位,2K位,4K位,8K位,16K位芯片采用一个8位长的字节地址码,对于32K位以上的采用2个8位长的字节地址码直接寻址,而4K位,8K位,16K位配合页面地址来寻址*//* ----- AT24C01~AT24C256 的读写程序 ------ */bit RW24xx(unsigned char *DataBuff,unsigned char Length,unsigned int Addr,unsigned char Control,enum eepromtype enumer){ void Delay(unsigned char DelayCount); /* 延时 */void Start(void); /* 启动总线 */void Stop(void); /* 停止IIC总线 */bit RecAck(void); /* 检查应答位 */void NoAck(void); /* 不对IIC总线产生应答 */void Ack(void); /* 对IIC总线产生应答 */unsigned char Receive(void); /* 从IIC总线上读数据子程序 */void Send(unsigned char sendbyte); /* 向IIC总线写数据 */unsign

24c01存储器读写代码

24c01存储器读写代码

** 入口参数:无

** 出口参数:无

**************************************************************************/ void iic_init(void)

{

PINSEL0 |= (PINSEL0 & (~0xF0)) | 0xa <<20;

I22SCLH = (11059200/400000 + 1) / 2; /* 设定I2C2时钟

*/

I22SCLL = (11059200/400000)/2;

I22CONCLR = 0x6c ;

I22CONSET = 0x40 ;

/*I2C2中断开启控制*/

VICIntSelect = 0x00000000; /* 设置所有通道为IRQ中断*/

VICVectPriority30 = 5 ; /* I2C2通道分配到IRQ slot0,最高优先级*/

VICVectAddr30 = (uint)IRQ_I2C2; /* 设置I2C2中断向量

*/

VICIntEnable = (1 << 30); /* 使能I2C2中断

*/

}

/**************************************************************************

** 函数名次:延时程序。

** 入口参数:延时时间。

** 出口参数:无

**************************************************************************/ void DelayNS (int32 dly)

STM32作为主机I2C,读写24C02EEPROM

STM32作为主机I2C,读写24C02EEPROM

STM32作为主机I2C,读写24C02EEPROM

1、时钟和数据的传输:开始和停止条件,数据在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

STM32F0单片机用 I2C HAL 库读写24C02

STM32F0单片机用 I2C HAL 库读写24C02

STM32F0单片机快速入门九: 用I2C HAL 库读写24C02

发表评论

1.24C02介绍

24C02 现在基本是开发板的标配,对于需要掉电存储的应用来说确是不二选择。现在单片机因为内部集成了Flash存储器,一般也都支持数据的掉电保存,但相对于24C02 这种EEPROM 来说,使用单片机内部的Flash 有一些需要注意的问题:

1.Flash 写入数据之前需要先执行擦除操作,而且擦除以扇区为单位。

2.Flash读写次数比EEPROM 少很多。

3.容易误操作,把Flash 内部的代码擦除掉。

4.影响中断的响应时间。

24C02 有256 字节的数据,一般说来也够用了。它的地址是可以通过引脚配置的,这样一条I2C 总线上就可以挂多个24C02。如下:

我们把A2,A1,A0 都接地,这样地址为A0。然后SCL,SDA 脚接MCU 的PB8 和PB9。需要注意SCL,和SDA 需要加上拉电阻。

1.代码

下面我们在一个I2C 例程上面修改代码来实现24C02 的读写。大家可以看到使用库函数的好处,基本上不用看STM32F030 的手册,很快就能实现我们想要实现的功能。

我们用Keil 打开下面这个工程:

STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\I2C\I2C_TwoBoards_ComPolling\MDK-AR M\Project.uvprojx

Step 1, 把I2C 地址改为跟我们硬件一致:

Step 2, 根据实际使用的I2C 模块和引脚进行配置:

单片机读写24C01

单片机读写24C01

单片机读写24C01~24C16程序

51单片机 2009-08-14 10:13 阅读150 评论0

字号:大中小

单片机读写24C01~24C16程序

AT89S52 晶振频率为11.0592MHz 指令周期:1.0852us

功能说明:24C01-16程序,能读写:24C01、24C02、24C04、24C08、24C16

读出的数据送P1 口显示

#include "reg52.h"

#include "intrins.h"

#define uchar unsigned char

#define uint unsigned int

sbit sda=P3^7;//;模拟I2C 数据传送位

sbit scl=P3^6;//;模拟I2C 时钟控制状态标志

void delay1(uint z)//延时为1ms

{

uchar x,x1;

for(;z>0;z--)

{

for(x=0;x<114;x++)

{

for(x1=0;x1<1;x1++);

}

}

}

void delay()//5us延时

{

_nop_();

_nop_();

_nop_();

}

void star()//开始

{

sda=1;

delay();//5us延时

scl=1;

delay();//5us延时

sda=0;

delay();//5us延时

}

void stop()//停止

{

sda=0;

delay();//5us延时

scl=1;

delay();//5us延时

sda=1;

delay();//5us延时

}

void ack()//应答

{ uchar z=0;

while((sda==1)&&(z<50))z++;//条件判断,sda=1,则没有应答。如果没有应答则延时:z<50,z++;后返

STM32 模拟IIC读写24C02程序代码

STM32 模拟IIC读写24C02程序代码

STM32 模拟IIC读写24C02程序代码

最近用到STM32F103V来读写A T24C02 EEPROM 于是从原来51单片机的程序代码的基础上修改了下,移植到了STM32,测试工作正常。

引脚定义和配置:

#define SCL GPIO_Pin_6 //24C02 SCL

#define SDA GPIO_Pin_7 //24C02 SDA

void GPIO_Configuration(void)

{

RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |

RCC_APB2Periph_GPIOE, ENABLE);

GPIO_InitStructure.GPIO_Pin = SCL; //24C02 SC L

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = SDA; //24C02 SDA 作为输出

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

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

如何使用单片机模拟读写24C01EEPROM数据

实验目的:

熟悉使用单片机模拟读写24C01EEPROM

1、首先向24C01EEPROM写入数据

2、在从24C01EEPROM中读取数据,并用LED显示

硬件设置:

1、SW4开关全部闭合

2、SW2开关1闭合,其它断开

3、SW3开关7和8闭合,其它断开

#include

__CONFIG(0x3545);

//FLASH代码不保护,RB6和RB7为调试模式,FLASH不写保护,数据代码不保护//RB3为数字IO口,低电压复位使能,上电延时开,看门狗开,4M晶体XT振荡器#defineucharunsignedchar

#defineuintunsignedint

#defineSCLTRISC3

#defineSDATRISC4

定义写入EEPROM数据

ucharcode[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

定义读取EEPROM数据变量

ucharack,data[8];

//函数名:delayus(uchartime);

//入口参数:TIme

//出口参数:无

//函数作用:微妙延时

相关文档
最新文档