您的位置 首页 方案

I-wire总线(单总线)读写51程序

———————–函数声明,变量定义——————————————————–includesbitD

//———————–函数声明,变量界说——————————————————–

#include
sbit DQ=P1^0;// 将p1.0口模仿时钟输出

//————————————————————————————————–
// 函数称号: delay
// 进口参数: N
// 函数功用:延时子程序,完成(16*N+24)us的延时
// 体系选用11.0592MHz的时钟时,延时满足要求,其它状况需求改动
//————————————————————————————————–
void delay(unsignedint N)
{
int i;
for(i=0;i
}
//————————————————————————————————–
// 函数称号: Reset
// 进口参数: 无
// 回来deceive_ready
// 函数功用:复位
//————————————————————————————————–
unsigned char Reset(void)
{
unsignedchar deceive_ready;
DQ=0;//拉低DQ线
delay(29);//延时至少480us~960us
DQ=1;//将DQ线设置位逻辑高
delay(3);//延时等候deceive_ready呼应
deceive_ready=DQ;//采样deceive_ready信号
delay(25);//等候时序完毕
return(deceive_ready);//有deceive_ready信号时回来0,不然回来1
}
//————————————————————————————————–
// 函数称号:read_bit
// 进口参数: 无
// 回来接纳的数据
// 函数功用:读一个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值
}
//————————————————————————————————–
// 函数称号: write_bit
// 进口参数: bitval
// 函数功用:写一个bit子程序
//————————————————————————————————–
void write_bit(unsigned char bitval)
{
DQ=0;//拉低DQ线开端时序
if(bitval==1)
DQ=1;//假如写逻辑为高
delay(5);//延时
DQ=1;//升高DQ线
}
//————————————————————————————————–
// 函数称号: write_byte
// 进口参数: val
// 函数功用:写一个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);//延时至时序完毕
}
}
//————————————————————————————————–
// 函数称号: read_byte
// 回来接纳的数据 value
// 函数功用:读一个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<}//每读一位数据据,左移一位
delay(6);//延时至时序完毕
}
return(receive_data);//回来value
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/258420.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部