51單片機(jī)的at24c02驅(qū)動(dòng)程序
/*************************************
函數(shù)名:atstart
函數(shù)功能:開始位
參數(shù):無
返回:無
備注:無
*************************************/
void atstart()
{
SDAat= 1;
SCLat= 1;
delayNOP();
SDAat = 0;
delayNOP();
SCLat = 0;
}
/*************************************
函數(shù)名:atstop
函數(shù)功能:停止位
參數(shù):無
返回:無
備注:無
*************************************/
void atstop()
{
SDAat = 0;
delayNOP();
SCLat = 1;
delayNOP();
SDAat = 1;
}
/*************************************
函數(shù)名:atack
函數(shù)功能:應(yīng)答
參數(shù):無
返回:ackbit
備注:無
*************************************
bit atack(void)
{
bit ackbit;
SDAat = 1; // 讀取應(yīng)答
delayNOP();
SCLat = 1;
delayNOP();
ackbit = SDAat;
SCLat = 0;
return ackbit;
}
/*************************************
函數(shù)名:atmcu
函數(shù)功能:從AT24C02移出數(shù)據(jù)到MCU
參數(shù):無
返回:reatdata
備注:無
*************************************/
uchar atmcu()
{
uchar i,reatdata;
for(i = 0; i < 8; i++)
{
SCLat = 1;
reatdata <<= 1;
reatdata |= SDAat;
SCLat = 0;
}
return(reatdata);
}
/*************************************
函數(shù)名:mcuat
函數(shù)功能: 從mcu移出數(shù)據(jù)到24c02
參數(shù):wratdata(數(shù)據(jù))
返回:ackbit(應(yīng)答)
備注:配合wratbyte使用
*************************************/
bit mcuat(uchar wratdata)
{
uchar i;
bit ackbit;
for(i = 0; i < 8; i++) // 循環(huán)移入8個(gè)位
{
SDAat = (bit)(wratdata & 0x80);
_nop_();
SCLat = 1;
delayNOP();
SCLat = 0;
wratdata <<= 1;
}
ackbit=atack();
return ackbit; // 返回AT24C02應(yīng)答位
}
/*************************************
函數(shù)名:wratbyte
函數(shù)功能: 在指定地址addr處寫入數(shù)據(jù)write_data
參數(shù):addr wratdata
返回:無
備注:無
*************************************/
void wratbyte(uchar addr, uchar wratdata)
{
atstart();
mcuat(atwrite);
mcuat(addr);
mcuat(wratdata);
atstop();
delayms(10); // 寫入周期
}
/*************************************
函數(shù)名:fillbyte
函數(shù)功能:填充數(shù)據(jù)fill_data到EEPROM內(nèi)fill_size字節(jié)
參數(shù): fillsize(地址),filldata(數(shù)據(jù))
返回:無
備注:無
*************************************/
void fillbyte(uchar fillsize,uchar filldata)
{
uchar i;
for(i = 0; i < fillsize; i++)
{
wratbyte(i, filldata);
}
}
/*************************************
函數(shù)名:reatbyte
函數(shù)功能:在當(dāng)前地址讀取
參數(shù):無
返回:reatdata(讀取的數(shù)據(jù))
備注:配合readrandom使用
*************************************/
uchar reatbyte()
{
uchar reatdata;
atstart();
mcuat(atread);
reatdata = atmcu();
atstop();
return reatdata;
}
/*************************************
函數(shù)名:readrandom
函數(shù)功能:在指定地址讀取
參數(shù):random_addr(地址)
返回:reatdata(讀取的數(shù)據(jù))
備注:無
*************************************/
uchar readrandom(uchar random_addr)
{
atstart();
mcuat(atwrite);
mcuat(random_addr);
return(reatbyte());
關(guān)鍵詞:
51單片機(jī)at24c02驅(qū)動(dòng)程
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論