首页 > 应用 > 单片机应用
[导读]
程序经过测试,可以直接引用就可以。欢迎大家下载使用。12C5AS32单片机测试过。EEPROM。H文件。。。#ifndef_EEPROM_H_#define_EEPROM_H_#include#defineuint16unsigned int#defineuint8 unsigned char/

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

本文引用地址: http://www.21ic.com/app/mcu/201807/765050.htm

12C5AS32单片机测试过。

EEPROM。H文件。。。

#ifndef_EEPROM_H_
#define_EEPROM_H_

#include

#defineuint16unsigned int
#defineuint8 unsigned char

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

//STC单片机IAP定义

sfrIAP_DATA = 0xC2;
sfrIAP_ADDRH = 0xC3;
sfrIAP_ADDRL = 0xC4;
sfrIAP_CMD = 0XC5;
sfrIAP_TRIG = 0xC6;
sfrIAP_CONTR = 0xC7;


#defineISP_IAP_BYTE_READ1//字节读
#defineISP_IAP_BYTE_PROGRAM2//字节编程
#defineISP_IAP_SECTOR_ERASE3//扇区擦除
#defineWAIT_TIME0//等侍时间
#defineENABLE_IAP0x83

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

uint8 Read_IAP(uint16 Adres);
void Write_IAP(uint8 Value,uint16 Adres);
voidSector_Erase_IAP(uint16 Sector);
voidDISAble_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功能函数
//--------------------------------------------------

voidSector_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功能
//--------------------------------------------------
voidDisable_IAP(void)
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRH = 0xFF;
IAP_ADDRL = 0xFF;
}

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


换一批

延伸阅读

[单片机应用] 单片机通信时序解析

单片机通信时序解析

随着我们对通信技术的深入学习,大家要逐渐在头脑中建立起时序这种概念。所谓“时序”从字面意义上来理解,一是“时间问题”,二是“顺序问题”。先说“顺序问题”,这个相对简单一些。我们在学 UART 串口通信的时候......

关键字:单片机 通信时序

[单片机应用] 51单片机学习笔记,操作1602液晶

51单片机学习笔记,操作1602液晶

TX-1C板操作并行模式的1602液晶液晶第1,2脚是gnd和vcc第3脚是对比度调节第4脚是数据/指令选择端RS第5脚是读写选择端R/W,我们这次只写不读,故直接接地第6脚是读写使能EN第7到14脚是数据口,我们接STC89C52RC的P......

关键字:51单片机 1602液晶

[单片机应用] ARM7单片机(学习ing)—(一)、输入/输出端口GPIO编程—02

ARM7单片机(学习ing)—(一)、输入/输出端口GPIO编程—02

一、输入/输出端口GPIO编程一—(02)、控制LCD1602显示~~废话不多说了~~直接上图~~然后是程序~~MDK1_2.c//------------------------------------------------------......

关键字:ARM7 单片机 GPIO编程

[单片机应用] MSP-430 程序烧录说明

MSP-430 程序烧录说明

目标:针对HT824过程校准仪仪按键板(同频谱仪相同的按键板)开发。工具:MSP-FET430UIF烧录器(支持JTAG与BSL烧录)软件:lite FET-Pro430 Elprotronic V3.3 或者 MSPFET注意事项:(1)......

关键字:MSP-430 程序烧录

[单片机应用] 固态继电器在PIC单片机控制的多回路温度检测系统的应用

固态继电器在PIC单片机控制的多回路温度检测系统的应用

1.引言 对于塑料制瓶工艺, 塑料加热处于溶融状态, 经高压注射成为管胚, 短时间冷却以后, 经过高压空气的吹胀, 在制瓶模具中成型。其工艺特点之一是: 溶融状态下的塑料定时流动; 成为管胚之后, 将与外部空气接触 2......

关键字:固态继电器 PIC 单片机控制 温度检测系统

[单片机应用] 单片机程序有多大 怎么看

单片机程序有多大 怎么看

这个问题,在我接触的单片机初学者当中,很多人都遇到过,是什么问题呢?给大家举个栗子:先介绍一下常识:hex文件,就是我们要下载到单片机中的程序文件,而每一种单片机,都有一定的程序存储空间,一般就是多少K的......

关键字:单片机 程序

[单片机应用] 595输出驱动数码管闪烁

 595输出驱动数码管闪烁

/*有个题目,是用595输出,驱动6位数码管显示时、分、秒。用两个按键进行修改,一个变换修改的位置,另一个是加一。提问者希望让待调整的位闪烁。题目可见:http://zhidao.baidu.com/question......

关键字:数码管

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客