一、简介
自从上次编写了中颖单片机C51定点库、浮点库专用运算库函数,再接再励,完善中颖单片机通用库函数,特编写了《中颖FLASH、类EEPROM 专用读写库》,适于于中颖SH79/88/89系列对片内FLASH、类EEPROM 的读出和写入,完善对中颖单片机的技术支持。
二、中颖FLASH、类EEPROM 专用读写库 清单
/***************************************************************************************
Model: flash-sh88f51.h
Description : Head file of defining GLOBAL variable.
Author: CLR
Create Time : 2011-10-19
Version ID: 1.5
用途 :中颖SH79/88/89F51系列MCU
作者 :许意义
21icID :LAOXU
中颖论坛 : bbs.21ic.com
****************************************************************************************/
#ifndef_FLASH_SH88F51_H
#define_FLASH_SH88F51_H
#pragmaMODDP2 // 打开中颖单片机双DPTR功能,加速数据传送
//#pragmaNOMODDP2 // 关闭中颖单片机双DPTR功能
/*--------------------------------------------------------------------------------------*/
/* Resource - FLASH_SH88F51.asm */
/*--------------------------------------------------------------------------------------*/
externuint8read_eeprom_u8 (uint16 u16_addr, uint8 u8_FAC); // 从指定的eeprom/flash地址中读出char型变量
externuint16 read_eeprom_u16(uint16 u16_addr, uint8 u8_FAC); // 从指定的eeprom/flash地址中读出int型变量
externuint32 read_eeprom_u32(uint16 u16_addr, uint8 u8_FAC); // 从指定的eeprom/flash地址中读出long型变量
extern void read_eeprom_str(uint16 u16_addr, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 从eeprom/flash中读出字符串, 存储在char*指向的RAM中
extern void erase_eeprom(uint8 u8_XPAGE, uint8 u8_FAC); // 擦除eeprom/flash的指定页
extern bit write_eeprom_u8 (uint8u8_data,uint16 u16_addr, uint8 u8_FAC);// 将char型变量写入指定的eeprom/flash中
extern bit write_eeprom_u16(uint16 u16_data, uint16 u16_addr, uint8 u8_FAC);// 将int型变量写入指定的eeprom/flash中
externbit write_eeprom_u32(uint32 u32_data, uint16 u16_addr, uint8 u8_FAC);// 将long型变量写入指定的eeprom/flash中
externbit write_eeprom_str(uint16 u16_addr, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 将char*指向的字符串写入指定的eeprom/flash中
extern bitread_eeprom_like(uint8 u8_XPAGE, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 从指定页循环使用的eeprom/flash空间内,读出长度为u8_LEN的字符串
extern bit write_eeprom_like(uint8 u8_XPAGE, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 从指定页循环使用的eeprom/flash空间内,读出长度为u8_LEN的字符串
// 入口要求: u8_FAC=1 指定eeprom时,u8_len > 1;u8_FAC=0 指定flash时,u8_len > 4
// 返回:C=0 --> 读写成功,C=1 --> u8_len长度不符规定或末成功写入
/* 中颖单片机EEPROM或FLASH数据读出/写入库内部调用函数
extern void read_rom_dptr1(int16 u16_DPTR1); // 从@DPTR1中读出1byte EEPROM或FLASH数据(其FAC位已预设定)送ACC, DPTR1++
extern bitcmp_eeprom_1(uint8u8_data); // 将@DPTR1指定的EEPROM或FLASH中内容读出, 和char型变量相比较,DPTR1++
extern bitcmp_eeprom_2(uint16 u16_data); // 将@DPTR1指定的EEPROM或FLASH中内容读出, 和 int型变量相比较,DPTR1++
extern bitcmp_eeprom_4(uint32 u32_data); // 将@DPTR1指定的EEPROM或FLASH中内容读出, 和long型变量相比较,DPTR1++
extern void write_rom_dptr1(int8 u8_ACC); // 将ACC中数据写入@DPTR1指定的EEPROM或FLASH中(其FAC位已预设定),DPTR1++
extern void write_eeprom_1(uint8u8_data) // 将char型变量写入指定的eeprom/flash中
extern void write_eeprom_2(uint16 u16_data) // 将 int型变量写入指定的eeprom/flash中
extern void write_eeprom_4(uint32 u32_data) // 将long型变量写入指定的eeprom/flash中
extern bit check_eeprom_null(uint8 u8_len); // 检查当前写入页中,len长度的空间是否为空 null
extern bit locate_eeprom(uint8 u8_eeprom_count_len); // 寻找index当前写入页中,是否有len长度的空间充许写入
*/
#endif
三、便用说明
只需要在编译程序过程中,加入《中颖FLASH、类EEPROM 专用读写库》----FLASH-SH88F51.LIB,其他什么事都不用干!在编译过程中实现自动插入,无缝嵌入。
四、友情提示
本《中颖FLASH、类EEPROM 专用读写库》,仅适用于中颖SH79/88/89系列单片机,其他51单片机并不适用,由于Keil C51不支持中颖51单片机的软件仿真,所以必须要用中颖51单片机的硬件仿真或依靠中颖51单片机的实时运行,读写结果才能正确