/*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,读得的数据
}