首页 > 应用 > 单片机应用
[导读]
STC12C5410系列单片机内带2KEEPROM,分成4个扇区,每个扇区512byte。使用时注意以下几点:1、有三个基本命令:字节读,字节写,扇区擦除2、没有字节擦除,只有扇区擦除。如果要改变扇区中的某个字节,保

STC12C5410系列单片机内带2KEEPROM,分成4个扇区,每个扇区512byte。使用时注意以下几点:
1、有三个基本命令:字节读,字节写,扇区擦除
2、没有字节擦除,只有扇区擦除。如果要改变扇区中的某个字节,保留其它字节内容不变,必须先把其它字节读出来保存,然后擦除整个扇区,再把改动的字节内容和保存的其它字节内容写入扇区。

本文引用地址: http://www.21ic.com/app/mcu/201806/761570.htm

3、扇区读写的时间短,擦除的时间比较长,要注意扇区擦除函数的调用位置,比如最好不要放在定时中断中。
4、每个扇区用的越少越方便。
以下是应用函数
#include
#include

#defineISP_IAP_BYTE_READ0x1;//字节读
#defineISP_IAP_BYTE_PROGRAM0x2;//字节编程,可以将1写成0,要将1变成0,必须执行字节编程
#defineISP_IAP_SECTOR_ERASE0x3;//扇区擦除,可以将0擦成1,要将0变成1,必须擦除整个扇区
//定义Flash操作等待时间及允许IAP/ISP/EEPROM操作的常数
#defineENABLE_ISP0x81;//系统工作时钟<24MHz时,对ISP_CONTR寄存器设置此值

#defineDATA_FLASH_START_ADDRESS0x2e00;//STC12C5410AD系列 单片机 的EEPROM测试起始地址

voidiap_dISAble(){
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0;//关闭IAP功能
ISP_CMD=0;//清命令寄存器,使命令寄存器无命令,此句可不用
ISP_TRIG=0;//清命令触发寄存器,使命令触发寄存器无触发,此句可不用
}
ucharbyte_read(uintaddress){
uchari;

ISP_ADDRL=address;//设置目标单元地址
ISP_ADDRH=address>>8;
ISP_CONTR=ENABLE_ISP;//打开IAP功能,设置Flash操作等待时间
ISP_CMD=ISP_IAP_BYTE_READ;//设置为IAP/ISP/EEPROM字节读模式命令
//EA=0;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;//先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此,送完B9h后,ISP/IAP命令立即被触发起动
for(i=0;i<30;i++);

//EA=1;
iap_disable();//;关闭IAP功能,清相关的特殊功能寄存器,使CPU处于安全状态,一次连续的IAP操作完成之后建议关闭IAP功能,不需要每次都关
i=ISP_DATA;//读出的数据在ISP_DATA单元中,送入累加器A

returni;

}

voidbyte_program(uintaddress,ucharwr_data){
uchari;

ISP_ADDRL=address;//设置目标单元地址
ISP_ADDRH=address>>8;
ISP_DATA=wr_data;//要编程的数据先送进ISP_DATA寄存器
ISP_CONTR=ENABLE_ISP;//打开IAP功能,设置Flash操作等待时间
ISP_CMD=ISP_IAP_BYTE_PROGRAM;//设置为IAP/ISP/EEPROM字节编程模式命令
//EA=0;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;//先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此,送完B9h后,ISP/IAP命令立即被触发起动
for(i=0;i<30;i++);
//EA=1;
iap_disable();//;关闭IAP功能,清相关的特殊功能寄存器,使CPU处于安全状态
}
voidsector_erase(uintaddress){
uchari;
ISP_ADDRL=address;//设置目标单元地址
ISP_ADDRH=address>>8;
ISP_CONTR=ENABLE_ISP;//打开IAP功能,设置Flash操作等待时间
ISP_CMD=ISP_IAP_SECTOR_ERASE;//设置为IAP/ISP/EEPROM扇区擦除模式命令

//EA=0;
ISP_TRIG=0x46;
ISP_TRIG=0xb9;//先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此,送完B9h后,ISP/IAP命令立即被触发起动
for(i=0;i<30;i++);
//EA=1;
iap_disable();
}

换一批

延伸阅读

[单片机应用] C51函数的递归调用

C51函数的递归调用

前几天在写C51程序时用到了递归,简单程序如下:voidWRITE_ADD(ucharaddr,ucharwbyte){START();//先发送起始信号WRITE_BYTE(0xa0);//设备地址+W命令if(!ERROR_Flag)/......

关键字:C51函数 递归调用

[单片机应用] STC单片机掉电断电失电瞬间EEPROM数据保存处理办法

STC单片机掉电断电失电瞬间EEPROM数据保存处理办法

  由于客户在请人设计开发一设备,但是设备用户处总停电,造成设备及其周边耗材损耗严重,因此请我司在现有STC为主要芯片的基础上做掉电瞬间EEPROM里的20个参数保存,上电后通过读取EEPROM中的参数回到掉电的状态,......

关键字:STC单片机 掉电断电 失电瞬间 EEPROM 数据保存

[单片机应用] 51单片机(STC89C52RC)小综合实验

51单片机(STC89C52RC)小综合实验

  这个实验包含以下几个内容:51单片机最小系统单片机外接继电器整流桥的使用lm393电压比较器的使用  首先先上实验结果图:前面两个继电器,中间是最小系统,最下脚是整流器和lm393电压比较器.好,下面来说这个板子制......

关键字:51单片机 STC89C52RC 小综合实验

[单片机应用] ARM7 LPC2378 远程升级----IAP函数

ARM7 LPC2378 远程升级----IAP函数

对于在应用编程( IAP) 来说,应当通过寄存器 r0 中的字指针指向包含命令代码和参数的存储器(RAM)来调用 IAP 程序。 IAP 命令的结果返回到寄存器 r1 所指向的结果表( resulttable)。......

关键字:函数 IAP

[单片机应用] STC51系列单片机免掉电下载(热启动下载)

STC51系列单片机免掉电下载(热启动下载)

相信喜欢单片机的朋友都用过STC的单片机,用过STC单片机的朋友都有这种感受:实惠、易用、功能强大!就是每次下载都要冷启动特别恶心,相信很多朋友的开发板上的电源键都按烂了。 其实STC单片机可以不用免掉电下......

关键字:STC51系列 单片机 免掉电下载 热启动下载

[单片机应用] STC89C51引脚及相关参数

STC89C51引脚及相关参数

  主要性能:  与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器 、 32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART......

关键字:STC89C51 引脚 相关参数

[单片机应用] 关于STC单片机的几点建议

关于STC单片机的几点建议

STC主要依靠高校学生市场和超低端小批量市场(51系列在工业用单片机上的份额并不大)生存多年,出了这么多产品。而且那个神奇的ISP工具越做越像客户端,也许有一天STC把编译器做进去,直接就在下载工具里面写程序了。S......

关键字:STC 单片机

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客