怎样修改eeprom文件

怎样修改eeprom文件,第1张

重新编写程序。

EEPROM是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片。EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。

EEPROM(带电可擦可编程只读存储器)是用户可更改的只读存储器(ROM),其可通过高于普通电压的作用来擦除和重编洞猜汪程(重写)。不兆裤像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候可频繁地反复编程,因此EEPROM的寿命是一个很重要的设计考虑参数。纳仔EEPROM是一种特殊形式的闪存,其应用通常是个人电脑中的电压来擦写和重编程。

24C02只有256字节容量,所以一个WORD ADDRESS就掘段能全部寻址了。

24C128是16K字节容量,因此必须要两个WORD ADDRESS才能全部寻址,所以在write_add和read_add函数中把address类型换成int型,write_byte(address)这里分两次写入档数,一次写入行散首高字节,一次写入低字节。

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

* 文件名 : 宏晶EEPROM.c

* 描述: 该程序实现纳迹了对STC单片机的EEPROM的 *** 作。每隔0.5秒钟,单片机对EEPROM进行一次

读、擦除和写 *** 作,并把数值显示到数码管上知茄世。

确认试验是否成功:电源上电后,数码管的值在递增,观察值。关闭电源,待几秒后上电,

数码管显示的值会从断电钱的那个值开始显示。

* 创建人 : 东流

* 版本号 : 2.0

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

#include<reg52.h>

#include<intrins.h>

/*以下是配置STC单片机的寄存器*/

sfr ISP_DATA = 0xC2

sfr ISP_ADDRH = 0xC3

sfr ISP_ADDRL = 0xC4

sfr ISP_CMD = 0xC5

sfr ISP_TRIG = 0xC6

sfr ISP_CONTR = 0xC7

#define uint unsigned int

#define uchar unsigned char

#define ISP_BYTE_READ1 //ISP字节读

#define ISP_BYTE_PROGRAM 2 //ISP直接编程

#define ISP_SECTOR_ERASE 3 //ISP扇区擦除

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}

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

* 名称 : Delay()

* 功能 : 延时,延时时间为 10ms * del

* 输入 : del

* 输出 : 无

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

void Delay_1ms(uint i)

{

uchar x,j

for(j=0j<ij++)

for(x=0x<=148x++)

}

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

* 名称 : ISP_ERASE()

* 功能 : EEPROM的扇区擦除

* 输入 : Address(擦除扇区的地址)

* 输出 : 无

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

void ISP_ERASE(Address)

{

ISP_ADDRL = Address

ISP_ADDRH = Address >>8

ISP_CONTR = 0x83

ISP_CMD = ISP_SECTOR_ERASE

ISP_TRIG = 0x5a //PDF手册中说先像 ISP_TRIG 中写入搭肢 0x5a, 然后写入 0xa5

ISP_TRIG = 0xa5

_nop_()

_nop_()

}

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

* 名称 : ISP_READ()

* 功能 : 从EEPROM相应的地址中读出值

* 输入 : Address(想要读取EEPROM的地址)

* 输出 : Read_Data(从EEPROM读出的值)

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

uint ISP_READ(Address)

{

uchar Read_Data

ISP_ADDRL = Address

ISP_ADDRH = Address >>8

EA = 0

ISP_CONTR = 0x83

ISP_CMD = ISP_BYTE_READ

ISP_TRIG = 0x5a

ISP_TRIG = 0xa5

_nop_()

_nop_()

Read_Data = ISP_DATA

return Read_Data

}

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

* 名称 : ISP_PROGRAM()

* 功能 : 实现EEPROM的字节编程

* 输入 : Address为编程的地址,Data_temp为想要编程的值

* 输出 : 无

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

void ISP_PROGRAM(Address, Data_temp)

{

ISP_DATA = Data_temp

ISP_ADDRL = Address

ISP_ADDRH = Address >>8

ISP_CONTR = 0x83

ISP_CMD = ISP_BYTE_PROGRAM

ISP_TRIG = 0x5a

ISP_TRIG = 0xa5

_nop_()

_nop_()

}

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

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

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

void Main()

{

uint i

uchar LED_Buffer = 0

while(1)

{

for(i=0i<100i++)

{

LED_Buffer = ISP_READ(0x0000)

P0 = table[LED_Buffer % 10]

P2 = 1

Delay_1ms(20)

P0 = table[LED_Buffer / 10 % 10]

P2 = 0

Delay_1ms(20)

}

LED_Buffer++

ISP_ERASE(0x0000) //注意:字节编程时必须要先要擦除整个扇区

ISP_PROGRAM(0x0000, LED_Buffer)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8256209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存