我是靠谱客的博主 等待太阳,最近开发中收集的这篇文章主要介绍STC15单片机的EEPROM编程修改EEPROM存储器的内容在程序中使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

STC15W4K58S4的EEPROM程序读写操作

  • 修改EEPROM存储器的内容
    • 读取
    • 写入
    • 删除扇区
  • 在程序中使用

STC15单片机是一个8位的单片机,据说在世界上销量最大,是国产的品牌。其中也有许多值得称道的地方,比如不用晶振,不用外部的存储器,Flash可以做内存使用等。可以进入休眠状态,外部中断就可以唤醒等。在用户需要保持数据,当掉电可以保存这些数据,等下次启动后继续使用数据。这个功能的完成要在程序中通过指令修改Flash或者是EEPROM的内容,这样在掉电时就不会丢失数据,等上电后通过初始化继续使用。下面介绍一下Flash或者时EEPROM的文件如何修改和保存。

修改EEPROM存储器的内容

要对EEPROM的内容进行修改,主要用到下面的程序:

  • 读取
  • 写入
  • 删除扇区

下面介绍这些分程序并加以说明

读取

void IapRead_n(u16 addr, u8 *DataAddr, u16 number)
{
EA = 0;
// disable interrupt
IAP_CONTR = ENABLE_IAP;
// Enable IAP
IAP_CMD = CMD_READ;
// 设置IAP命令
do
{
IAP_ADDRL = addr;
// 低字节
IAP_ADDRH = addr >> 8;
// 设置IAP地址高字节
IAP_TRIG = 0x5A;
// 写触发命令(0x5A)
IAP_TRIG = 0xA5;
// 写触发命令(0xA5)
_nop_();
// 等待ISP/IAP/EEPROM操作完成
*DataAddr = IAP_DATA;
// 读取的数据送给 DataAddr
addr++;
DataAddr++;
} while(--number);
IapIdle();
EA = 1;
}

程序中不难理解,这个程序没有返回的数据,直接通过指针直接将EEPROM的内容传递给了目标区域的数据。即通过*DataAddr改变了存储在DataAddr指针下的数据。

写入

void IapWrite_n(u16 addr, u8 *DataAddr, u16 number)
{
EA = 0;
// 禁止中断
IAP_CONTR = ENABLE_IAP;
// Enable IAP
IAP_CMD = CMD_PROGRAM;
// 设置IAP命令
do
{
IAP_ADDRL = addr;
// 低字节
IAP_ADDRH = addr >> 8;
// 设置IAP地址高字节

IAP_DATA = *DataAddr;
// DataAddr赋值给ISP_DATA
IAP_TRIG = 0x5A;
// 写触发命令(0x5A)
IAP_TRIG = 0xA5;
// 写触发命令(0xA5)
_nop_();
// 等待ISP/IAP/EEPROM操作完成
addr++;
DataAddr++;
}while(--number);
IapIdle();
EA = 1;
}

写入程序和读取程序基本是相反的操作,也没有返回的数据,直接用指针将外部数据写入到EEPROM中。

删除扇区

在程序中要用到删除扇区操作。

void IapEraseSector(WORD addr)
{
EA = 0;
// 关闭中断
IAP_CONTR = ENABLE_IAP;
// 使能IAP
IAP_CMD = CMD_ERASE;
// 设置IAP命令
IAP_ADDRL = addr;
// 设置IAP地址低字节
IAP_ADDRH = addr >> 8;
// 设置IAP地址高字节
IAP_TRIG = 0x5A;
// 写触发命令(0x5A)
IAP_TRIG = 0xA5;
// 写触发命令(0xA5)
_nop_();
// 等待ISP/IAP/EEPROM操作完成
IapIdle();
EA = 1;
// 打开中断
}

在程序中使用

在程序如果是读取数据的话可以直接使用读取分程序。如果是写入操作则首先要将写入的扇区擦除,即将写入扇区的内容全部写成0xFF。然后再使用写操作。擦除是按扇区来操作的,比如要写入的扇区地址为0xE400,则用下面的命令来删除115页的内容:
IapEraseSector(0xE400);然后再用写入分程序将要写入的内容写入EEPROM中。

最后

以上就是等待太阳为你收集整理的STC15单片机的EEPROM编程修改EEPROM存储器的内容在程序中使用的全部内容,希望文章能够帮你解决STC15单片机的EEPROM编程修改EEPROM存储器的内容在程序中使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部