![]() |
發布時間: 2019-2-11 11:24
正文摘要:把兩個程序合在一起溫度就只顯示00.00了,按鍵是設置時間的,這是主函數,大家看看 void main() { unsigned char i; Int0Confi ... |
HC6800-ES-V2.0 發表于 2019-2-11 12:45 老哥,太感謝了,我也是被這個問題困惑了好久,按你的方法試了一下問題就解決了,感謝感謝。 |
溫度采集的部分,有問題 ~~~~~~~~~~ |
前面我回復過,因為有其它論壇的鏈接,沒有通過!今天直接給你結果: 同學們,我只需要修改一個地方就可以了!!!! 首先,要感謝你,試驗出了正確的結果! 在你的結果基礎之上,我反復閱讀程序,注意到,你的紅色部分程序,其實就是1302的使能為高電平。 所以,最終的結果是: 在1302讀數據之后,將原程序中的使能為低電平去掉,就可以了。 即: 原程序: unsigned char Ds1302Read(unsigned char addr)//從DS1302讀單字節數據 { unsigned char n,dat,dat1;//n為8位計數,dat為最終返回的數據 //dat1為接收的一位數據 CE = 0; _nop_(); SCLK = 0;//先將SCLK置低電平。 _nop_(); CE = 1;//然后將CE置高電平。 _nop_(); for(n=0; n<8; n++)//開始傳送八位地址命令 { DSIO = addr & 0x01;//數據從低位開始傳送 addr >>= 1; SCLK = 1;//數據在上升沿時,DS1302讀取數據 _nop_(); SCLK = 0;//DS1302下降沿時,放置數據 _nop_(); } _nop_(); for(n=0; n<8; n++)//讀取8位數據 { dat1 = DSIO;//從最低位開始接收 dat = (dat>>1) | (dat1<<7);//此處可以用595的方法判斷是0或是1 SCLK = 1; _nop_(); SCLK = 0;//DS1302下降沿時,放置數據 _nop_(); } // CE = 0; _nop_();//以下為DS1302復位的穩定時間,必須的。 SCLK = 1; _nop_(); DSIO = 0; _nop_(); DSIO = 1; _nop_(); return dat; } 紅色那一條語句,原來有,現在我將它去掉,就好了。其它的什么都不用改。 究其原因,可能是兩器件使能沖突。 |