久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 關于DS1302不能正常寫入80+年的問題研究 [打印本頁]

作者: dagu    時間: 2014-12-23 01:39
標題: 關于DS1302不能正常寫入80+年的問題研究
很早以前就遇到過這個問題,當時沒有記,現(xiàn)有又遇到這個問題,果斷要記下。特發(fā)在51hei論壇,以后遇到的朋友可以作為參考。


下面是有問題的程序:
void Write_Ds1302_Byte(unsigned char temp1)
{
unsigned char i;
for(i=0;i<8;i++) //循環(huán)8次 寫入數(shù)據(jù)
{
SCK=0;
SDA=temp1&0x01; //每次傳輸?shù)妥止?jié)
temp1>>=1; //右移一位
SCK=1;
}
}
Write_Ds1302_Byte(address); //寫入“讀”控制命令
for (i=0;i<8;i++) //循環(huán)8次 讀取數(shù)據(jù)
{
if(SDA)
temp|=0x80; //每次傳輸?shù)妥止?jié)
SCK=0;
temp>>=1; //右移一位
SCK=1;
_nop_();
}

    這個程序寫完地址后,SCL還是高電平就開始讀數(shù)據(jù),而顯然這時DS1302還沒有將數(shù)據(jù)準備好,數(shù)據(jù)是在那個下降沿后才會有觸發(fā)的,那么第一個讀到的數(shù)據(jù)就是無效的數(shù)據(jù),依此類推,最高位的數(shù)據(jù)就會沒有捕捉到了,然而這個程序又有一個致命的錯誤,就是這個程序的正確的思路應該是讀取8次移位7次,那么這里卻是移位了8次,最后直接導致最先被讀到的無效位被移出去了,而真正有用的最高位沒有被讀到,這也就是為何這個程序也能夠在年不超過80年的時候沒有出現(xiàn)問題的原因了。因為80的BCD碼的最高位是1,所以會出現(xiàn)問題,因為這個最高位就沒有被讀到。
這里說明幾點DS1302這個芯片是上升沿寫入數(shù)據(jù),下降沿觸發(fā)數(shù)據(jù)輸出,

   還有一個就是這種對于從機先發(fā)送數(shù)據(jù)低位的接收,如果用這位移位的方式,進入for循環(huán)后一定是先移位再讀數(shù)據(jù)的方法,這樣第一次的移位就是無效的了,也就是能夠做到讀取8次但是只移位7次。因為第一次讀到的最低位的數(shù)據(jù)只需要移動7次就可以移到最低位了。如果是寫數(shù)據(jù)的方式則剛好是相反的,必須要先將低位數(shù)據(jù)寫到數(shù)據(jù)線上,然后再移動,否則的話低位數(shù)據(jù)就會丟失了。


作者: xiaolihaha    時間: 2015-1-6 20:22
求解決辦法啊。。。。。
作者: rebosun    時間: 2015-10-13 14:09
本帖最后由 rebosun 于 2015-10-13 14:11 編輯

/****************************************************************************/
unsigned char Read_Ds1302 ( unsigned char address )
{
  unsigned char i,temp=0x00;
  RST=0;
_nop_();
  SCLK=0;
_nop_();
  RST=1;
_nop_();
  Write_Ds1302_Byte(address); //DS1302這個芯片是上升沿寫入數(shù)據(jù),下降沿觸發(fā)數(shù)據(jù)輸出,
  for (i=0;i<8;i++)   //循環(huán)8次 讀取數(shù)據(jù)
  { SCLK=0;  //DS1302這個芯片是下降沿觸發(fā)數(shù)據(jù)輸出,
                temp>>=1;   //右移一位  
   if(SDA2)temp|=0x80;   //每次傳輸?shù)妥止?jié)
  SCLK=1;
}
  RST=0;
_nop_();  //以下為DS1302復位的穩(wěn)定時間
  RST=0;
SCLK=0;
_nop_();
SCLK=1;
_nop_();
SDA2=0;
_nop_();
SDA2=1;
_nop_();
return (temp);   //返回
}
作者: wis98    時間: 2017-6-26 21:23
我也遇見了這個問題,只是都是小白無解
  
作者: 19970623    時間: 2018-12-14 16:34
然而按樓主的法改了,還是不行。。。。
作者: 阿凡提    時間: 2018-12-14 22:23
個人認為還是晶振的問題
作者: 老毛子    時間: 2018-12-23 12:43
還是好好看看 DS1302 的時序圖吧




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品免费在线观看 | 麻豆av免费观看 | 精品久久久久久亚洲精品 | 亚洲午夜精品一区二区三区 | 国产精品成av人在线视午夜片 | 亚洲一级二级三级 | 粉嫩av在线 | 波多野结衣一区二区 | 日本精品一区二区三区在线观看视频 | 亚洲精彩视频在线观看 | 午夜久久久久久久久久一区二区 | 91动漫在线观看 | 国产毛片久久久久久久久春天 | 日韩中文字幕一区二区三区 | 久久99国产精品久久99果冻传媒 | 最新免费视频 | 日韩亚洲欧美综合 | 在线视频91| 久久久久亚洲av毛片大全 | 午夜成人免费视频 | 91污在线| 98成人网 | 亚洲美女网站 | 米奇7777狠狠狠狠视频 | 黄网站免费在线 | 国产精品国产亚洲精品看不卡15 | 亚洲第一区国产精品 | 特级毛片| 国产一区二区在线免费 | 日韩91| 欧美αv | 久久婷婷av | 黄瓜av | 日本韩国电影免费观看 | a在线视频 | 欧美日韩国产一区二区三区 | 成年人免费在线视频 | 一区二区三区视频免费看 | 欧美日韩免费一区二区三区 | 亚洲国产视频一区二区 | 亚洲精品视频在线观看免费 |