作者 : 蔡宗成 (2001-11-19); 推薦 : 徐業良 (2001-11-19) PIC16F877 單晶片原理簡介 1. PIC16F877 原理簡介 1.1 PIC16F877 特性 PIC16F877 是由 Microchip 公司 1 所生產開發的新產品, 屬於 PICmicro 系列單晶片微處理器, 具有 Flash program 程式記憶體功能, 可以重複燒錄程式, 適合教學 開發新產品等用途 ; 而其內建 ICD(In Circuit Debug) 功能, 可以讓使用者直接在單晶片電路或產品上, 進行如 暫停微處理器執行 觀看暫存器內容 等, 讓使用者能快速地進行程式除錯與開發 如圖 1 為 PIC16F877 的 40 根接腳圖, PDIP 是指一般最常見的 DIP(Dual In Line Package) 包裝, 而 PIC 單晶片也有 PLCC(Plastic Leaded Chip Carrier) 與 QFP(Quad Flat Package) 兩種形式的包裝, 依照不同的需求, 尋找不同的包裝形式 如圖所示, 每根接腳都有其特定功能, 例如 Pin11 與 Pin32(VDD) 為正電源接腳,Pin12 與 Pin31(VSS) 為地線接腳 ; 而有些接腳有兩種甚至三種以上功能, 例如 Pin2(RA0/AN0) 代表 PORTA 的第一支接腳, 在系統重置 (Reset) 後, 可自動成為類比輸入接腳, 接收類比訊號, 也可經由程式規劃為數位輸出輸入接腳 1
圖 1. PIC16F877 接腳說明 ( 圖片來源 :Microchip PIC16F87X Data Sheet) PIC16F877 屬於閃控式 (Flash) 單晶片, 可以重複燒錄, 其 ROM 的容量總共是 8K words, 以 2K 為一個 page, 區分為 4 個 pages; 內部 RAM 總共有 512 個位元組 (00f~1FFh), 以 128 個位元組為一個 Bank, 共區分為 4 個 Bank, 如圖 2 所示, 每個 Bank 的前半段都有其特殊用途, 分別連接到其特殊功能模組, 例如 I/O CCP Timer USART MSSP 等 2
圖 2. PIC16F877 的 RAM 配置圖 ( 圖片來源 :Microchip PIC16F87X Data Sheet) 1.2 特殊內嵌功能 PIC16F877 屬於內嵌功能較多的單晶片, 除了 CPU POM RAM I/O 等基本構 造外, 還包括以下各種功能, 簡介如下 : A/D converter: 類比數位轉換器, 最多可以讀取 8 組類比輸入訊號 CCP:Capture Compare PWM, 用於控制直流馬達 3
Timer, 內部計時器, 有 Timer0 Timer1 Timer2 等 USART:Universal Synchronous Asynchronous Receiver Transmitter, 同步 非同步串列傳輸, 如 RS232 RS485 等 MSSP;Master Synchronous Serial Port, 兩線式 (I2C) 與三線式 (SPI) 標準同步串列傳輸協定, 常用於 EEPROM 記憶體資料的燒錄與讀取, 或是與其他積體電路溝通與聯繫, 形成多晶片網路 2. PIC16F877 基本電路 2.1 PIC 振盪時脈電路 單晶片振盪電路與整體系統工作速度有直接的關係, 例如同步 非同步串列傳輸 計時器等, 都與 振盪頻率 " 有關, 不同系列單晶片有不同振盪頻率, 根據產品資料手冊,PIC16F877 振盪頻率最高可到 20MHz; 在圖 1 中, 振盪電路接於 Pin13(OSC1/CLKIN) 與 Pin14(OSC2/CLKOUT), 而振盪電路有以下四種形式 : LP: 使用低功率振盪晶體 (Low Power Crystal) XT: 使用振盪器 諧振器 (Crystal/Resonator) HS: 使用高速振盪器 (High Speed Crystal/Resonator) RC: 使用電阻 電容 (Resister/Capacitor) 一般常用振盪晶體或是諧振器作為單晶片振盪源, 外接電路及 PIC 內部電路說明 如圖 3 所示 圖中電容 C1 與 C2 規格大小是根據 Crystal 或 Resonator 而有所不同, 表 1 列出電容建議值, 使用其他振盪源的電路說明請參考產品資料手冊 4
圖 3. 振盪源電路圖 ( 圖片來源 :Microchip PIC16F87X Data Sheet) 表 1. 建議電容值 ( 圖片來源 :Microchip PIC16F87X Data Sheet) 5
2.2 外加電源與重置電路 PIC16F877 的工作電壓為 5V, 連接 Pin11 與 Pin32,Pin12 與 Pin31 為地線接腳 ; 重置電路連接 Pin1, 按下 Reset 後, 內部指令重頭開始執行, 系統重新運作 圖 4. 電源與重置電路 2.3 輸入輸出埠 PIC16F877 除了上述基本電路所佔用的 7 支接腳外, 其餘的 33 支接腳都可當成輸出 輸入接腳, 輸入輸出埠是單晶片基本界面, 可以與周邊電路進行電路控制和信號傳輸與檢測 PIC 是 8 位元的單晶片, 以接腳特性分組, 每組盡量湊滿 8 支接腳, 並將 I/O 命名為 PORTA(RA0~RA5) PORTB(RB0~RB7) PORTC(RC0~RC7) PORTD(RD0~RD7) 和 PORTE(RE0~RE2) 等, 各分組埠特性說明如下 : 6
PORTA PIC16F877 的 PORTA 總共有 6 個位元 (RA0~RA5),PORTA 的接腳可作為數 位輸出輸入埠, 而系統重置後,PORTA 自動成為類比輸入狀態, 可讀取類比輸 入訊號 PORTB PORTB 總共有 8 個位元 (RB0~RB7), 可以撰寫程式規劃輸入輸出方向 狀 態, 其中, 要進行燒錄時, 使用到三支接腳, 分別是 Pin36(RB3/PGM) Pin39(RB6/PGC) 與 Pin40(RB7/PGD) PORTC PORTC 總共有 8 個位元 (RC0~RC7), 除了可作為數位 I/O 外, 還和一些特 殊功能的周邊電路共用接腳, 例如 CCP( 直流馬達控制 ) I2C SPI( 同步串列 通訊電路 ) UART( 非同步串列傳輸電路 ) 等等 PORTD PORTD 總共有 8 個位元 (RD0~RD7), 可作一般數位 I/O, 並與 PSP(Parallel Slave Port) 並列傳輸埠共用 當整體系統需要多單晶片時, 彼此可以經由並列傳 輸埠來快速傳輸資料 PORTE PORTE 總共有 3 個位元 (RE0~RE2),PORTE 的 Pin8 9 10 有三種功能, 除了基本 I/O 功能, 也有類比輸入功能, 而上述 PORTD 的並列傳輸埠設定所需 的控制接腳, 如 /RD /WR /CS 等, 也是屬於 PORTE 接腳 3. PIC16F877 指令簡介 PIC16F877 常用的語言有組合語言與 C 語言兩種, 組合語言是將每一個機器碼使 用一個文字代號代表, 比較接近處理器真正動作模式 ; 而 C 語言是比較符合人們的 7
使用習慣, 事先將組合語言組合成 C 語言形式, 使用較為方便, 但是 C 語言所組譯 的機器碼程式通常比較大, 且組譯軟體通常需要額外購買 以下簡介組合語言相關指 令與一套 C 語言組譯軟體 3.1 PIC16F877 指令摘要 PIC 是採用 RISC(Reduced Instruction Set Computing, 精簡指令集 ), 與 8051 系列採用的 CISC(Complicated Instruction Set Computing, 複雜指令集 ) 不同,PIC16F877 所有指令指有 35 個,8051 高達 111 個指令 ; 圖 5 為 PIC16F87X 指令列表, 由於組合語言不是本實驗室研究重點, 詳細指令說明請參閱產品資料手冊 圖 5. 組合語言說明 ( 圖片來源 :Microchip PIC16F87X Data Sheet) 8
3.2 C 語言組譯軟體 -CCS-C Compiler CCS(Custom Computer Services) 公司 2 開發一套 PIC 專用的 C Compiler 軟體, 包含三個模組, 分別為 PCB PCM PCH 與 PCW, 其中,PCW 是屬於 PIC16F877 用的組譯軟體, 有 Windows 專業版 Windows 學校學生 F877 專用版, 本實驗室有兩套學生專用版版權 ; 如圖 6 為 CCS 組譯軟體外觀圖, 可以直接在裡面撰寫 C 語言程式, 也可以使用記事本程式撰寫後儲存成副檔名為.C 的檔案, 再由 CCS 直接開啟 程式撰寫完成後, 按下 compiler 按鈕, 經過組譯產生.HEX 檔案, 便可執行燒錄動作 圖 6. CCS 組譯軟體介面 4. 元智皮可單板控制器 元智大學機械工程研究所吳昌暉教授針對單晶片廣泛的應用潛力, 以 PIC16F877 為核心設計了一片 元智皮可單板控制器, 在 10x5cm 2 的面積上加裝了四組全橋功 率驅動晶片, 可單向驅動 8 個直流 1A 以下的負載 或正反轉變速驅動 4 個小馬達或 9
兩個步進馬達, 並有許多空間供使用者自行加裝各式周邊電路 吳昌暉教授更開發了一套 ICP(In-Chip-Programmer) 軟體 - 內建於晶片且附加雙向 RS232 終端機功能的程式上下載及記憶體編輯軟體, 換句話說, 使用者不須專屬單晶片燒錄器, 即可透過 RS232 進行程式燒錄動作 參考資料 1 http://www.microchip.com PIC16F87X Data Sheet 2 http://www.ccsinfo.com/download.html 3 何信龍, 李雪銀編著,PIC16F87X 快速上手, 全華科技,2000 4 盧春林編著,PIC16F87X 微處理器技術精解, 標高,2001 5 趙春棠編著,PIC 單晶片學習祕笈, 全威圖書,2001 10