本帖最后由 whlove1314 于 2016-5-27 16:13 編輯
我的讀程序為什么隔一秒顯示一次,這一秒顯示正常,下一秒就讀到8個一(就是0x80),再下一秒就正常,然后又是8個一,搞了一早上了,現在都懷疑芯片壞了如果說程序有問題,那什么還能讀到數據,若說沒問題,為什么隔一秒無效一次
我現在觀察到的現象是,正常顯示時,數據輸出穩定(每次讀IO口數據一致,比如說,0s-1s期間程序多次讀IO,每次數據都是0s)不正常時(8個一..)程序每讀一次IO得到的數據都會從8個一跳變到8個0,非常奇怪
后來我在主函數只寫了一個讀取函數,去掉其他干擾項,用8個LED連接到P0口顯示讀到的BCD碼,在讀取程序后加了10ms循環延遲,發現不正常顯示時,IO口讀到數據會在8個1和8個0之間循環跳變,讀一次變一次就是(0000 0001{此為正常顯示,值為1}然后{1111 1111,0000 0000,1111 1111,0000 0000.....}一直這樣循環,循環時間為1s)到了下一秒顯示正常0000 0011(此值為3)但是中間丟失了一秒,那一秒剛才在那里亂蹦
我自己的理解是在:程序每個機器周期都會去讀取ds1302的IO口,IO口的值在1s內應該是不變的,雖然多次讀取,但是每次的值一樣,機器周期非常短暫,人是無法察覺到的,給人的感覺就是數據是連續輸出的(其實實在一遍一遍掃描的),每次寫入的地址都是一樣的,讀到的值只跟ds1302有關,出現這個問題我實在找不到跟程序有關的地方,
所以,現在懵逼了......
剛才有點新發現,每次在亂蹦時,上一秒的數值不動,剛才延遲太短沒看清,現在加大延遲,就看見了,比如說上秒顯示(0000 0011)這一秒就是
(0000 0011,1111 1111,0000 0011,1111 1111.......)一直這樣蹦,直到下一秒恢復正常,來位大神救命啊.....
|