本帖最后由 dylan20000901 于 2021-4-16 17:40 編輯
/*******************************************************************************
* 函 數(shù) 名 : Ds1302Read
* 函數(shù)功能 : 讀取一個地址的數(shù)據(jù)
* 輸 入 : addr
* 輸 出 : dat
*******************************************************************************/
unsigned char Ds1302Read(unsigned char addr)
{
unsigned char n,dat,dat1;
RST = 0;
_nop_();
SCLK = 0;//先將SCLK置低電平。
_nop_();
RST = 1;//然后將RST(CE)置高電平。
_nop_();
for(n=0; n<8; n++)//開始傳送八位地址命令
{
DSIO = addr & 0x01;//數(shù)據(jù)從低位開始傳送
addr >>= 1;
SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)
_nop_();
SCLK = 0;//DS1302下降沿時,放置數(shù)據(jù)
_nop_();
}
_nop_();
for(n=0; n<8; n++)//讀取8位數(shù)據(jù)
{
dat1 = DSIO;//從最低位開始接收
dat = (dat>>1) | (dat1<<7);
SCLK = 1;
_nop_();
SCLK = 0;//DS1302下降沿時,放置數(shù)據(jù)
_nop_();
}
RST = 0;
_nop_(); //以下為DS1302復位的穩(wěn)定時間,必須的。
SCLK = 1;
_nop_();
DSIO = 0;
_nop_();
DSIO = 1;
_nop_();
return dat; 還有這個最后一行的dat返回到哪里去��?是干什么用的呢?
|