最新更新,带全部源程序~~~
/***************************************************************************************
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
作 者 :许意义
21ic ID :LAOXU
中颖论坛 : bbs.21ic.com
****************************************************************************************/
#ifndef _FLASH_SH88F51_H
#define _FLASH_SH88F51_H
#pragma MODDP2 // 打开中颖单片机双DPTR功能,加速数据传送
//#pragma NOMODDP2 // 关闭中颖单片机双DPTR功能
/*--------------------------------------------------------------------------------------*/
/* Resource - FLASH_SH88F51.asm */
/*--------------------------------------------------------------------------------------*/
extern uint8 read_eeprom_u8 (uint16 u16_addr, uint8 u8_FAC); // 从指定的eeprom/flash地址中读出char型变量
extern uint16 read_eeprom_u16(uint16 u16_addr, uint8 u8_FAC); // 从指定的eeprom/flash地址中读出int型变量
extern uint32 read_eeprom_u32(uint16 u16_addr, uint8 u8_FAC); // 从指定的eeprom/flash地址中读出long型变量
extern bit write_eeprom_u8 (uint8 u8_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中
extern bit write_eeprom_u32(uint32 u32_data, uint16 u16_addr, uint8 u8_FAC); // 将long型变量写入指定的eeprom/flash中
extern bit write_eeprom_str(uint16 u16_addr, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 将char*指向的字符串写入指定的eeprom/flash中
extern void read_eeprom_str(uint16 u16_addr, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 从eeprom/flash中读出字符串, 存储在char*指向的RAM中
/*--------------------------------------------------------------------------------------*/
/* 下面为中颖标准型号FLASH(page=1k)读写专用 */
/*--------------------------------------------------------------------------------------*/
extern void erase_eeprom(uint8 u8_XPAGE, uint8 u8_XPAGE, uint8 u8_FAC); // 擦除eeprom/flash的指定页,要求page连续送两遍,以提高抗干扰性(注:适用标准型号flash page=1k)
extern bit read_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 (注:适用标准型号flash page=1k)
// 返回: C=0 --> 读写成功,C=1 --> u8_len长度不符规定或末成功写入
/*--------------------------------------------------------------------------------------*/
/* 下面为中颖老型号FLASH(page=2k)读写专用 */
/*--------------------------------------------------------------------------------------*/
extern void erase_eeprom2(uint8 u8_XPAGE, uint8 u8_XPAGE, uint8 u8_FAC); // 擦除eeprom/flash的指定页,要求page连续送两遍,以提高抗干扰性(注:适用老型号flash page=2k)
extern bit read_eeprom_like2(uint8 u8_XPAGE, uint8 u8_len, uint8 *u8_data, uint8 u8_FAC); // 从指定页循环使用的eeprom/flash空间内,读出长度为u8_LEN的字符串
extern bit write_eeprom_like2(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 > 8 (注:适用老型号flash page=2k)
// 返回: C=0 --> 读写成功,C=1 --> u8_len长度不符规定或末成功写入
/* 中颖单片机EEPROM或FLASH数据读出/写入库内部调用函数
extern void read_rom_dptr1(int16 u16_DPTR1); // 从@DPTR1中读出1byte EEPROM或FLASH数据(其FAC位已预设定)送ACC, DPTR1++
extern bit cmp_eeprom_1(uint8 u8_data); // 将@DPTR1指定的EEPROM或FLASH中内容读出, 和char型变量相比较,DPTR1++
extern bit cmp_eeprom_2(uint16 u16_data); // 将@DPTR1指定的EEPROM或FLASH中内容读出, 和 int型变量相比较,DPTR1++
extern bit cmp_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(uint8 u8_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 |