unsigned char Read_DS1302(unsigned char addr)
{
unsigned char i,temp,date;
temp = addr;
RST = 0;
delay(1);
RST = 1;
SCLK = 1;
for(i=8;i>0;i--)
{
IO = temp&0x01;//先寫低位
SCLK = 0; //上升沿有效
_nop_() ;
SCLK = 1; //為下一個數據的輸入做準備
temp = temp>>1;
}
SCLK = 0;
for(i=8;i>0;i--)
{
date |= (unsigned char)IO;
SCLK = 1;
_nop_();
SCLK = 0;
date = date<<1;
}
RST = 0;
SCLK = 0;
return date/16*10+date%16; //返回調整好的16進制數
}
程序邏輯有問題嗎?
|