» 您尚未 [登录 - 注册] ┆ 帮助 ┆ Archiver ┆ ┆ 
--> 标题: [源码]适合于STC单片机的EEPROM读写程序
您是本帖第2785个阅读者。
性别:男<br>状态:离线<br>积时:1 天 19 小时 10 分 50 秒
小涛涛


初中生

头衔:未定义
等级:初中生
帖数:44
金钱:246
S币:1
收藏 举报 1F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页
精华主题 (精华帖子)
[源码]适合于STC单片机的EEPROM读写程序

程序经过测试,可以直接引用就可以。欢迎大家下载使用。

12C5AS32单片机测试过。

EEPROM。H文件。。。

#ifndef _EEPROM_H_

#define _EEPROM_H_

#include<AT89X52.H>

#define uint16 unsigned int

#define uint8  unsigned char

//----------------------------------------------------

//STC单片机IAP定义

sfr IAP_DATA = 0xC2;

sfr IAP_ADDRH = 0xC3;

sfr IAP_ADDRL = 0xC4;

sfr IAP_CMD = 0XC5;

sfr IAP_TRIG = 0xC6;

sfr IAP_CONTR = 0xC7;


#define ISP_IAP_BYTE_READ  1 //字节读

#define ISP_IAP_BYTE_PROGRAM 2 //字节编程

#define ISP_IAP_SECTOR_ERASE 3 //扇区擦除

#define WAIT_TIME    0 //等侍时间

#define ENABLE_IAP    0x83

//----------------------------------------------------

uint8 Read_IAP(uint16 Adres);

void Write_IAP(uint8 Value,uint16 Adres);

void Sector_Erase_IAP(uint16 Sector);

void Disable_IAP(void);

#endif

 

 

EEPROM。C文件。

/*--------------------------------------------------------------------------------------------------------*/

#include"EEPROM.h"

 

 

//---------------------------------------------IAP处理部分开始---------------------------------------

//--------------------------------------------------

//读取IAP数据并返回

//ADRES = 需要读出数据的地址

//调用:关闭IAP功能函数

//--------------------------------------------------

uint8 Read_IAP(uint16 Adres)


 uint8 Value = 0;

 IAP_CONTR = ENABLE_IAP;   //打开IAP功能

 IAP_CMD = ISP_IAP_BYTE_READ; //读IAP

 IAP_ADDRH = Adres >> 8;   //取高位地址

 IAP_ADDRL = Adres &0x00FF;  //取低位地址

 //EA = 0;       //关中断

 IAP_TRIG = 0x5A;     //触发寄存器

 IAP_TRIG = 0xA5;     //IAP触发启动

 nop();

 Value = IAP_DATA;    //读取字节数据

 //EA = 1;

 Disable_IAP();     //关闭IAP功能

 return Value;


//--------------------------------------------------

//字节编程

//Value = 需要写进IAP内部的数据

//ADRES = 需要写入数据的地址0

//调用关闭IAP功能函数

//--------------------------------------------------

void Write_IAP(uint8 Value,uint16 Adres)


 IAP_CONTR = ENABLE_IAP;   //打开IAP功能

 IAP_CMD = ISP_IAP_BYTE_PROGRAM;//字节编程

 IAP_ADDRH = Adres>>8;   //取地址位

 IAP_ADDRL = Adres &0x00FF;

 IAP_DATA = Value;    //写入数据

 //EA = 0;

 IAP_TRIG = 0x5A;     //触发IAP功能

 IAP_TRIG = 0xA5;

 nop();

 //EA = 1;

 Disable_IAP();     //关闭IAP功能

//--------------------------------------------------

//擦除扇区功能

//Sector = 需要擦除的扇区地址

//调用函数:关闭IAP功能函数

//--------------------------------------------------

void Sector_Erase_IAP(uint16 Sector)


 IAP_CONTR = ENABLE_IAP;

 IAP_CMD = 0x03;

 IAP_ADDRH = Sector >>8;

 IAP_ADDRL = Sector & 0x00FF;

 //EA = 0;

 IAP_TRIG = 0x5A;

 IAP_TRIG = 0xA5;

 nop();

 //EA = 1;

 Disable_IAP();

//--------------------------------------------------

//关闭IAP功能

//--------------------------------------------------

void Disable_IAP(void)


 IAP_CONTR = 0;

 IAP_CMD = 0;

 IAP_TRIG = 0;

 IAP_ADDRH = 0xFF;

 IAP_ADDRL = 0xFF;

//---------------------------------------------IAP处理部分结束---------------------------------------

/*--------------------------------------------------------------------------------------------------------*/







----签名档 --------------------------------------------------------
XXX,你懂的....

Posted:2012-04-24 23:20:24
性别:男<br>状态:离线<br>积时:10 个月 0 天 2 小时 24 分 46 秒
aj8714523


管理员

头衔:眼镜蛇管理员
等级:管理员
帖数:1402
金钱:1017
S币:74

2F 资料 | 留言 | 编辑 | 引用 | 评帖 | 主页


不错,给你加精华!






----签名档 --------------------------------------------------------
世界上比毒品更容易成瘾的,是装逼时的感觉。。。。

Posted:2012-04-24 23:24:40
×
 每页10条,共1页,合计2条记录
9  1  :
转到  


Powered By:Discuz! 6.0 Processed in:0.109375s,17 queries.
眼镜蛇论坛|单片机论坛| 技术支持:【QQ】1522066584

免 责 声 明 本站提供网上自由讨论使用,所有个人言论并不代表本站立场,与本站立场无关,本站不会对其內容负上任何责任。
假若內容有涉及侵权,请立即联络我们。我们将立刻从网站上刪除,并向所有持版权者致最深的歉意。