![]() |
發布時間: 2014-12-23 01:39
正文摘要:很早以前就遇到過這個問題,當時沒有記,現有又遇到這個問題,果斷要記下。特發在51hei論壇,以后遇到的朋友可以作為參考。 下面是有問題的程序: void Write_Ds1302_Byte(unsigned char temp1) { unsig ... |
還是好好看看 DS1302 的時序圖吧 |
個人認為還是晶振的問題 |
然而按樓主的法改了,還是不行。。。。 |
我也遇見了這個問題,只是都是小白無解 |
本帖最后由 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這個芯片是上升沿寫入數據,下降沿觸發數據輸出, for (i=0;i<8;i++) //循環8次 讀取數據 { SCLK=0; //DS1302這個芯片是下降沿觸發數據輸出, temp>>=1; //右移一位 if(SDA2)temp|=0x80; //每次傳輸低字節 SCLK=1; } RST=0; _nop_(); //以下為DS1302復位的穩定時間 RST=0; SCLK=0; _nop_(); SCLK=1; _nop_(); SDA2=0; _nop_(); SDA2=1; _nop_(); return (temp); //返回 } |
求解決辦法啊。。。。。 |