#include "STC89C5xRC_RDP.H"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit key=P1^3;
uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Delay20ms() //@12.000MHz
{
unsigned char i1, j2, k3;
_nop_();
_nop_();
i1 = 1;
j2 = 234;
k3 = 113;
do
{
do
{
while (--k3);
} while (--j2);
} while (--i1);
}
/************************************************************************
函数名称:关闭 ISP,IAP 功能
全局变量:无
参数说明:无
返回说明:无
设 计 人:ZHCE
版 本:1.0
说 明:
************************************************************************/
void ISP_IAP_disable(void) //关闭
{
ISP_CONTR = ISP_CONTR & 0x7f; /* ISPEN = 0 */
ISP_TRIG = 0x00;
EA = 1; /* 开中断 */
}
/************************************************************************
函数名称:触发函数
全局变量:无
参数说明:无
返回说明:无
设 计 人:ZHCE
版 本:1.0
说 明:
************************************************************************/
void ISP_IAP_Trig(void) //触发
{
EA = 0; /* 关中断 */
ISP_CONTR = ISP_CONTR | 0x81; /* ISPEN=1 写入硬件延时 */
ISP_TRIG = 0x46; /* 触发ISP_IAP命令字节1 */
ISP_TRIG = 0xb9; /* 触发ISP_IAP命令字节2 */
_nop_();
}
/************************************************************************
函数名称:字节读函数
全局变量:无
参数说明:addr:所要读取的地址
返回说明:读取到的数据
设 计 人:ZHCE
版 本:1.0
说 明:
************************************************************************/
uchar byte_read(uint addr) //读
{
ISP_ADDRH = addr >> 8; /* 地址赋值 */
ISP_ADDRL = addr;
ISP_CMD = 0x01; /* 写入读命令 */
ISP_IAP_Trig(); /* 触发执行 */
ISP_IAP_disable(); /* 关闭ISP,IAP功能 */
return (ISP_DATA); /* 返回读到的数据 */
}
/************************************************************************
函数名称:扇区擦除
全局变量:无
参数说明:sector_addr:扇区地址
返回说明:无
版 本:1.0
说 明:
************************************************************************/
void SectorErase(uint sector_addr) //删除
{
ISP_ADDRH = (sector_addr & 0xfe00)>>8;
ISP_ADDRL = sector_addr;
ISP_CMD = 0x03; /* 擦除命令3 */
ISP_IAP_Trig(); /* 触发执行 */
ISP_IAP_disable(); /* 关闭ISP,IAP功能 */
}
/************************************************************************
函数名称:字节写
全局变量:无
参数说明:addr:写入地址, dat:写入数据
返回说明:无
版 本:1.0
说 明:
************************************************************************/
void byte_write(uint addr, uchar dat) //写
{
ISP_ADDRH = addr >>8; /* 取地址 */
ISP_ADDRL = addr;
ISP_CMD = 0x02; /* 写命令2 */
ISP_DATA = dat; /* 写入数据准备 */
ISP_IAP_Trig(); /* 触发执行 */
ISP_IAP_disable(); /* 关闭IAP功能 */
}
/************************************************************************
函数名称:字节写并校验
全局变量:无
参数说明:无
返回说明:无
设 计 人:ZHCE
版 本:1.0
说 明:
************************************************************************/
/*
bit byte_write_verify(uint addr, uchar dat)
{
ISP_ADDRH = (addr >> 8); // 取地址
ISP_ADDRL = addr;
ISP_CMD = 0x02; // 写命令2
ISP_DATA = dat;
ISP_IAP_Trig(); // 触发执行
// 开始读,没有在此重复给地址,地址不会被自动改变
ISP_DATA = 0x00; // 清数据传递寄存器
ISP_CMD = 0x01; // 读命令1
ISP_TRIG = 0x46; // 触发ISP_IAP命令字节1
ISP_TRIG = 0xb9; // 触发ISP_IAP命令字节2
_nop_(); // 延时
ISP_IAP_disable(); // 关闭IAP功能
if(ISP_DATA == dat) // 读写数据校验
return 1; // 返回校验结果
else
return 0;
} */
void main()
{
uint a,b;
while(1)
{
if(key==0)
{
Delay20ms();
if(key==0)
{
a=byte_read(0x2001);
SectorErase(0x2000);
SectorErase(0x2001);
a++;
if(a==8)
a=0;
b=table[a];
byte_write(0x2000,b);
byte_write(0x2001,a);
while(!key);
Delay20ms();
while(!key);
}
}
P2=byte_read(0x2000);
}
}
EEPROM.rar_STC保存_eeprom data_internal eeprom stc
版权申诉
175 浏览量
2022-09-23
00:16:30
上传
评论
收藏 20KB RAR 举报
朱moyimi
- 粉丝: 64
- 资源: 1万+
最新资源
- 以简单、易用、高性能为目标、开源的时序数据库,支持Linux及Windows, Time Series Database.zip
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