STC内部EEPROM应用函数

来源:本站
导读:目前正在解读《STC内部EEPROM应用函数》的相关信息,《STC内部EEPROM应用函数》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STC内部EEPROM应用函数》的详细说明。
简介:STC12C5410系列单片机内带2K EEPROM,分成4个扇区,每个扇区512byte。

STC12C5410系列单片机内带2K EEPROM,分成4个扇区,每个扇区512byte。使用时注意以下几点:

1、 有三个基本命令:字节读,字节写,扇区擦除

2、 没有字节擦除,只有扇区擦除。如果要改变扇区中的某个字节,保留其它字节内容不变,必须先把其它字节读出来保存,然后擦除整个扇区,再把改动的字节内容和保存的其它字节内容写入扇区。

3、 扇区读写的时间短,擦除的时间比较长,要注意扇区擦除函数的调用位置,比如最好不要放在定时中断中。

4、 每个扇区用的越少越方便。

以下是应用函数:

#include

#include

#define ISP_IAP_BYTE_READ 0x1; //字节读

#define ISP_IAP_BYTE_PROGRAM 0x2; //字节编程, 可以将1 写成0 ,要将1 变成0 ,必须执行字节编程

#define ISP_IAP_SECTOR_ERASE 0x3; //扇区擦除, 可以将0 擦成1 ,要将0 变成1 ,必须擦除整个扇区

//定义Flash 操作等待时间及允许IAP/ISP/EEPROM 操作的常数

#define ENABLE_ISP 0x81; //系统工作时钟<24MHz 时,对ISP_CONTR 寄存器设置此值

#define DATA_FLASH_START_ADDRESS 0x2e00; //STC12C5410AD 系列单片机的EEPROM 测试起始地址

void iap_disable () {

ISP_ADDRL = 0xff;

ISP_ADDRH = 0xff;

ISP_CONTR = 0; //关闭 IAP 功能

ISP_CMD = 0; //清命令寄存器,使命令寄存器无命令,此句可不用

ISP_TRIG = 0; //清命令触发寄存器,使命令触发寄存器无触发,此句可不用

}

uchar byte_read (uint address){

uchar i;

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

return i;

}

void byte_program (uint address,uchar wr_data) {

uchar i;

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 处于安全状态

}

void sector_erase (uint address) {

uchar i;

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 ();

}

提醒:《STC内部EEPROM应用函数》最后刷新时间 2024-03-14 01:08:02,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STC内部EEPROM应用函数》该内容的真实性请自行鉴别。