我提供给你一个可用的代码吧,是基于MCC18的。
void WriteEEPROM(unsigned int EEPROM_Addr,unsigned char EEPROM_Data)
{
INTTOCHAR IntCharData;
unsigned char CharData1,CharData2,CharData3;
ClrWdt();
IntCharData.IntData=EEPROM_Addr;
EEPROM_Data1=IntCharData.CharData[0]; EEPROM_Data2=IntCharData.CharData[1];
EEPROM_Data3=EEPROM_Data;
_asm
MOVFF EEPROM_Data2,EEADRH
MOVFF EEPROM_Data1,EEADR
MOVFF EEPROM_Data3,EEDATA
BCF EECON1, 7,0
BCF EECON1, 6,0
BSF EECON1, 2,0
BCF INTCON, 7,0
MOVLW 0x55
MOVWF EECON2,0
MOVLW 0xaa
MOVWF EECON2,0
BSF EECON1, 1,0
BSF INTCON, 7,0
BCF EECON1, 2,0
_endasm
Delay10KTCYx(10);
ClrWdt();
}
其中INTTOCHAR是个整形和字符型共用的联合体,因为这个程序是PIC18F6520的,他的EEPROM比较大。这是实际验证过的程序。你可适当更改。
|