PIC 微控制器是小型晶片,能控制簡單及先進產品的多種電路。本文說明它們的歷史、哈佛架構、埠口與腳位配置、8位元、16位元與32位元家族、記憶體類型、計時器、中斷、電源模式及通訊連結。同時也詳細涵蓋工具、印刷電路板設計、元件選擇及錯誤。

PIC 微控制器基礎版
PIC 微控制器是小型電腦晶片,能控制多種電子電路。它們最初是由General Instrument製造的簡單輔助晶片。後來,Microchip Technology 接手設計,將 PIC 發展成完整的微控制器家族。PIC 指的是 Microchip 用於許多電子產品的 8 位元、16 位元和 32 位元微控制器。
第一批PIC裝置於1970年代以可程式化周邊晶片的形式出現。1990年代初,它們重新推出為獨立微控制器,能自行儲存程式並控制整個系統。現代 PIC 微控制器注重簡易程式設計、實用的內建周邊設備及低成本,因此成為許多嵌入式設計的首選
哈佛架構在PIC微控制器內部

PIC 微控制器採用哈佛架構,意即程式指令與資料分別儲存在不同的記憶體區域,並沿不同內部路徑傳輸。因此,CPU 在讀寫資料時可以擷取下一條指令。這種平行動作讓PIC運作更順暢,並比許多單匯流排設計更容易控制時序。
在許多 PIC 系列中,指令記憶體比資料記憶體寬,例如 14 位元指令字搭配 8 位元資料。這種額外的寬度讓每條指令都能直接儲存像是數字和地址等有用資訊。因此,程式可以更短、更快,且仍能維持內部簡單的硬體。
PIC 微控制器埠口與腳位排列

PIC 微控制器的腳位排列於封裝周圍,以群組相關功能,方便連接外部硬體。電源腳位提供工作電壓,而振盪器腳位則負責時鐘輸入以控制時鐘。多個埠口(RA、RB、RC、RD 和 RE)提供數位輸入輸出,並支援中斷、類比輸入、擷取/比較功能及通訊介面等替代角色。許多腳位是多工的,使得像 UART、SPI 和 I²C 這類功能根據配置共享相同的實體線路。專用類比通道支援 ADC 操作,特定腳位則管理重置、參考訊號及特殊控制功能。每個腳位的靈活性使裝置能適應從簡單控制任務到先進嵌入式設計的廣泛應用。
PIC 微控制器系列,從 8 位元到 32 位元

PIC 微控制器分為多個系列,因此更容易將晶片與所需的速度、記憶體及功能匹配。這些家族的主要差異在於它們一次處理多少位元,以及內建多少硬體以應付不同控制任務。
• 8位元家族(PIC10、PIC12、PIC16、PIC18)
這些 PIC 微控制器可處理 8 位元資料。它們能裝在非常小的包裝中,常被選用於簡單的控制任務和低成本專案。
• 16 位元家族(PIC24 與 dsPIC33)
這些裝置處理 16 位元資料,擁有更多記憶體,並使用更寬的暫存器。它們能處理更複雜的運算,並包含數位訊號控制功能,以加快數學運算與時序。
• 32位元家族(PIC32)
這些PIC微控制器採用32位元MIPS核心,提升效能。它們支援更先進的周邊設備與通訊功能,以應付要求高的嵌入式工作。
PIC微控制器內部的記憶體

程式記憶體(快閃記憶體)
程式記憶體是儲存 PIC 主要程式碼的地方。較舊的PIC裝置使用EPROM或一次性可程式記憶體,但大多數較新的PIC微控制器使用快閃記憶體。Flash 可以多次擦除和重寫,因此程式可以在不更換晶片的情況下更新。
資料記憶體(RAM)
資料記憶體即為 RAM,且僅在 PIC 供電時儲存資訊。它在程式執行時儲存變數、暫存值及堆疊。許多 8 位元 PIC 微控制器將 RAM 劃分為銀行或頁面,而 16 位元和 32 位元 PIC 裝置通常提供更大且更連續的 RAM 區域。
非揮發性資料記憶體(EEPROM 或資料快閃記憶體)
這種記憶體即使斷電也能保留資料。PIC 微控制器使用 EEPROM 或資料快閃記憶體來儲存校正值、配置資訊及其他設定,這些設定在重置和電源循環後必須保持不變。
PIC微控制器中的計時器、中斷與電源控制

PIC 微控制器使用計時器追蹤事件,當計時器溢出時,會設定中斷旗標以請求 CPU 注意。CPU 會暫停目前的工作,執行中斷服務例程,然後恢復正常執行。電源控制功能允許裝置進入低功耗睡眠模式,同時計時器或看門狗計時器繼續在背景運作。喚醒事件,如看門狗重置或中斷,會將 CPU 恢復為主動模式。定時器、中斷與電源模式之間的互動,有助於降低能源消耗,同時維持準確的時序與可靠的系統反應。
PIC微控制器中的通訊介面

