|
推荐
<div style="word-break: break-all" align="left"> <span style="font-size: 9pt">华邦公司推出的 LPC(W79E2051/W79E825)单片机系列,内含小扇区的 NVM(仿EEPROM),在使用上比一般产品方便(指用 FLASH仿 EEPROM),因产品需要,编写了 NVM(仿EEPROM) 库函数,现上传供网友分享。(许工是我们MCU行业,大师级人物,从许工身上可以看到我们技术人员的,务实求是、专研精神。如果大家经常逛BBS,应该经常会看到许工的身影,他经常为我们这些新手答疑解惑,组织翻译、样板赠送活动,他的那种无私贡献,乐于助人的精神让我非常的敬佩)
//------------------------------------------------------//
#ifndef __W79ExxxNVM_H__
#define __W79ExxxNVM_H__
#i nclude
#if defined(W79E825) // W79E825
# include "W79E825.h"
# define NVM_PLEN 64 // LEN = 256
# define NVM_RL 6 // PAGE = 4
#elif defined(W79E4051) // W79E4051
# include "W79E4051.h"
# define NVM_PLEN 16 // LEN = 128
# define NVM_RL 4 // PAGE = 8
#else
# error "请选择带NVM芯片型号"
#endif
#pragma SAVE
#pragma REGPARMS
// char NVM_RD_CHAR(unsigned char ADDR)
#define NVM_RD_CHAR(m) CBYTE[m+0xfc00] // 字节读出
extern int NVM_RD_INT(unsigned char ADDR); // 字读出
extern long NVM_RD_LONG(unsigned char ADDR); // 长字读出
extern void NVM_RD_PAGE(unsigned char PAGE,unsigned char *p); // 页读出
extern void NVM_CLR(unsigned char PAGE); // 页擦除
extern void NVM_WR_CHAR(unsigned char ADDR,unsigned char CA); // 字节写入
extern void NVM_WR_INT(unsigned char ADDR,unsigned int IA); // 字写入
extern void NVM_WR_LONG(unsigned char ADDR,unsigned long LA); // 长字写入
extern void NVM_WR_PAGE(unsigned char PAGE,unsigned char *p); // 页写入
#pragma RESTORE
#endif // __W79ExxxNVM_H__
//------------------------------------------------------//
/*---------------------------------------------------*/
/* */
/* W79E4051/W79E825 NVM通用读写子程序 */
/* */
/* CPU : W79E4051 */
/* 晶振 : 12MHz */
/* 作者 : 许意义 */
/* 版本 : V1.0 */
/* 日期 : 2009.1.6 */
/* */
/*---------------------------------------------------*/
#i nclude "MPU51TYPE.h"
#i nclude "W79ExxxNVM.h"
int NVM_RD_INT(unsigned char ADDR) // 字读出
{ unsigned int IA;
byte0(IA) = NVM_RD_CHAR(ADDR++);
byte1(IA) = NVM_RD_CHAR(ADDR);
return(IA);
}
long NVM_RD_LONG(unsigned char ADDR) // 长字读出
{ unsigned long LA;
byte0(LA) = NVM_RD_CHAR(ADDR++);
byte1(LA) = NVM_RD_CHAR(ADDR++);
byte2(LA) = NVM_RD_CHAR(ADDR++);
byte3(LA) = NVM_RD_CHAR(ADDR);
return(LA);
}
void NVM_RD_PAGE(unsigned char PAGE,unsigned char *p) // 页读出
{
unsigned char a, i;
a = PAGE |
|