我这里有一份自己写的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关闭
- }
|