全部資料下載地址:
1302高精度不可調節時鐘.zip
(40.5 KB, 下載次數: 8)
2017-9-28 13:08 上傳
點擊文件名下載附件
完整項目文件 下載積分: 黑幣 -5
- 2017年9月7日
- 21:07
- //DS1302寫入數據
- void writebety_ds(uchar dat)
- {
- uchar i;
- SCLK=0; //初始時鐘線置為 0
- delayus(2);
- for(i=0;i<8;i++) //開始傳輸8個字節的數據
- {
- SDA=dat&0x01; // 取最低位,注意DS1302的數據和地址都是從最低位開始傳輸的
- delayus(2);
- SCLK=1; // 時鐘線拉高,制造上升沿,SDA的數據被傳輸
- delayus(2);
- SCLK=0; // 時鐘線拉低,為下一個上升沿做準備
- dat>>=1; // 數據右移一位,準備傳輸下一位數據
- }
- }
- //DS1302讀出數據
- uchar readbety_ds()
- {
- uchar i,dat;
- delayus(2);
- for(i=0;i<8;i++)
- {
- dat>>=1; // 要返回的數據右移一位
- if(SDA==1) // 當數據線為高時,證明該位數據為 1
- dat|=0x80; // 要傳輸數據的當前值置為1
- SCLK=1; //拉高時鐘線
- delayus(2);
- SCLK=0; // 制造下降沿
- delayus(2);
- }
- return dat; // 返回讀取出的數據
- }
- //DS1302寫入單個時間
- void dswrite_data(uchar add,uchar dat)
- {
-
- RST=0; // 初始 CE 線置為 0
- SCLK=0; // 初始時鐘線置為 0
- RST=1; // 初始 CE 置為 1 ,傳輸開始
- writebety_ds(add);
- writebety_ds(dat); // 寫入要修改的時間,日期
- SCLK=1; // 時鐘線拉高
- RST=0; //
- }
- //DS1302讀出單個時間
- uchar dsread_data(uchar add)
- {
- uchar temp_date;
- RST=0; // 初始 CE 線置為 0 0 0 0
- SCLK=0; // 初始時鐘線置為 0 0 0 0
- RST=1; // 初始 CE 置為 1 1 1 1 ,傳輸開始
- writebety_ds(add); // 傳輸命令字,要讀取的時間 日歷地址
- temp_date=readbety_ds(); // 讀取要得到的時間/ / / / 日期
- SCLK=1; // 時鐘線拉高
- RST=0; // 讀取結束, CE 置為 0 0 0 0 ,結束數據的傳輸
- return temp_date; //返回得到的時間/ / / /
-
-
- }
復制代碼
|