單片機

單晶片（Single-chip microcomputer），是把中央處理器、存儲器、定時/計數器（timer/counter）、各種輸入輸出接口等都集成在一塊積體電路晶片上的微型計算機。與應用在個人電腦中的通用微處理器相比，它更強調自供應（不用外接硬體）和節約成本，集成程度更高，但因為規格已經包含，所能實現的功能也較專一。它的最大優點是體積小，可放在儀表內部，但存儲量小，輸入輸出接口簡單。由於其發展非常迅速，舊的定義已過時，所以在很多應用場合被稱為範圍更廣的微控制器（microcontroller unit，MCU）。

單晶片具備了便宜、電路簡單、體積小與耗電低等優點，所以目前在業界使用的極為廣泛。比如要控制一個馬達就不需要使用一台個人電腦（PC）來控制，只要一顆單晶片加上驅動電路就可以加以控制馬達運行。

## 概述

絕大多數現在的單片機都是基於馮·諾伊曼結構的，這種結構清楚地定義了嵌入式系統所必需的四個基本部分：一個中央處理器核心，程序存儲器（只讀存儲器或者快閃記憶體）、數據存儲器（隨機存儲器）、一個或者更多的定時/計數器，還有用來與外圍設備以及擴展資源進行通信的輸入/輸出埠——所有這些都被集成在單個積體電路晶片上。

單片機與通用型中央處理單元晶片不同在於前者一般很容易配合最小型的外部支持晶片製成工作電腦，這樣就可以很容易的把單片機系統植入裝置內部來控制裝置了。近年來為了在指令和數據上使用不同的字寬，並提高處理器線速度，哈佛結構在微控制器和數位訊號處理器也逐漸得到了廣泛的應用。

傳統的微處理器是不允許這麼做的。它要完成單片機的工作，就必須連接一些其他晶片。比如說，因為晶片上沒有數據存儲器，就必須要添加一些 RAM 的存儲晶片，雖然所添加存儲器的容量很靈活，但是至少還是要添加。另外還需要添加很多連線來傳遞晶片之間的數據。與以上的情況相比，單片機的工作則相對獨立，一個典型的微控制器只需要一個時鐘發生器和很少的 RAM (SRAM) 和 ROM (EPROM, EEPROM) 就可以在工作了。同時，微控制器具有豐富的輸入輸出設備，例如模擬數字轉換器、定時器、串口，以及其他串行通訊接口，比如 I2C 總線，序列周邊介面，控制器區域網路等。通常，這些集成在內部的設備可以通過特殊的指令來操作。

單片機時鐘頻率通常較同時代的電腦晶片低，但它價格低廉，能夠提供充足的程序存儲器、豐富的片上接口。某些架構的單片機生產廠商眾多，例如 8051 系列、Z80 系列。一些現代的微控制器支持一些內建的高級程式語言，比如 BASIC 語言、C、C++等。

## 單片機的位數

根據匯流排或資料暫存器的寬度，單片機又分為 4 位、8 位、16 位和 32 位元單片機。4 位單片機多用於冰箱、洗衣機、微波爐、燈具等簡單的家電控制中；8 位、16 位單片機主要用於一般的控制領域，例如遙控器手把、空調、發動機等，一般不使用作業系統；32 位用於網路操作、多媒體處理等複雜處理的場合，一般要使用嵌入式作業系統，例如電視、車機、監視器等產品。

## 常見的單片機

生產這種產品的供應商眾多而且技術各有所長，微芯（Microchip）的 PIC 系列出貨量居於業界領導者地位；Atmel 的 51 系列及 AVR 系列種類眾多，受支持面廣，滿足各種場景的市場需求；德州儀器的 MSP430 系列以低功耗聞名，常用於醫療電子產品及儀器儀表中；瑞薩單片機在日本汽車業中使用廣泛。

