`
20386053
  • 浏览: 432302 次
文章分类
社区版块
存档分类
最新评论

常用位操作,读8位 I2C 1302 18B20

 
阅读更多
/*1302*/
unsigned char DS1302OutputByte(void) 	//实时时钟读取一字节(内部函数)
{ 
    unsigned char i;
    for(i=8; i>0; i--)
    {
        ACC = ACC >>1;         			//相当于汇编中的 RRC 
        ACC7 = DS1302_IO;
        DS1302_CLK = 1;
        DS1302_CLK = 0;
    } 
    return(ACC); 
}


/*读18b20*/
/*-----------------------------读一个字节------------------------------*/
readonechar(void)
{
	 uchar i=0;
	 uchar dat=0;
	 for(i=8;i>0;i--)
	 	{
		DQ=1;
		delay_us(1);
		DQ=0;
		dat>>=1;
		DQ=1;
		if(DQ)
		dat|=0x80;
		delay_us(4);
		}
		return(dat);
}

/*读I2C*/
uchar read_byte()			 //读一个字节的函数
{
	uchar i,j,k;
	scl=0;
	delaywus();
	sda=1;
	delaywus();
	for(i=0;i<8;i++)		 //8个循环,读一个字节
	{
		scl=1;
		delaywus();
		j=sda;
		k=(k<<1)|j;			 //按位相或,把数据移入k
		scl=0;
		delaywus();
	}
	return k;				//返回值是K,读得的数据
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics