新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > I-wire總線(單總線)讀寫51程序

I-wire總線(單總線)讀寫51程序

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
//-----------------------函數(shù)聲明,變量定義--------------------------------------------------------

#include
sbit DQ=P1^0;// 將p1.0口模擬時鐘輸出

本文引用地址:http://2s4d.com/article/201611/321915.htm

//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: delay
// 入口參數(shù): N
// 函數(shù)功能:延時子程序,實現(xiàn)(16*N+24)us的延時
// 系統(tǒng)采用11.0592MHz的時鐘時,延時滿足要求,其它情況需要改動
//--------------------------------------------------------------------------------------------------
void delay(unsignedint N)
{
int i;
for(i=0;i
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: Reset
// 入口參數(shù): 無
// 返回deceive_ready
// 函數(shù)功能:復位
//--------------------------------------------------------------------------------------------------
unsigned char Reset(void)
{
unsignedchar deceive_ready;
DQ=0;//拉低DQ線
delay(29);//延時至少480us~960us
DQ=1;//將DQ線設(shè)置位邏輯高
delay(3);//延時等待deceive_ready響應(yīng)
deceive_ready=DQ;//采樣deceive_ready信號
delay(25);//等待時序結(jié)束
return(deceive_ready);//有deceive_ready信號時返回0,否則返回1
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱:read_bit
// 入口參數(shù): 無
// 返回接收的數(shù)據(jù)
// 函數(shù)功能:讀一個bit子程序
//--------------------------------------------------------------------------------------------------
unsigned char read_bit(void)
{
unsigned char i;
DQ=0;//拉低DQ線開始時序
DQ=1;//升高DQ線//延時至時序開始15us
for(i=0;i<3;i++);//延時15us
return(DQ);//返回DQ值
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: write_bit
// 入口參數(shù): bitval
// 函數(shù)功能:寫一個bit子程序
//--------------------------------------------------------------------------------------------------
void write_bit(unsigned char bitval)
{
DQ=0;//拉低DQ線開始時序
if(bitval==1)
DQ=1;//如果寫邏輯為高
delay(5);//延時
DQ=1;//升高DQ線
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: write_byte
// 入口參數(shù): val
// 函數(shù)功能:寫一個byte子程序
//--------------------------------------------------------------------------------------------------
void write_byte(unsigned char val)
{
unsigned char i,temp;
for(i=0;i<8;i++)
{
temp=val>>i;//將val位右移i位賦值給比temp
temp=temp&0x01;//取temp最低位
write_bit(temp);
delay(5);//延時至時序結(jié)束
}
}
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: read_byte
// 返回接收的數(shù)據(jù) value
// 函數(shù)功能:讀一個byte子程序
//--------------------------------------------------------------------------------------------------
unsigned char read_byte(void)
{unsigned char i,m,receive_data;
m=1;receive_data=0;//初始化
for(i=0;i<8;i++)
{
if(read_bit())
{
receive_data=receive_data+(m<}//每讀一位數(shù)據(jù)據(jù),左移一位
delay(6);//延時至時序結(jié)束
}
return(receive_data);//返回value
}



關(guān)鍵詞: I-wire總線單總線51程

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