/*
***************************************************************************************************
函式名:EE_readbyte
功能:片內EEPROM讀1位元組
說明:Read_AddrH:待寫入的高地址;Read_Addr:待寫入的低地址
函式執行完返回一個存放在該地址處的值
*/
ucharEE_ReadByte(ucharRead_AddrH,ucharRead_Addr)
{
EEADRH=Read_AddrH;//寫入高地址
EEADR=Read_Addr;//寫入低地址
EECON1bits.EEPGD=0;//訪問EEPROM儲存區
EECON1bits.CFGS=0;//訪問EEPROM或程式區
EECON1bits.RD=1;
returnEEDATA;
}
函式名:EE_writebyte
功能:片內EEPROM寫1位元組
說明:Write_AddrH:待寫入的高位地址;Write_Addr:待寫入的低位地址;Write_Byte:待寫入的位元組
voidEE_WriteByte(ucharWrite_AddrH,ucharWrite_Addr,ucharWrite_Byte)
ClrWdt();//餵狗
while(EECON1bits.WR);
EEADRH=Write_AddrH;//寫入高地址
EEADR=Write_Addr;//寫入低地址
EEDATA=Write_Byte;//寫入資料
EECON1bits.WREN=1;//充許擦寫
INTCONbits.GIE=0;//禁止所有中斷
EECON2=0x55;//寫入金鑰
EECON2=0xaa;
EECON1bits.WR=1;//開始寫操作
Nop();
INTCONbits.GIE=1;//開中斷
EECON1bits.WREN=0;//禁止擦寫
while(EECON1bits.WR)//等待寫完成
;
函式名:EE_WriteArray
功能:寫入陣列資料到EEPROM
說明:AddrH:EEPROM起始地址高位元組,Addr:EEPROM起始地址低位元組
WriteByte[]:待儲存的資料存放陣列
LenArray:待儲存的陣列長度
舉例:存放地址0x0020---0x0029;存放資料array[10]
voidEE_WriteArray(ucharAddrH,ucharAddr,ucharWriteArray[],ucharLenArray)
uchartempH,tempL,tempByte;
uinti=0;
tempH=AddrH;
tempL=Addr;
for(i=0;i
/*
***************************************************************************************************
函式名:EE_readbyte
功能:片內EEPROM讀1位元組
說明:Read_AddrH:待寫入的高地址;Read_Addr:待寫入的低地址
函式執行完返回一個存放在該地址處的值
***************************************************************************************************
*/
ucharEE_ReadByte(ucharRead_AddrH,ucharRead_Addr)
{
EEADRH=Read_AddrH;//寫入高地址
EEADR=Read_Addr;//寫入低地址
EECON1bits.EEPGD=0;//訪問EEPROM儲存區
EECON1bits.CFGS=0;//訪問EEPROM或程式區
EECON1bits.RD=1;
returnEEDATA;
}
/*
***************************************************************************************************
函式名:EE_writebyte
功能:片內EEPROM寫1位元組
說明:Write_AddrH:待寫入的高位地址;Write_Addr:待寫入的低位地址;Write_Byte:待寫入的位元組
***************************************************************************************************
*/
voidEE_WriteByte(ucharWrite_AddrH,ucharWrite_Addr,ucharWrite_Byte)
{
ClrWdt();//餵狗
while(EECON1bits.WR);
EEADRH=Write_AddrH;//寫入高地址
EEADR=Write_Addr;//寫入低地址
EEDATA=Write_Byte;//寫入資料
EECON1bits.EEPGD=0;//訪問EEPROM儲存區
EECON1bits.CFGS=0;//訪問EEPROM或程式區
EECON1bits.WREN=1;//充許擦寫
INTCONbits.GIE=0;//禁止所有中斷
EECON2=0x55;//寫入金鑰
EECON2=0xaa;
EECON1bits.WR=1;//開始寫操作
Nop();
Nop();
INTCONbits.GIE=1;//開中斷
EECON1bits.WREN=0;//禁止擦寫
while(EECON1bits.WR)//等待寫完成
{
;
}
}
/*
***************************************************************************************************
函式名:EE_WriteArray
功能:寫入陣列資料到EEPROM
說明:AddrH:EEPROM起始地址高位元組,Addr:EEPROM起始地址低位元組
WriteByte[]:待儲存的資料存放陣列
LenArray:待儲存的陣列長度
舉例:存放地址0x0020---0x0029;存放資料array[10]
***************************************************************************************************
*/
voidEE_WriteArray(ucharAddrH,ucharAddr,ucharWriteArray[],ucharLenArray)
{
uchartempH,tempL,tempByte;
uinti=0;
tempH=AddrH;
tempL=Addr;
for(i=0;i