1. 程式人生 > 實用技巧 >427_PIC18F4580 LED閃爍例程品讀

427_PIC18F4580 LED閃爍例程品讀

全部學習彙總: https://github.com/GreyZhang/PIC18F

既然程式碼都讀了,還是留點學習筆記吧!

我在某寶上弄了一個開發板,附帶了不少例程程式碼。令我驚奇的是第一個LED閃爍就沒除錯成功,後來,我自己改好了。結果,我發現了第二份LED閃燈程式。做個簡單的程式碼分析:

幾個問題點的關注:

  1. 函式重複呼叫存在,36行;
  2. 串列埠初始化沒用,34行;
  3. 看門狗相關程式碼註釋錯誤,其實沒開看門狗。40行;
  4. 既然沒開看門狗,喂狗沒用。45行(這裡我將其遮蔽了);
  5. PORTE的處理詭異,感覺應該是蒙中了結果,沒有仔細檢視手冊。實在是忍不住去查了一下手冊,其實這裡實現了LED的閃爍主要是因為把幾個管腳在輸入與輸出模式間進行了切換。而且,0xFF沒有意義,0x0F即可。經過我的實際測試,果真如此。

這裡的配置依然是錯誤的,一點都不意外。從這些痕跡上似乎感覺出來了曾經這個工程師的疑惑,他甚至保留了一份程式碼作為註釋備份以協助恢復。有意思啊!

不過,這裡跟手冊閱讀是否細緻有很大關係。我覺得他最終除錯成功可能有一定偶然性,因為他用的這種方式文件中沒有描述但是卻出現在了文件的一份程式碼裡。

從這份程式碼看的話,埠的操作或許還真就是有兩種方式。仔細搜尋了整個文件中的幾個關鍵字,最終還真找到了一個出處。

或許,這個就是這個MCU程式設計的精髓參考表了吧!