51单片机内部EEPROM读写测试程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//EEPROM.H文件部分

/******************** ******************* ********************

* File Name : EEPROM.H

* Author : WYSDHL2005

* Version : V1.0.0

* Date : 12/21/2010

* Description : 该程序针对STC(宏晶)公司带EEPROM的51单片机而编写的单片机内部EEPROM

* 读写,扇区擦写的测试程序

***************************************************************** ***************/

#ifndef __EEPROM_H__

#define __EEPROM_H__

#include

void EEPROM_Byte_Program(uchar,uchar,uchar);//EEPROM字节写程序

void EEPROM_Sector_Program(uchar,uchar); //EEPROM 扇区擦写程序

uchar EEPROM_Byte_Read(uchar,uchar); //EEPROM字节读程序

#endif

//EEPROM.C文件部分

/******************** (C) COPYRIGHT 2010 宇拓电子 ******************** * File Name : EEPROM.C

* Author : WYSDHL2005

* Version : V1.0.0

* Date : 12/21/2010

* Description : 该程序针对STC(宏晶)公司带EEPROM的51单片机而编写的单片机内部EEPROM

* 读写,扇区擦写的测试程序

***************************************************************** ***************/

#include

sfr ISP_DATA=0xe2;//ISP/IAP操作寄存器-----------------------------------------

sfr ISP_ADDRH=0xe3;//ISP/IAP操作地址寄存器高位

-----------------------------------------

sfr ISP_ADDRL=0xe4;//ISP/IAP操作地址寄存器低位

-----------------------------------------

sfr ISP_CMD=0xe5;//ISP/IAP操作命令寄存器-----------------------------------------

sfr ISP_TRIG=0xe6;//ISP/IAP操作命令触发寄存器

-----------------------------------------

sfr ISP_CONTRL=0xe7;//ISP/IAP操作控制寄存器

-----------------------------------------

// |bit7 |bit6 |bit5 |bit4 |bit3 |bit2 |bit1 |bit0 |

// |ISPEN |SWBS |SWRST |-*- |-*- |WT2- |WT1- |WT0- |

#define ISP_BYTE_READ 1 //字节读

#define ISP_BYTE_PROGRAM 2 //字节写

#define ISP_SECTOR_ERASE 3 //扇区擦除

#define WAIT_TIME_40 0 //等待时间40MHz以下是0;20MHz以下是1;10MHz以下是2;5MHz以下是3

#define WAIT_TIME_20 1 //等待时间40MHz以下是0;20MHz以下是1;10MHz以下是2;5MHz以下是3

#define WAIT_TIME_10 2 //等待时间40MHz以下是0;20MHz以下是1;10MHz以下是2;5MHz以下是3

#define WAIT_TIME_5 3 //等待时间40MHz以下是0;20MHz以下是1;10MHz以下是2;5MHz以下是3

#define ISPEN 0X80

#define SWBS 0X40

#define SWRST 0X20

/**************************************************************** *********

** 函数名称: void EEPROM_Byte_Program(uchar str,uchar address_h,uchar address_l)

** 功能描述: EEPROM 字节写,如果写入地址的数据不是空(0xff),需要先经行扇区擦除

** 输 入: str 输入数据,address_h 写入地址高位,address_l 写入数据低位

** 输出: 无

** 全局变量: 无

** 调用模块:

** 说明:

** 注意:如果写入地址数据不为空(0xff),需要先经行扇区擦除

***************************************************************** *********/

void EEPROM_Byte_Program(uchar str,uchar address_h,uchar address_l)

{

ISP_DATA=str; //送入写入数据

ISP_ADDRH=address_h; //送入写入地址高位

ISP_ADDRL=address_l; //送入写入地址低位

EA=0; //希望在写入EEPROM过程中不允许外部中断

ISP_CONTRL=(WAIT_TIME_40|ISPEN);//使能ISP,同时设置等待时间

ISP_CMD=ISP_BYTE_PROGRAM; //写入字节写命令

ISP_TRIG=0X46; //先写0X46 ,然后写0xb9到ISP触发寄存器

相关文档
最新文档