PIC 微控制器透過多種通訊介面連接各種外部裝置。類比感測器,如溫度或光線輸入,訊號會通過 ADC,而數位感測器則透過 I²C 匯流排分享資料。像馬達、LED 和繼電器等致動器會透過 GPIO 或 PWM 輸出接收控制訊號。與電腦的通訊透過 USB 或 UART 進行,允許資料交換或除錯。其他微控制器與周邊設備則透過 SPI、UART 或 I²C 介面,使得在大型嵌入式系統中協調運作。這些連接支援靈活的系統設計,使微控制器能有效與感測器、控制元件及外部處理器互動。
PIC微控制器開發工具
MPLAB x IDE
MPLAB X 是一個免費的程式,用於建立和測試 PIC 微控制器的程式碼。它能在 Windows、macOS 和 Linux 上運行。在一個視窗裡,你可以做專案、寫程式、建置程式,並除錯它在 PIC 上的執行方式。
MPLAB XC 編譯器
MPLAB XC 編譯器將 C 或 C++ 程式碼轉為 PIC 微控制器的機器碼。它們設計得能很好地匹配 PIC 裝置,因此程式碼能正確且有效率地執行。有免費版和付費版,並附有額外功能。
除錯與程式設計硬體
像 PICkit、MPLAB ICD 和 MPLAB REAL ICE 等工具被用來將程式載入 PIC 微控制器並在電路板上除錯。它們讓你可以編程晶片、暫停程式碼、逐行檢視,並觀察 PIC 運行時數值的變化。
PIC微控制器的應用
配備PIC微控制器的消費性電子產品
PIC微控制器常內建於日常電子產品中。它們能透過簡單的邏輯、時間控制及開關控制,控制小型家電、遙控器、LED 照明、電池充電器和玩具。
汽車與工業控制與 PIC
在汽車和工業機械中,PIC微控制器協助管理馬達、電源供應器、感測器及暖通空調系統。他們讀取訊號、做決策並調整輸出,確保系統安全且可靠地運作。
物聯網與邊緣裝置中的 PIC
當需要低功耗時,PIC 微控制器被廣泛應用於許多物聯網及邊緣節點中。它們運行電池供電的感測器、簡單的閘道器,以及收集基本資料並傳送到其他系統的環境監測器。
使用 PIC 的醫療與測量工具
部分醫療及實驗室儀器也依賴PIC微控制器。它們能透過讀取感測器資料和管理簡單的控制程序來控制手持診斷工具、幫浦及小型測量裝置。
選擇PIC微控制器
• 選擇位元寬度與速度 - 使用 8 位元 PIC10/12/16/18 進行簡單且低成本的控制。選擇 16 位元 PIC24/dsPIC33,以增加記憶體和運算能力。升級到 32 位元 PIC32,以處理更大容量的程式碼和更重的處理。
• 檢查記憶體與周邊設備 - 估算所需的程式大小與記憶體,然後加入一些邊際。列出所需的 ADC 通道、UART、SPI/I²C 埠、計時器、PWM 輸出,以及像 CAN、USB 或加密這類額外設備,並與具備這些功能的 PIC 配對。
• 確認電源與封裝 - 檢視電池供電設計的主動與睡眠電流。選擇適合你 PCB 的封裝尺寸和腳數。確保PIC符合適當的溫度和可靠性等級。
PIC微控制器常見錯誤
| 提示 | 該怎麼辦?為什麼? |
|---|---|
| 初始化設定 | 設定所有 I/O 腳位,關閉未使用的周邊設備,並將時鐘和看門狗設在 main() 開頭,以避免隨機行為。 |
| 保持中斷簡單 | 讓中斷例程縮短,避免在其中繁重工作,並保護共享資料,避免值以不安全的方式被更改。 |
| 重用經過驗證的PIC範例 | 利用 Microchip 函式庫、程式碼範例及 UART、SPI、ADC 等區塊的應用程式說明,遵循正確的暫存器設定。 |
| 允許系統內更新 | 規劃硬體與程式碼,讓 PIC 能透過開機載入程式或更新連結重新編程,而非更換晶片。 |
| 早期檢查功率與時機 | 測量電路板上的實際電流和時序,尤其是低功耗或緊時設計,而非僅依賴估計值。 |
結論
PIC 微控制器結合了簡單的硬體區塊、獨立的程式與資料路徑、靈活的埠口、多種記憶體類型,以及許多計時器和介面。只要有合適的工具和PCB佈局,並正確設定位元、電源模式和中斷,PIC設計就能保持清晰、可靠,且隨著時間更易維護。
常見問題 [常見問題]
PIC 微控制器中的配置位元是什麼?
配置位元是非揮發性設定,定義 PIC 的啟動與執行方式,例如時鐘來源、看門狗計時器、電壓重設及程式碼保護。
如何在不使用硬體程式設計師的情況下更新 PIC 韌體?
使用透過 UART、USB、CAN 或其他介面接收新韌體並將韌體寫入 PIC 快閃記憶體的開機載入程式。
如果我的 PIC 在程式設計後無法執行,我應該檢查什麼?
檢查電源和接地、重設/MCLR 電平和時脈來源,然後確認設定位元並確認故障碼是否到達。
什麼時候應該用 dsPIC 代替 PIC16 或 PIC18?
當你需要快速的數學運算和訊號處理任務時,例如馬達控制、數位功率轉換或濾波,可以使用 DSPIC。
我該如何保護 PIC 韌體不被複製?
啟用程式碼保護與記憶體保護位元,使外部工具無法讀取或複製程式及儲存資料。
如何在PIC設計中降低功耗?
降低時脈、停用未使用的周邊設備、使用睡眠或待機模式,並盡量減少不必要的腳位活動與負載電流。