久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
用51怎么模擬I2C總線
[打印本頁]
作者:
51初學(xué)者1
時間:
2016-3-18 19:40
標(biāo)題:
用51怎么模擬I2C總線
用51單片機(jī)怎么模擬I2C總線。求教
作者:
yjd
時間:
2016-3-18 22:47
#include <intrins.h>//其中的_nop_();可以實(shí)現(xiàn)短暫延時
#include <STC15F2K60S2.H>
//定義I2C總線
sbit SCL = P1^0;//時鐘線
sbit SDA = P1^1;//數(shù)據(jù)線
//函數(shù)聲明
void IICdelay();//短暫延時
void IICinit();//總線初始化
void IICstart();//產(chǎn)生起始信號
void IICstop();//產(chǎn)生停止信號
unsigned char SlaRes();//從設(shè)備應(yīng)答
void MasRes();//主設(shè)備應(yīng)答
void NoRes();//主設(shè)備不應(yīng)答
void IICwrite(unsigned char iicdata);//寫一個字節(jié)
unsigned char IICread();//讀一個字節(jié)
void IICWriteOneByte(unsigned char DeviceAddress, unsigned char RegisterAddress, unsigned char dat);//向I2C設(shè)備讀寫一個字節(jié)數(shù)據(jù),WriteOneByte
unsigned char IICReadOneByte(unsigned char DeviceAddress,unsigned char RegisterAddress);//從I2C設(shè)備讀取一個字節(jié)數(shù)據(jù)
//I2C通信使用delay()函數(shù)
//一個_nop_()延時1us,總線要求延時大于4.7us
//單片機(jī)頻率執(zhí)行周期不同時按實(shí)際需要修改
void IICdelay()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
//總線初始化
//將總線都拉高以釋放總線
void IICinit()
{
SCL = 1;
IICdelay();
SDA = 1;
IICdelay();
}
//啟動信號
//SCL在高電平期間,SDA由高電平向低電平的變化定義為啟動信號
void IICstart()
{
SDA = 1;
IICdelay();
SCL = 1;
IICdelay();
SDA = 0;
IICdelay();
}
//停止信號
//SCL在高電平期間,SDA由低電平向高電平的變化定義為停止信號
void IICstop()
{
SDA = 0;
IICdelay();
SCL = 1;
IICdelay();
SDA = 1;
IICdelay();
}
//應(yīng)答信號
//SCL在高電平期間,SDA被從設(shè)備拉為低電平表示應(yīng)答
//其中(SDA == 1)&&(i<255)表示若在一段時間內(nèi)沒有收到從器件的應(yīng)答則主器件默認(rèn)從器件已經(jīng)收到數(shù)據(jù)而不再等待應(yīng)答信號
unsigned char SlaRes()
{
unsigned char i = 0;
SCL = 1;
IICdelay();
while(SDA)
{
i++;
if(i > 254)
{
IICstop();
return 1;
}
}
SCL = 0;
IICdelay();
return 0;
}
//由主設(shè)備發(fā)出應(yīng)答
//從設(shè)備在發(fā)送完一字節(jié)后將SDA拉高(SDA被釋放),主設(shè)備將SDA拉低產(chǎn)生應(yīng)答
void MasRes()
{
SDA = 0;//直接將SDA拉低,再操縱SCL
IICdelay();
SCL = 1;
IICdelay();
SCL = 0;
IICdelay();
}
//主設(shè)備不應(yīng)答
void NoRes()
{
SDA = 1;//SDA高電平為不應(yīng)答
IICdelay();
SCL = 1;
IICdelay();
SCL = 0;
IICdelay();
}
//寫入
//表示將temp左移一位,最高位將移入PSW寄存器的CY位中,然后將CY賦給SDA進(jìn)而在SCL的控制下發(fā)送出去
//最后將SDA拉高,以等待從設(shè)備產(chǎn)生應(yīng)答
void IICwrite(unsigned char iicdata)
{
unsigned char i;
for(i=0; i<8; i++)
{
iicdata = iicdata << 1;
SCL = 0;
IICdelay();
SDA = CY;
IICdelay();
SCL = 1;
IICdelay();
}
SCL = 0;
IICdelay();
SDA = 1;
IICdelay();
}
//讀出
//串行接受一個字節(jié)時需將8位一位一位地接受,然后再組合成一個字節(jié),
unsigned char IICread()
{
unsigned char i, k;
SCL = 0;
IICdelay();
SDA = 1;
IICdelay();
for(i=0; i<8; i++)
{
SCL = 1;
IICdelay();
k = (k<<1)|SDA;
SCL = 0;
IICdelay();
}
IICdelay();
return k;
}
//向I2C設(shè)備寫入一個字節(jié)數(shù)據(jù)
void IICWriteOneByte(unsigned char DeviceAddress, unsigned char RegisterAddress, unsigned char dat)
{
IICstart();//起始信號
IICwrite(DeviceAddress);//發(fā)送設(shè)備地址+寫信號
SlaRes();
IICwrite(RegisterAddress);//內(nèi)部寄存器地址,
SlaRes();
IICwrite(dat);//內(nèi)部寄存器數(shù)據(jù),
SlaRes();
IICstop();//發(fā)送停止信號
}
//從I2C設(shè)備讀取一個字節(jié)數(shù)據(jù)
unsigned char IICReadOneByte(unsigned char DeviceAddress, unsigned char RegisterAddress)
{
unsigned char dat;
IICstart();//起始信號
IICwrite(DeviceAddress);//發(fā)送設(shè)備地址+寫信號
SlaRes();
IICwrite(RegisterAddress);//發(fā)送存儲單元地址,從0開始
SlaRes();
IICstart();//起始信號
IICwrite(DeviceAddress+1);//發(fā)送設(shè)備地址+讀信號
SlaRes();
dat = IICread();//讀出寄存器數(shù)據(jù)
NoRes();//非應(yīng)答信號
IICstop();//停止信號
return dat;
}
復(fù)制代碼
作者:
machinepan
時間:
2016-3-21 11:06
選兩個口作sck跟scl就可以了
作者:
Flyxin
時間:
2016-3-21 23:17
普中的有詳細(xì)例程
作者:
luoluoluo136
時間:
2016-3-22 09:45
iic的例程很多啦,庫也有,這里就不貼了,在咱們論壇都有很多
作者:
scdpj
時間:
2016-3-22 10:11
yjd 發(fā)表于 2016-3-18 22:47
編寫很多,正在學(xué)習(xí)中。
作者:
appleorapple
時間:
2016-3-22 13:33
就兩個IO口模擬啊,軟件網(wǎng)上很多
作者:
Ty78619120
時間:
2019-7-17 17:50
yjd 發(fā)表于 2016-3-18 22:47
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****
您好,關(guān)于模擬I2C能不能交流一下
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
韩三级在线观看
|
亚洲高清在线播放
|
99久久精品免费看国产四区
|
一区二区三区免费观看
|
伊人激情网
|
欧美极品在线播放
|
91在线资源
|
麻豆精品国产91久久久久久
|
亚洲444kkkk在线观看最新
|
欧美区日韩区
|
a级大毛片
|
少妇无套高潮一二三区
|
精品欧美一区二区三区久久久
|
精品欧美激情在线观看
|
中文字幕一区二区三区四区
|
在线免费观看视频你懂的
|
国产 亚洲 网红 主播
|
日韩欧美精品一区
|
日韩www
|
久久久久久久国产精品
|
国产精品大片在线观看
|
成人在线视频免费看
|
国产高清免费
|
久久伊人精品
|
四虎永久免费影院
|
综合久久av
|
国产精品欧美一区二区三区
|
狠狠色狠狠色综合系列
|
国产精品美女久久久av超清
|
成人一区二区三区
|
日本成人毛片
|
国产成人在线看
|
日日做夜夜爽毛片麻豆
|
狠狠爱免费视频
|
日韩av一区二区在线观看
|
国产黄色在线观看
|
国产成人精品久久二区二区
|
国产高清免费
|
欧美在线一区二区三区
|
日本一区二区视频
|
精品中文字幕在线观看
|