同樣的程序,STC89系列可以正常讀取DS1302,換做1T的12系列就不能正常讀取,官方資料的解釋如下:
由于準雙向口的上拉能力較弱,1T單片機速度又太快,導致軟件執行端口拉高后,在兩個CPU時鐘延時后端口才十幾被拉高,如下圖:
- 將有關端口全部接上拉電阻,增強其上拉能力。
- 將有關SPI通信的三個端口設置為強推挽輸出,增強端口上拉能力,但要注意與DS1302的數據口連接的端口不要設置為強推挽輸出,以免損壞1302芯片,此端口可以用上拉電阻解決。
- 將所有端口拉高的指令后增加一定延時,確保該端口上拉正確后再進行其他操作。