- 英特爾
- 8-bit 8051系列
- 8XC42
- MCS48
- MCS51 : Intel 8051系列歷史悠久，相容產品眾多，使用廣泛
- 8xC251
- 16-bit
- MCS96系列
- MXS296
- 32-bit
- i960
- ARM （Acorn RISC Machine）系列單片機
- ARM Cortex-A
- ARM Cortex-M0 單片機 (32-bits)
- ARM Cortex-M4單片機 (32-bits)
- AVR系列（愛特梅爾公司）
- Atmel AT91 series (ARM 處理器等)
- AT90 series – AVR (Atmel 的高性能RISC 8位單片機，老產品)
- ATmega series – AVR (Atmel 的高性能RISC 8 位單片機，新產品)
- ATXmega series – AVR (Atmel 的高性能RISC 32 位單片機，新產品)
- Atmel AT89 series (Intel 8051/MCS51 架構8位單片機)
- MARC4
- Cypress MicroSystems（賽普拉斯微系統公司）
- CY8C2xxxx (PSoC)
- 飛思卡爾半導體(原摩托羅拉)
- 8-bit
- 68HC05 (CPU05)
- 68HC08 (CPU08)
- 68HC11 (CPU11)
- 16-bit
- 68HC12 (CPU12)
- 68HC16 (CPU16)
- Freescale DSP56800 (DSPcontroller)
- 32-bit
- Freescale 683XX (CPU32)
- MPC500
- MPC 860 (PowerQUICC)
- MPC 8240/8250 (PowerQUICC II)
- MPC 8540/8555/8560 (PowerQUICC III)
- Holtek（盛群半導體）
- HT48FXX Flash I/O type
- HT48RXX I/O type
- HT46RXX A/D type
- HT49RXX LCD type
- 微晶片科技（微芯公司）的PIC微控制器系列
- 8-bit : PIC10 PIC12 PIC16 PIC18
- 16-bit : PIC24F PIC24H dsPIC30 dsPIC33
- 32bit : PIC32 （採用MIPS M4K 核心架構）
- 美國國家半導體
- COP8
- CR16
- NEC
- 78K
- 恩智浦半導體(原飛利浦）
- LPC2000
- LPC900
- LPC700
- Parallax, Inc.
- BASIC Stamp
- 瑞薩科技系列單片機(由原日立,NEC，三菱合併）
- Renesas 16-bits
- Renesas M16C Series
- Renesas M32C Series
- Renesas R8C Series
- Renesas M16C/Tiny Series
- Renesas R8C/Tiny Series
- Renesas H8/Tiny Series
- 意法半導體
- STM32 series (ARM Cortex-M3 系列，32位元)
- STM8 series (自主RISC指令集，8位元)
- SyncMOS 新茂國際科技全系列單片機
- SM59RXXA2 8-bits 1T(RISC)
- SM59DXXG2 8-bits 6T(ISP)
- SM59XX 8-bits 12T(ISP)
- SM89XX 8-bits 12T(Traditional 8051)
- SM79XX 8-bits 12T(Customization)
- PADAUK 應廣科技全系列單片機(多核心單片機)
- P201CS/CD 8-bits
- P211CS/CD 8-bits
- p232CS/CD 8-bits
- P234CS/CD 8-bits
- ZiLOG
- Z8
- Z86E02
- STC 宏晶系列單片機
- STC89C series 6T/12T 增強性單片機 (Intel 8051架構，有外部總線)
- STC11F/11L series 2T 增強性單片機 (Intel 8051增強架構，無外部總線程序支持)
- STC12C/12LE series 2T 增強性單片機 (Intel 8051增強架構，無外部總線程序支持)
- STC15C/15LE series 2T 增強性單片機 (Intel 8051增強架構，無外部總線程序支持，正在開發中)
- Kernel-IC 華芯單片機 LS系列
- LSx051 series 12T 雙核單片機(Intel 8051架構，無外部總線)
- LSx151 series 12T 三核單片機(Intel 8051架構，無外部總線)
- LS052A series 6T 三核單片機(Intel 8051架構，無外部總線)
- 新唐科技 Nuvoton NuMicro Family
- 8051 單片機 (8-bits)

### 其他系列的單片機

- MSP430系列單片機
- LM3S系列單片機
- 北京君正 JZ系列單片機
- 8098、80196系列單片機
- AT8P5X系列單片機
- CZG8000系列單片機

## 單片機的開發

單片機的軟體開發中，以往多使用彙編語言，如今越來越多的使用 C 語言，又或者使用 BASIC語言 等更適合初學者的語言，部分集成開發環境支持C++。單片機的軟體測試需要使用單片機開發器或模擬器。

隨著技術的發展，2000年後已經有很多單片機自帶了ISP（在線編程設計）或支持IAP，徹底地改變了傳統的開發模式，使得開發單片機系統時不會損壞晶片的引腳，加速了產品的上市並降低了研發成本，縮短了從設計、製造到現場調試的時間，簡化了生產流程，大大提高了工作效率。這類單片機包括AT89S系列單片機、AVR系列單片機等。

### 硬體

開發板可以進一步簡化程序的開發和燒制過程。開發板可能包含實際晶片或是仿真器。通過配套的下載線連接電腦與開發板，在電腦上編寫程序下載到開發板。批量生產會用到編程器，或是掩膜印刷方式(Mask ROM)，後者是晶片本身終身搭載固定程序（不可重新編程），意味著僅適用於特定成品。

### 軟體開發環境

一些知名的微控制器開發環境有：

- 微芯公司的 MPLAB IDE 可用於該公司全系列微控制器的開發與除錯，除支持該公司的 ASM組譯器 C語言編譯器外，也支援許多第三方的編譯器。
- ARM公司的 μVision 整合開發環境（原為 Keil 公司產品，2005年該公司已由 ARM 購併），包含組譯器與 C編譯器，可用於51單片機及ARM開發。
- ARM公司的Mbed，可以使用線上IDE來開發。

## 外部連結

- SDCC - Small Device C Compiler - 一個支持多種微控制器的編譯器自由軟體
- 一個免費提供單片機教程的網站