当前位置:首页 > 技术学院 > 热搜器件
[导读]STC89C52单片机内部带有4K的EEPROM,严格来说,应该是4K的FLASH,它分为8个扇区,每个扇区有512个字节。读写数据只能按字节操作,擦除数据只能按扇区操作。 由于它掉电不易失的特性,可以用来存储程序运行过程中产生

STC89C52单片机内部带有4K的EEPROM,严格来说,应该是4K的FLASH,它分为8个扇区,每个扇区有512个字节。读写数据只能按字节操作,擦除数据只能按扇区操作。 由于它掉电不易失的特性,可以用来存储程序运行过程中产生的用户数据,掉电可保存。

[cpp] view plaincopy/*

************************************************************************************

Fuction:STC89C52单片机内部4K的EEPROM操作驱动

Software Designer:Jason

************************************************************************************

*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

/******************定义命令字节******************/

#define Read_COM 0x01 //字节读数据命令

#define Prog_COM 0x02 //字节编程数据命令

#define Erase_COM 0x03 //扇区擦除数据命令

#define En_Wait_TIME 0x81 //设置等待时间 ,并使能ISP/IAP

#define Start_ADDRH 0x20 //扇区地址高位

#define Start_ADDRL 0x00 //扇区地址低位

/****************特殊功能寄存器声明****************/

sfr ISP_DATA = 0xe2;

sfr ISP_ADDRH = 0xe3;

sfr ISP_ADDRL = 0xe4;

sfr ISP_CMD = 0xe5;

sfr ISP_TRIG = 0xe6;

sfr ISP_CONTR = 0xe7;

/*****************关闭ISP&IAP功能*****************/

void ISP_IAP_disable(void)

{

ISP_CONTR = 0x00;

ISP_CMD = 0x00;

ISP_TRIG = 0x00;

}

/*********************字节读**********************/

uchar Byte_read(uint byte_addr)

{

EA = 0; //关中断

ISP_CONTR = En_Wait_TIME; //开启ISP&IAP,并送等待时间

ISP_CMD = Read_COM; //送字节读命令字

ISP_ADDRH = (uchar)(byte_addr >> 8); //送地址高字节

ISP_ADDRL = (uchar)(byte_addr & 0x00ff); //送地址低字节

ISP_TRIG = 0x46; //送触发命令字0x46

ISP_TRIG = 0xB9; //送触发命令字0xB9

_nop_();

ISP_IAP_disable(); //关闭ISP&IAP功能

EA = 1; //开中断

return (ISP_DATA);

}

/*********************字节编程*********************/

void Byte_program(uint byte_addr,uchar isp_iap_data)

{

EA = 0; //关中断

ISP_CONTR = En_Wait_TIME; //开启ISP&IAP,并送等待时间

ISP_CMD = Prog_COM; //送字节编程命令字

ISP_ADDRH = (uchar)(byte_addr >> 8); //送地址高字节

ISP_ADDRL = (uchar)(byte_addr & 0x00ff); //送地址低字节

ISP_DATA = isp_iap_data; //送数据进ISP_DATA

ISP_TRIG = 0x46; //送触发命令字0x46

ISP_TRIG = 0xB9; //送触发命令字0xB9

_nop_();

ISP_IAP_disable(); //关闭ISP&IAP功能

EA = 1; //开中断

}

/*********************扇区擦除*********************/

void Sector_erase(uint sector_addr)

{

EA = 0; //关中断

ISP_CONTR = En_Wait_TIME; //开启ISP&IAP;并送等待时间

ISP_CMD = Erase_COM; //送扇区擦除命令字

ISP_ADDRH = (uchar)(sector_addr >> 8); //送地址高字节

ISP_ADDRL = (uchar)(sector_addr & 0X00FF); //送地址低字节

ISP_TRIG = 0X46; //送触发命令字0x46

ISP_TRIG = 0XB9; //送触发命令字0xB9

_nop_();

ISP_IAP_disable(); //关闭ISP&IAP功能

EA = 1;

}

void main()

{

Sector_erase(0x2000); //扇区擦除

Byte_program(0x2000,0x88); //写EEPROM

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

P0=Byte_read(0x2000); //读EEPROM

while(1);

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发中,程序烧录是连接软件设计与硬件实现的关键环节。当前主流的单片机烧录技术已形成ICP(在电路编程)、ISP(在系统编程)、IAP(在应用编程)三大技术体系,分别对应开发调试、量产烧录、远程升级等不同场景。...

关键字: 单片机 ISP ICP IAP 嵌入式系统开发

​在极低光照环境下显著提升图像质量,超越传统计算机视觉技术。

关键字: AI ISP

在现代电子设备中,电可擦可编程只读存储器(EEPROM)凭借其独特的存储特性,被广泛应用于各类需要非易失性数据存储的场景。从智能电表、工业控制系统到消费电子产品,EEPROM 承担着存储关键配置信息、校准数据以及用户个性...

关键字: 只读存储器 数据存储 EEPROM

在嵌入式系统和存储设备领域,Flash和EEPROM(电可擦可编程只读存储器)因其非易失性存储特性而被广泛应用。这些存储设备能够在断电后保持数据,对于需要长期保存配置参数、程序代码或用户数据的应用来说至关重要。然而,关于...

关键字: Flash EEPROM

当前端侧AI正在快速落地推进,而智能车载领域尤为活跃,特别是在国内市场,智能车载的快速发展引人注目。据Yole预测,2023年至2029年,全球车载摄像头市场规模将从57亿美元增至84亿美元。但目前车载视觉系统方案尚未统...

关键字: ISP AI视觉 飞凌微 图像传感器 CMOS SoC

随着数字成像技术的飞速发展,图像信号处理器(ISP, Image Signal Processor)在相机系统中的作用愈发重要。ISP主要负责对前端图像传感器输出的信号进行后期处理,以提升图像质量,使其在不同光学条件下都...

关键字: ISP ISP架构

在嵌入式系统中,诸如变频器和伺服驱动器等工业应用,乃至CD播放器等众多消费电子产品,都需要保存最近的用户设置,在下次上电后加载使用。如果使用MCU内置Flash,一般擦写次数限制在10k次,无法满足寿命和耐久性要求,所以...

关键字: MSP EEPROM
关闭