STC单片机EEPROM功能模块

来源:本站
导读:目前正在解读《STC单片机EEPROM功能模块》的相关信息,《STC单片机EEPROM功能模块》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STC单片机EEPROM功能模块》的详细说明。
简介:本文给大家分享了STC单片机EEPROM功能模块。

// STC单片机EEPROM功能模块#include #include// 声明与IAP相关的SFRsfr IAP_DATA = 0xE2;sfr IAP_ADDRH = 0xE3;sfr IAP_ADDRL = 0xE4;sfr IAP_CMD = 0xE5;sfr IAP_TRIG = 0xE6;sfr IAP_CONTR = 0xE7;// 定义ISP/IAP/EEPROM命令#define CMD_IDLE 0#define CMD_READ 1#define CMD_PROGRAM 2#define CMD_ERASE 3// 定义IAP_CONTR的值ENABLE_IAP,根据时钟频率有所不同//#define ENABLE_IAP 0x80 // 时钟频率<30MHz//#define ENABLE_IAP 0x81 // 时钟频率<24MHz//#define ENABLE_IAP 0x82 // 时钟频率<20MHz#define ENABLE_IAP 0x83 // 时钟频率<12MHz//#define ENABLE_IAP 0x84 // 时钟频率<6MHz//#define ENABLE_IAP 0x85 // 时钟频率<3MHz//#define ENABLE_IAP 0x86 // 时钟频率<2MHz//#define ENABLE_IAP 0x87 // 时钟频率<1MHz// EEPROM数据保存的首地址#define IAP_ADDRESS 0x0800 // 应跳过程序所占空间的位置// 禁止ISP/IAP/EEPROM功能void IapIdle(){ IAP_CONTR = 0; IAP_CMD = 0; IAP_TRIG = 0; IAP_ADDRH = 0; IAP_ADDRL = 0;}// 从EEPROM中读一个字节BYTE IapReadByte(WORD addr){ BYTE dat; IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_READ; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; // 注意对于STC12C2052(AD)单片机,应先写入0x46,再写入0xb9 // 而对于STC12C5A60S2单片机,应先写入0x5a,再写入0xa5 IAP_TRIG = 0x46; IAP_TRIG = 0xb9; _nop_(); dat = IAP_DATA; IapIdle(); return (dat);}// 写一个字节到EEPROMvoid IapProgramByte(WORD addr, BYTE dat){ IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_PROGRAM; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_DATA = dat; IAP_TRIG = 0x46; IAP_TRIG = 0xb9; _nop_(); IapIdle();}// 擦除EEPROM中的一个扇区void IapEraseSector(WORD addr){ IAP_CONTR = ENABLE_IAP; IAP_CMD = CMD_ERASE; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_TRIG = 0x46; IAP_TRIG = 0xb9; _nop_(); IapIdle();}

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