我这里有一份自己写的PIC18F27Q10的EEPROM读写驱动,不知道是否合你意,PIC18F27Q10和PIC18F47Q10只是封装不同而已
#include "EEPROM.h"
unsigned char EEPROM_Read(unsigned short addr)
{
unsigned char eep_data;
NVMADRL=addr; //加载地址低位
NVMADRH=(addr>>8); //加载地址高位
NVMADRU=0x31; //加载地址最高位
NVMCON0=0x80; //NVM使能
NVMCON1 |=1; //读使能
while(NVMCON1&1); //等待读结束
eep_data=NVMDATL; //读取数据
NVMCON0=0; //NVM关闭
return eep_data;
}
void EEPROM_Write(unsigned short addr , unsigned char dat)
{
unsigned char eep_data;
NVMADRL=addr; //加载地址低位
NVMADRH=(addr>>8); //加载地址高位
NVMADRU=0x31; //加载地址最高位
NVMDATL=dat; //加载数据
NVMCON0=0x80; //NVM使能
NVMCON2=0x55; //解锁步骤1
NVMCON2=0xAA; //解锁步骤2
NVMCON1|=(1<<4); //写使能
while(NVMCON1&(1<<4)); //等待写结束
while(!(PIR7&(1<<5))); //等待写结束中断标记置位
PIR7&=(~(1<<5)); //清除标记位
NVMCON0=0; //NVM关闭
}
|