欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
AVR內(nèi)部EEPROM讀寫函數(shù) EEPROM.H
[打印本頁]
作者:
heicc
時間:
2015-1-5 16:36
標(biāo)題:
AVR內(nèi)部EEPROM讀寫函數(shù) EEPROM.H
#pragma used+
///寫單字節(jié)EEPROM
void EEPROM_write(unsigned int uiAddress, unsigned char ucData);
///讀單字節(jié)EEPROM
unsigned char EEPROM_read(unsigned int uiAddress);
///寫雙字節(jié)EEPROM
void EEPROM_write2(unsigned int uiAddress, unsigned int ucData);
///讀雙字節(jié)EEPROM
unsigned int EEPROM_read2(unsigned int uiAddress);
///讀4字節(jié)EEPROM
unsigned long EEPROM_read4(unsigned int uiAddress);
///寫4字節(jié)EEPROM
void EEPROM_write4(unsigned int uiAddress, unsigned long ucData);
#pragma used-
#pragma library eeprom.lib
EEPROM.C
//#include "eeprom.h"
/* EEPROM Control Register */
#define EERIE 3
#define EEMWE 2
#define EEWE 1
#define EERE 0
#if funcused EEPROM_write
///寫單字節(jié)EEPROM
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
//#asm("cli")
////* 等待上一次寫操作結(jié)束
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress;
EEDR = ucData;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
//#asm("sei")
}
#endif
#if funcused EEPROM_read
///讀單字節(jié)EEPROM
unsigned char EEPROM_read(unsigned int uiAddress)
{
#asm("cli")
///* 等待上一次寫操作結(jié)束
while(EECR & (1<<EEWE));
///* 設(shè)置地址寄存器*/
EEAR = uiAddress;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
return EEDR;
//#asm("sei")
}
#endif
#if funcused EEPROM_read2
///讀雙字節(jié)EEPROM
unsigned int EEPROM_read2(unsigned int uiAddress)
{ unsigned int ucdata;
// #asm("cli")
///* 等待上一次寫操作結(jié)束
while(EECR & (1<<EEWE));
///* 設(shè)置地址寄存器*/
EEAR = uiAddress+1;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
ucdata = EEDR;
ucdata =ucdata<<8;
while(EECR & (1<<EEWE));
///* 設(shè)置地址寄存器*/
EEAR = uiAddress;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
ucdata |= EEDR;
return ucdata;
//#asm("sei")
}
#endif
#if funcused EEPROM_write2
///寫雙字節(jié)EEPROM
void EEPROM_write2(unsigned int uiAddress, unsigned int ucData)
{
//#asm("cli")
////* 等待上一次寫操作結(jié)束
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress;
EEDR = ucData & 0x00ff;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress+1;
EEDR = (ucData & 0xff00)>>8;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
//#asm("sei")
}
#endif
#if funcused EEPROM_read4
///讀4字節(jié)EEPROM
unsigned long EEPROM_read4(unsigned int uiAddress)
{ unsigned long ucdata;
// #asm("cli")
///* 等待上一次寫操作結(jié)束
while(EECR & (1<<EEWE));
///* 設(shè)置地址寄存器*/
EEAR = uiAddress+3;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
ucdata = EEDR;
ucdata =ucdata<<8;
EEAR = uiAddress+2;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
ucdata |= EEDR;
ucdata =ucdata<<8;
EEAR = uiAddress+1;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
ucdata |= EEDR;
ucdata =ucdata<<8;
while(EECR & (1<<EEWE));
///* 設(shè)置地址寄存器*/
EEAR = uiAddress;
///* 設(shè)置EERE 以啟動讀操作
EECR |= (1<<EERE);
///* 自數(shù)據(jù)寄存器返回數(shù)據(jù)
ucdata |= EEDR;
return ucdata;
//#asm("sei")
}
#endif
#if funcused EEPROM_write4
///寫4字節(jié)EEPROM
void EEPROM_write4(unsigned int uiAddress, unsigned long ucData)
{
//#asm("cli")
////* 等待上一次寫操作結(jié)束
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress;
EEDR = ucData & 0x000000ff;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
ucData = ucData>>8;
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress+1;
EEDR = ucData & 0x000000ff;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
ucData = ucData>>8;
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress+2;
EEDR = ucData & 0x000000ff;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
ucData = ucData>>8;
while(EECR & (1<<EEWE));
////* 設(shè)置地址和數(shù)據(jù)寄存器
EEAR = uiAddress+3;
EEDR = ucData & 0x000000ff;
////* 置位EEMWE
EECR |= (1<<EEMWE);
////* 置位EEWE 以啟動寫操作
EECR |= (1<<EEWE);
//#asm("sei")
}
#endif
復(fù)制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1