(Microsoft PowerPoint - 102_ASP TW_CH [\254\333\256e\274\322\246\241])

Similar documents
ICD ICD ICD ICD ICD

PIC16F F MPLAB 08 16F LED 15 LED

第5章:汇编语言程序设计

文件名

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel

Microsoft PowerPoint - PIC18F_39th設計競賽 [相容模式]

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

2 PIC PIC 1 / CPU PIC MCU PIC RC

USB解决方案.ppt

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

PROTEUS VSM

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

目 录

Section1_16bit Arc.ppt

FM1935X智能非接触读写器芯片

AN579

Tel:

1 TPIS TPIS 2 2

33023A.book(31001A_cn.fm)

2 14 PORTC.1 PORTB.3 PORTA.2/T0 GND PORTB.2 PORTA.0 PORTC.3 PORB.0/OSCO PORTB.1/OSCI PORTC.0 PORTC.2 SH69P21 /SOP PORTA

AN INTRODUCTION TO PHYSICAL COMPUTING USING ARDUINO, GRASSHOPPER, AND FIREFLY (CHINESE EDITION ) INTERACTIVE PROTOTYPING

行业

目录

untitled

行业

DPJJX1.DOC

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

1 CPU


ARM JTAG实时仿真器安装使用指南

701PIC Introduction to PICMicro MCUs

C语言的应用.PDF

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

51 C 51 isp 10 C PCB C C C C KEIL

12232A LED LED LED EL EL CCFL EL CCF

P4V88+_BIOS_CN.p65

P4VM800_BIOS_CN.p65

逢 甲 大 學

EK-STM32F

RESET OSCO OSCI OSC CPU WDTEN RC RESET PRESCALER PORTA (4-BITS) WATCHDOG TIMER Power on PORTB (4-BITS) PORTA [0:3] PORTB [0:3] LPD PORTC (4-BITS) LPDO

投影片 1

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

The golden pins of the PCI card can be oxidized after months or years

行业


Microsoft PowerPoint - CA_02 Chapter5 Part-I_Single _V2.ppt

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi

untitled

Bus Hound 5

System Design and Setup of a Robot to Pass over Steps Abstract In the research, one special type of robots that can pass over steps is designed and se

1

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

四位微控制器ML64168_ _.doc

(Guangzhou) AIT Co, Ltd V 110V [ ]! 2

untitled

ARK-14013/14017/14018

Cube20S small, speedy, safe Eextremely modular Up to 64 modules per bus node Quick reaction time: up to 20 µs Cube20S A new Member of the Cube Family

68369 (ppp quickstart guide)

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

邏輯分析儀的概念與原理-展示版

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

Microsoft Word - MSP430 Launchpad 指导书.docx

untitled

Ác Åé å Serial ATA ( Sil3132) S A T A (1) SATA (2) BIOS SATA (3)* RAID BIOS RAID (4) SATA (5) SATA (a) S A T A ( S A T A R A I D ) (b) (c) Windows XP

行业

行业

audiogram3 Owners Manual

: WICE-PIC 1.1 WICE-PIC 1.2 WICE-PIC : WICE-PIC WICE-PIC 2.5 WICE-PIC 2.6 : : : : A. B.E.V.Board 1. Internet Internet WWW: http//

untitled

untitled

Microsoft Word - LD5515_5V1.5A-DB-01 Demo Board Manual

Microsoft PowerPoint - 701_PIC-CHN_Attendee.ppt

untitled

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

PIC16F87X基本指令說明

P3B-F Pentium III/II/Celeron TM

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

技 术 支 持 电 话 传 真 电 子 邮 件 网 址 CONVERGE PRO 880/880T/840T/8i, CON

52C

untitled

PowerPoint 簡報

MODEL 62000H SERIES 5KW / 10KW / 15KW 0 ~ 375A 0 ~ 1000V/2000V( ) : 200/220Vac, 380/400Vac, 440/480Vac 3U/15KW / & 150KW / ( 10 ms ~ 99 hours)

典型自编教材

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft Word - AP1515V02

学习MSP430单片机推荐参考书

2005.book

Microsoft PowerPoint - C15_LECTURE_NOTE_11

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

Transcription:

102 ASP PIC18F 基礎課程 架構 架構 指令集 指令集 組合語言 組合語言 基本週邊 Microchip Technology Taiwan Slide 1

歡迎參加 102 ASP 教育訓練課程 使用軟體工具 MPLAB IDE v8.xx ( 或更新版本 ) MPASM, MPLINK, MPLIB 使用硬體工具 MPLAB ICD2 Microchip APP001 Workshop Board (PIC18F4520 inside) 參考書籍 ( 可以從網站上下載 ) MPASM User s Guide with MPLINK and MPLIB (DS33014J) MPLAB IDE User s Guide PIC18F4520 Data Sheet ( DS39631A ) Microchip Technology Taiwan Slide 2

PIC18F 系列 102 ASP 課程內容 PIC18F MCU 的架構 PIC18F MCU 指令集 PIC18F MCU 主要周邊功能 開發工具介紹與使用 撰寫 PIC18 系列組合語言 MPLAB-IDE 的基本設定及 ICD2 的實際除錯 練習一 : I/O 的操作 練習二 : 使用 Timer1 與中斷 練習三 : 使用 A/D 轉換器 練習四 : 使用 USART 練習五 : Table Read Microchip Technology Taiwan Slide 3

PIC18F452 最早的 PIC18Fxxx 元件, 目前 Silicon Revision C1 32KBytes Flash, 256B EEPROM, 1.5KB RAM Timer : Timer0, 1, 2, 3, Watch-Dog Timer 3 CCP modules I 2 C, SPI, USART, PSP 10-bit ADC with 8 Channel PBOR, PLVD, ICD, Self Programming 40-pin PDIP(44ML, 44PT) with 34 I/O pin 40MHz @ 5V 新建議元件 PIC18F4520 Microchip Technology Taiwan Slide 4

新改良 PIC18Fxxxx ( 四碼 ) 基本架構仍是採用 PIC18F452 核心 Extended Instruction Sets for C18 Compiler Efficiency Support nano-watt Technology 內建 31KHz ~ 8MHz 自由切換的 RC 震盪器 快速 RC 啟動模式 雙速啟動模式 系統時脈監視 / 故障切換功能 Low-Power Watch-Dog Timer Ultra Low-Power Wake-Up 省電模式 : Idle, Sleep Microchip Technology Taiwan Slide 5

PIC18Fxxxx Enhanced PICmicro MCU 的架構及主要特色 Microchip Technology Taiwan Slide 6

PIC18Fxxxx PIC18 系列 MCU 的主要特色 提供較多的指令 (77 個基本指令 ) 更大的程式與資料記憶體的定址能力 Program Memory : Up to 2M Bytes Data Memory : Up to 4K 程式記憶體使用線性排列方式存取 提供 Access Bank 設計觀念 內建 PLL 4 倍頻線路, 用 10Mhz 就得到 10 MIPs 的執行效能 ( 100 ns 的指令執行時間 ) 有 8 * 8 的硬體乘法器 全系列提供 10 Bits 的 A/D 轉換器及 ICD 除錯功能 Microchip Technology Taiwan Slide 7

PIC18F4520 增加的功能 FLASH Program Memory 除了程式記憶體為 FLASH 外, CPU 可自我燒錄程式 10 萬次的寫入壽命 ICD Capability 支援 ICD 的介面 高燒錄效率,PIC18F4520 燒錄時間約 3 秒 ( 32KB 程式 ) 每個 CPU 都可視為一個 ICE Chip EEPROM PIC18F4520 都有內建 256 Bytes 的 EEPROM 100 萬次的寫入壽命 Microchip Technology Taiwan Slide 8

PIC18F4520 nanowatt 技術 什麼是 nano-watt 技術 Sleep Mode 下消耗功率低於 1uW 以下 PIC18F4520 Sleep Mode 下低於 0.1uA 內建的電源管理 內建 31KHz ~ 8MHz 自由切換的 RC 震盪器 快速 RC 啟動模式 雙速啟動模式 系統時脈監視 / 故障切換功能 Low-Power Watch-Dog Timer Ultra Low-Power Timer1 硬體設定或軟體控制的 Watch-Dog Timer 省電模式 : Idle (5.8uA), Sleep (0.1uA) Microchip Technology Taiwan Slide 9

一般 PICmicro 的架構比較 PIC 使用 使用 Harvard Architecture 經由相同的匯流排來存取指令與資料 指令與資料無法有效率的同時被處理 以及 MCU 的操作效率受到此結構影響而變差 使用兩個匯流排來存取程式碼和資料 增加處理資料的效能 Microchip Technology Taiwan Slide 10 使得 MCU 可以具有不同寬度的程式記憶 體與資料記憶體 ( 8 Bit 寬的 Data Memory, 12/14/16 Bit 寬的 Program Memory)

Instruction Pipelining ( 管線式的指令執行 ) 指令的提取與執行是同時進行的 ( 因為內部的 Bus 是分開的 ) 程式分支的有關指令 ( 例如 : GOTO, CALL 或 Write to PC) 則需要兩個指令周期 指令週期 1 2 3 4 MAIN 程式範例 程式範例 T0 T1 T2 T3 T4 T5 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 Fetch Execute Fetch Execute Fetch 此階段執行一般指令 Execute Fetch Flush T6 T7 此階段執行 rcall 指令並包含了放棄預提取指令 Fetch 51 52 53 54 SUB1 SUB2 movf PORTB,w return movf PORTC,w return Fetch Execute Fetch Execute Fetch Flush Microchip Technology Taiwan Slide 11

預提取指令 Instruction Pipelining 執行指令 movlw 0x05 - 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 Fetch 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 12

Instruction Pipelining 預提取指令 movwf REG1 執行指令 movlw 0x05 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 Fetch T1 Execute Fetch 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 13

Instruction Pipelining 預提取指令 rcall SUB1 執行指令 movwf REG1 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 T1 T2 Fetch Execute Fetch Execute Fetch 此階段執行一般指令 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 14

Instruction Pipelining 預提取指令 addwf REG2 執行指令 rcall SUB1 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 T1 T2 T3 Fetch Execute Fetch Execute Fetch Execute Fetch 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 15

Instruction Pipelining 預提取指令 movf PORTB,w 執行指令 rcall SUB1 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 T1 T2 T3 T4 Fetch Execute Fetch Execute Fetch Execute Fetch Flush 放棄 rcall 指令, 重新提取下一個指令 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 16 Fetch

Instruction Pipelining 預提取指令 return 執行指令 movf PORTB,w 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 T1 T2 T3 T4 T5 Fetch Execute Fetch Execute Fetch Execute Fetch Flush 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 17 Fetch Execute Fetch

Instruction Pipelining 預提取指令 movf PORTC,w 執行指令 return 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 T1 T2 T3 T4 T5 T6 Fetch Execute Fetch Execute Fetch Execute Fetch Flush 51 SUB1 movf PORTB,w 52 return 53 SUB2 movf PORTC,w 54 return Microchip Technology Taiwan Slide 18 Fetch Execute Fetch Execute Fetch

Instruction Pipelining 預提取指令 addwf REG2 執行指令 return 指令週期 1 2 3 4 MAIN 程式範例 movlw 0x05 movwf REG1 rcall SUB1 addwf REG2 T0 T1 T2 T3 T4 T5 T6 T7 Fetch Execute Fetch Execute Fetch Execute Fetch Flush Fetch 51 52 53 54 SUB1 SUB2 movf PORTB,w return movf PORTC,w return Fetch Execute Fetch Execute Fetch Flush Microchip Technology Taiwan Slide 19

PICmicro MCU 的架構 長指令寬度的編碼方式 (Long Word Instruction ) PIC 指令寬度有分成三種 12, 14 or 16-bits, 這種指令寬度稱為長指令 ( Long Word Instruction ) PIC 的資料匯流排 (Data Bus) 寬度是 8 bits, 所以 PIC 是一個 8-bit MCU 若於 PIC18Fxxxx 具備 2K x 16 words 的程式記憶體, 可完成的工作約相當於其他有 4K 記憶體的 MCU ( 80C51). 單一周期的指令運作使 MCU 的處理能力提高許多 Microchip Technology Taiwan Slide 20

PICmicro MCU 的架構 長指令寬度的編碼方式 (Long Word Instruction ) PIC MCU movlw #imm<8> 0000 1110 k k k k k k k k MC68HC05 ldaa 1000 0110 k k k k k k k k #imm<8> Microchip Technology Taiwan Slide 21

PIC18F452 基本架構圖 PORTA 21 Program Memory 16 21 Table Pointer <2> Inc/dec logic Program Bus 5 8 8 PCLATU PCLATH PCU PCH PCL Program Counter 31 Level Stack TABLELATCH 8 BSR Data RAM 12 (2) Address<12> 4 12 FSR0 FSR1 FSR2 Instruction Register 12 Data Bus BIT OP 8 PRODH PRODL 8 x 8 Multiply 8 WREG 8 ALU<8> MSSP 8 8 8 PORTB PORTC PORTD PORTE OSC2/CLK0 OSC1/CLK1 VDD,VSS MCLR T1OS1 T1OSO Timing Generation 4X PLL Precision Voltage Reference Power-up Timer Oscillator Start-up Timer Power-on Reset Watchdog Timer Brown-out Reset In-circuit Debugger Instruction Decode and Control USART CCP TIMER A/D Microchip Technology Taiwan Slide 22

引用 引用 Register File 的觀念 w ALU f Data Memory (Register File) 07h 08h 09h SFR s 位於 Bank 15 所有指令皆可對任一暫存器操作, 無須切換 Bank d w f Data Bus 0Ah 0Bh 0Ch 0Dh 0Eh Long word 的指令讓各暫存器可被直接定址 MOVFF src, dest 0Fh WREG 10h 周邊暫存器及狀態暫存器皆為 Register files 的一部份 Opcode d a Address 指令解碼 結果儲存控制 資料來源的位址 與執行 Microchip Technology Taiwan Slide 23

Data Memory 架構 有 16 banks 的 Data Memory, 每個 Bank 由 256 Bytes 組成 ( Max. 4K Bytes ) Special Function Registers (SFRs) 被安排在 Bank 15 使用 BSR<3:0> 來選擇適當的 BANK 或使用 BANKSEL 來做切換 BANK 的工作 MOVFF 指令可免去切換 BANK 的工作, 但需 2 words 的指令空間來完成 使用 Access Bank 的暫存器, 無須做 Bank 的切換 000h 07Fh 080h 0FFh 100h 1FFh 200h 2FFh D00h DFFh E00h EFFh F00h F7Fh F80h FFFh Access RAM Bank 0 GPR Bank 1 GPR Bank 2 GPR Bank 13 GPR Bank 14 GPR Bank 15 GPR Access SFR PIC16F8F2520/4520 暫存器的分布 Access Bank Access RAM Access SFR 256 Bytes 00h 7Fh 80h FFh Microchip Technology Taiwan Slide 24

PIC18 系列的架構 Program Memory 最大可達 2M Bytes ( 21 bits) PC<20:0> 的程式空間 Reset Vector 位於程式位址 0x0000 高優先權中斷向量的位址位於 0008h CALL, RCALL, RETURN RETFIE, RETLW Stack Level 1 Stack Level 31 Reset Vector High Priority Interrupt Vector Low Priority Interrupt Vector 000h 008h 018h User Memory Space 低優先權中斷向量的位址位於 0018h On-Chip Programming 31 層獨立的位址堆疊區 Microchip Technology Taiwan Slide 25 Read 0 1FFFFFh 200000h

豐富的內部與外部中斷來源 PIC18 系列的架構 Interrupt Overview 幾乎所有周邊皆有中斷 CPU 的能力 有些 I/O 的變化也可構成中斷條件 (PORTB) 每個周邊中斷可以被設定成具有高 / 低優先權 ( Hi/Low Priority) INT0 永遠為高優先權外部中斷 具相同優先權設定的中斷則可由軟體來決定其優先順序 有整體及各別的中斷致能控制位元 每個中斷都有其獨立的中斷旗標, 可用軟體詢問的方式 大部份的中斷可以用來喚醒處於 SLEEP 狀態的 PICmicro 中斷延遲固定為 3 個 cycle 容易以軟體來判斷中斷的經過時間 Microchip Technology Taiwan Slide 26

PIC18 系列的架構 高優先全中斷邏輯架構 TMR0IF TMR0IE TMR0IP RBIF RBIF RBIF INT0IF INT0IE INT1IF INT1IE INT1IP INT2IF INT2IE INT2IP Peripheral Interrupt Enabled bit Peripheral Interrupt Flag bit Peripheral Interrupt Priority bit Additional Peripheral Interrupts High Priority Interrupt Generation IPEN From (a) IPEN GIEL/PEIE IPEN Interrupt to CPU Vector to location 0008h (High Priority Interrupt Vector Address) GIEH/GIE High Priority Interrupt initialized (Disable low priority interrupts) To (c) From (b) Microchip Technology Taiwan Slide 27

PIC18 系列的架構低優先全中斷邏輯架構 Peripheral Interrupt Enabled bit Peripheral Interrupt Flag bit Peripheral Interrupt Priority bit Additional Peripheral Interrupts To (a) To (b) From (c) Wake-up (if in SLEEP mode) Interrupt to CPU Vector to Location 0018h (Low Priority Interrupt Vector Address) TMR0IF TMR0IE TMR0IP RBIF RBIF RBIF INT0IF INT0IE GIEH/GIE INT1IF INT1IE INT1IP INT2IF INT2IE INT2IP Microchip Technology Taiwan Slide 28

PIC18 系列的架構 Clocking Scheme 一個指令周期等於輸入 CPU 頻率的 1/4 若 CPU 操作於 40 Mhz 時, 其指令周期為 100 ns Fosc 振盪頻率 / 4 = Tosc 指令週期 指令週期 一般性的動作 解碼 讀取 執行 寫入 Microchip Technology Taiwan Slide 29

PIC18Fxxxx 定址模式 Microchip Technology Taiwan Slide 30

18Fxxxx 定址模式 四種基本的定址模式 立即定址模式 直接定址模式 間接定址模式 相對定址模式 Microchip Technology Taiwan Slide 31

PIC18 定址模式立即數的操作 8-bit 的常數值 (literal value) 被包含於程式碼之中 使用於 literal instructions, 例如 movlw, addlw, retlw, etc. OP CODE k k k k k k k k Microchip Technology Taiwan Slide 32

PIC18 定址模式 Data Memory: 直接定址 (Banked) Data Memory 總共有效位址為 12 Bits ( 4K Bytes ) 8-bit 的直接位址由指令中得到 其他高位的 4-bits 由 BSR<0..3> 獲得 BSR<7:4> BSR<3:0> OP CODE f f f f f f f f BSR<3:0> f f f f f f f f Microchip Technology Taiwan Slide 33

直接定址 範例 BSR 4-bits from BSR Register f Operand 8-bits Encoded in Instruction Effective Address 0 0 0 1 0 0 1 0 0 0 0 0 = 120 MyReg equ 0x120 MyReg Access RAM Bank 0 Bank 1 AA Bank 2 120h movlw b 11110000 movwf TRISB, a bsf PORTB, 0, a movlb 0x01 ; 選擇 BANK 1 movlw 0xAA movwf MyReg ; @120h PORTB LATB TRISB BSR WREG Bank 15 Access SFR FE FF F0 FF FF F81h F8Ah F93h FE0h FE8h Microchip Technology Taiwan Slide 34

PIC18 定址模式 Data Memory : 直接定址 ( Non Banked) MOVFF src, dest ( RAM 對 RAM 的資料搬移 ) 2 Word 的指令, 直接指定兩個 4K 的位址 1 1 0 0 n n n n n n n n n n n n 來源位址 (Source) 1 1 1 1 n n n n n n n n n n n n 目的位址 (Destination) 善用 Access BANK 或選擇 BANKED 的 Single Word 指令可增加執行效能及佔用較少的程式記憶體 Microchip Technology Taiwan Slide 35

PIC18 定址模式 Data Memory: 間接定址 (Indirect addressing) 三個 12-bit 寬的間接定址暫存器 FSR0, FSR1, FSR2 FSRn (File Select Register) 的內容可做以下調整 : Pre-Incremented : (PREINCx) 先被加一再存取其內容 Post-Incremented : (POSTINCx) 存取完 FSRn 所指內容後將 FSRn 加 1 Post-Decremented : (POSTDECx) 存取完 FSRn 所指內容後將 FSRn 減 1 Offset by WREG value (signed):(pluawx) FSRn 不變, 以 W 為偏移值相加後以產生新的索引指標 保持不變 : (INDFx) Microchip Technology Taiwan Slide 36 f f f f f f f f f f f f

PIC18 定址模式 Data Memory: 間接定址 (Indirect Addressing) 範例 : 清除由位址 0x000 to 0x5FF 的資料內容 間接位址被寫入 FSRn 中 每當 INDFn 被當成運算元 (operand) operand), 實際上被操作的位址乃是由 FSRn 內容所指的位址 類似 8051 的 @R0 @R1 定址法, 但功能更齊全 _Loop movlw 0x05 ; Value to compare lfsr 1,0x000 ; Clear address from 0 clrf POSTINC1 ; Clear, increment FSR1 cpfsgt FSR1H ; FSR1H > 5? ( 0x600 ) goto _Loop ; NO, loop : ; YES, next instruction Microchip Technology Taiwan Slide 37

PIC18 定址模式相對定址使用方法 PIC18 系列的程式計數器為 21 Bits, 無法以 8 Bit 的 Data Bus 直接將其修改, 故以栓鎖 ( Latch Buffer ) 的架構來輔助以達成修改的工作 先將欲執行位址的高位元部份寫入 PCLATU 和 PCLATH 最後將低位元部份寫入 PCL, 此時存於此三個暫存器的 21-bit 內容將被一次寫入 Program Counter Microchip Technology Taiwan Slide 38

利用此方式就可以達到 GOTO 的位址計算, 直接修改 program counter 相對定址說明 PCLATU WREG 01 12 8-bit Data Bus PCLATH 12 PCU PCH PCL FF FF 25 To write to PC: ❶ Write upper byte to PCLATU ❷ Write high byte to PCLATH ❸ Write low byte to PCL PC_OFFSET = movlw UPPER 0x011250 movwf PCLATU movlw HIGH 0x011250 movwf PCLATH movff PC_OFFSET, PCL 25 Microchip Technology Taiwan Slide 39

PC 相對定址 : 計算 GOTO 位址 計算 GOTO 位址, 使用索引查 表方式建立跳躍表格 org 0x002180 JTS movlw UPPER JUMP_TABLE movwf PCLATU @ 0x002190 movlw HIGH JUMP_TABLE movwf PCLATH movlw 0x04 mulwf USER_INPUT movf PRODL W addwf PCL, f JUMP_TABLE goto DoUserInput0 goto DoUserInput1 goto DoUserInput2 goto DoUserInput3 goto DoUserInput4 Microchip Technology Taiwan Slide 40 USER_INPUT 02 WREG 08 PCLATU PCLATH 00 21 FF FF FF PCU PCH PCL 計算跳躍的偏移量位址每一個 goto 指令佔 4 bytes: 所以要乘四後才可以得到正確的偏移位址

Top of Stack Registers PIC18 Return Address Stack STKPTR Register Program Counter TOSU TOSH TOSL STKOVF STKUNF SP4:SP0 PCU:PCH:PCL 0 0 1 2 6 0 0 0-0 0 1 0 0 0 0 1 2 6 0 23 0 Events that push PC+2 onto the stack: PUSH CALL RCALL Interrupt Events that pop the top of the stack: POP RETURN RETLW RETFIE PCLATU 及 PCLATH 不受任何的 Return 指令影響 每層的堆疊寬度為 21-bit ( 整個 4M 位址 ) 只有 STKPTR 所指到的最上層的堆疊資料 (TOSU, TOSH, TOSL) 允許被程式讀取或修改 Microchip Technology Taiwan Slide 41 7 6 5 4 0 Stack 0 0 0 0 0 0 0 001260 xxxxxx xxxxxx Stack Level 31 30 09 08 07 06 05 04 03 02 xxxxxx 01 堆疊方向

PIC18FXXX 指令集 Microchip Technology Taiwan Slide 42

77 個指令 PIC18 系列 MCU 指令集 Instruction Set Overview 73 個是 Single Word 指令 4 個 two-word 指令 : MOVFF, LFSR, CALL, GOTO 55% 的指令只需 single cycle 即可完 4 個 two word 的指令須耗費 2 周期 10 個 branches, calls 會依情況耗費一或兩個周期 8 個對 Table 操做的指令為 2 周期 3 個 return 的指令需耗費 2 周期 10 個條件式的 SKIP 指令依狀況需耗費 1 or 2 周期 Microchip Technology Taiwan Slide 43

PIC18 系列 MCU 指令集 Instruction Set Overview 具有記憶體直接搬移的指令 Data memory 對 Data memory 的直接操作 Data memory 對 Program memory 的讀取或寫入 Single cycle 的 8 x 8 硬體乘法器 (100 ns) 完整的位元操作指令 單一執行周期的 bit set,clear 或 toggle 操作 直接可對所有暫存器做位元操作 ( 包括 I/O Port ) Microchip Technology Taiwan Slide 44

PIC18 系列 MCU 指令集 Summary (16-bit core) Byte-Oriented Operations ADDWF f, d, a Add WREG and f ADDWFC f, d, a Add WREG and f ANDWF f, d, a AND WREG and f CLRF f, a Clear f COMF f, d, a Complement f CPFSEQ f, a Compare f with WREG, skip = CPFSGT f, a Compare f with WREG, skip > CPFSLT f, a Compare f with WREG, skip < DECF f, d, a Decrement f DECFSZ f, d, a Decrement f, skip if zero DCFSNZ f, d, a Decrement f, skip if not zero INCF f, d, a Increment f INCFSZ f, d, a Increment f, skip if zero INFSNZ f, d, a Increment f, skip if not zero IORWF f, d, a Inclusive OR WREG and f MOVF f, d, a Move f MOVFF fs, fd Move fs (source) to fd (destination) MOVWF f, a Move WREG to f Byte -Oriented Operations MULWF f, a Multiple WREG with f NEGF f, a Negate f RLCF f, d, a Rotate left f through carry RLNCF f, d, a Rotate left f, no carry RRCF f, d, a Rotate right f through carry RRNCF f, d, a Rotate right f, no carry SETF f, a Set f SUBFWB f, d, a Subtract f from WREG with borrow SUBWF f, d, a Subtract WREG from f SUBWFB f, d, a Subtract WREG from f with borrow SWAPF f, d, a Swap nibbles of f TSTFSZ f, a Test f, skip if zero XORWF f, d, a Exclusive OR WREG and f f = File Register, d = destination (1=f, 0=WREG), a = access bank (0=access bank, 1=BSR) Microchip Technology Taiwan Slide 45

PIC18 系列 MCU 指令集 Summary (16-bit core) BCF BSF BTG BTFSC BTFSS Bit -Oriented Operations f, b, a Bit clear f f, b, a Bit set f f, b, a Bit toggle f f, b, a Bit test f, skip if clear f, b, a Bit test f, skip if set Data Memory <--> Program Memory Operations TBLRD* - Table Read TBLRD*+ - Table Read with post-inc. TBLRD*- - Table Read with post-dec. TBLRD+* - Table Read with pre-inc. TBLWT* - Table Write TBLWT*+ - Table Write with post-inc. TBLWT*- - Table Write with post-dec. TBLWT+* - Table Write with pre-inc. Literal Operations ADDLW k Add literal with WREG ANDLW k AND literal with WREG IORLW k Inclusive OR literal with WREG LFSR f, k Move literal to FSRn MOVLB k Move literal to BSR MOVLW k Move literal to WREG MULLW k Multiply literal to WREG RETLW k Return, place literal in WREG SUBLW k Subtract WREG from literal XORLW k Exclusive OR literal with WREG f = File Register, k = literal value (8-bit), b = bit address (0-7) Microchip Technology Taiwan Slide 46

Control Operations PIC18 系列 MCU 指令集 Summary (16-bit core) Control Operations BC n Branch if Carry (n is 8-bit) BN n Branch if Negative (n is 8-bit) BNC n Branch if No Carry (n is 8-bit) BNN n Branch if Not Negative (n is 8-bit) BNOV n Branch if No Overflow (n is 8-bit) BNZ n Branch if Not Zero (n is 8-bit) BOV n Branch if Overflow (n is 8-bit) BRA n Branch (n is 11-bit) BZ n Branch if Zero (n is 8-bit) CALL n, s Call subroutine (n is 20-bit) CLRWDT - Clear Watchdog Timer DAW - Decimal Adjust WREG GOTO n Go to address (n is 20-bit) NOP - No Operation POP - Pop top of return stack (TOS) PUSH - Push top of return stack (TOS) RCALL n Relative call (n is 11-bit) RESET - Software device reset RETFIE s Return from interrupt enable RETLW k Return, place literal in WREG RETURN s Return from subroutine SLEEP - Go into standby mode n = absolute address or address offset, k = literal value (8-bit), s = fast restore Microchip Technology Taiwan Slide 47

Byte-Oriented Operations ADDWF ADDWFC ANDWF CLRF COMF CPFSEQ CPFSGT CPFSLT DECF DECFSZ DCFSNZ INCF INCFSZ INFSNZ IORWF MOVF MOVFF MOVWF f, d, a f, d, a f, d, a f, a f, d, a f, a f, a f, a f, d, a f, d, a f, d, a f, d, a f, d, a f, d, a f, d, a f, d, a fs, fd f, a PIC18 系列 MCU 指令集 以位元組為操作的對象 16-bit Instruction for Byte Oriented Operations OP CODE d = Destination Bit d = 0 運算結果置於 W d = 1 運算結果置於 F (Default d=1) a = Access Bit a = 0 指定置於 Access Bank 的暫存器 (Default a=0, 或不寫 ) a = 1 實際的位址由 BSR 與 8-bit 的暫存器位址組成 d a f f f f f f f f f = 8-bit 暫存器位址 Example: ADDWF 0, 0 ADDWF f, d, a Microchip Technology Taiwan Slide 48

Byte-Oriented Operations MULWF NEGF RLCF RLNCF RRCF RRNCF SETF SUBFWB SUBWF SUBWFB SWAPF TSTFSZ XORWF f, a f, a f, d, a f, d, a f, d, a f, d, a f, a f, d, a f, d, a f, d, a f, d, a f, a f, d, a PIC18 系列 MCU 指令集 以位元組為操作的對象 16-bit Instruction for Byte Oriented Operations OP CODE d = Destination Bit d = 0 運算結果置於 W d = 1 運算結果置於 F a = Access Bit d a = 0 指定置於 Access Bank 的暫存器 a = 1 實際的位址由 BSR 與 8-bit 的暫存器位址組成 a f f f f f f f f f = 8-bit 的暫存器位址 Example: SUBWF VAR1, 0, 0 SUBWF AD_VALUE, 0, a Microchip Technology Taiwan Slide 49

Bit-Oriented Operations BCF BSF BTG BTFSC BTFSS f, b, a f, b, a f, b, a f, b, a f, b, a PIC18 系列 MCU 指令集 以位元組為操作的對象 16-bit Instruction for Bit Oriented Operations OP CODE b b = 3-Bit, 用來指定欲操作位元的位址 (Bit Number) a = Access Bit Example: BTFSC STATUS, C, 0 BTFSC FLAGS, BIT_0, a b b a = 0 指定置於 Access Bank 的暫存器 a = 1 實際的位址由 BSR 與 8-bit 的暫存器位址組成 a f f f f f f f f f = 8-bit 的暫存器位址 Microchip Technology Taiwan Slide 50

Literal Operations ADDLW ANDLW IORLW LFSR MOVLB MOVLW MULLW RETLW SUBLW XORLW Example: MOVLW MOVLW k k k f, k k k k k k k 0x5A CONST PIC18 系列 MCU 指令集 立即數操作 用來操作 FSR 的 16-bit, 2 Word 指令 LFSR 11101110 0 0 f Microchip Technology Taiwan Slide 51 f = 2-bit FSR 的選擇位元 f k k k k 11110000 K K K K k k k k k = 用來指定 FSRn 的 12-bit 立即值 其他操作常數運算元的 16-bit 指令 OP CODE k k = 8-bit Immediate Value k k k k k k k

Control Operations BC BN BNC BNN BNOV BNZ BOV BRA BZ CALL GOTO RCALL n n n n n n n n n n, s n n PIC18 系列 MCU 指令集 Control Operations 16-bit Instruction for CALL and GOTO OP CODE s n n n n n n n n OP CODE n n n n n n n n n n n n s = 1-bit 選擇是否使用 fast Save/Restore 的功能 k = 20-bit 位址的立即值 A0=0 16-bit Instruction for RCALL and BRA OP CODE PC<20:1> n n n n n n n n n n n k = 11-bit 位址的立即值 Microchip Technology Taiwan Slide 52

PIC18 系列 MCU 指令集 Control Operations Control Operations CLRWDT - DAW - NOP - POP - PUSH - RESET - SLEEP - RETURN - RETLW k RETURN s RETFIE s 16-bit Instruction for RETLW OP CODE k k = 欲置於 W 暫存器後返回的 8-bit 資料 16-bit Instruction for RETURN OP CODE s = 1- bit, 選擇是否使用 Fast Save/Restore 的功能 k k k k k k k s Microchip Technology Taiwan Slide 53

PIC18 系列 MCU 指令集 Data Memory <> Program Memory Table Pointer Operations TBLRD* - TBLRD*+ - TBLRD*- - TBLRD+* - TBLWT* - TBLWT*+ - TBLWT*- - TBLWT+* - 16-bit Instruction for TBLRD* or TBLWT* OP CODE nn = 00 * ( 指標不變 ) nn = 01 *+ ( 查表後指標加一 ) nn = 10 *- ( 查表後指標減一 ) n n nn = 11 +* ( 先將指標加一再查表 ) Microchip Technology Taiwan Slide 54

PIC18FXXX 加強的部份 Access BANK 的資料般移 BSR<3:0> = 0000b = 0001b = 0010b = 0011b = nnnnb Bank 0 Bank 1 Bank 2 Bank 3 Bank n 00h FFh 00h FFh 00h FFh 00h FFh 00h FFh Access RAM GPR GPR GPR GPR 000h 07Fh 080h 0FFh 100h 1FFh 200h 2FFh 300h 3FFh MOVF FREG,W,0(1) 當指令中的選項位元 a = 0, BSR 的內容將不被使用而以 Virtual RAM bank 來取代. Access Bank 前半部由 Bank 0 的部份一般暫存器組成, 而後半部則由特殊功能暫存器 (SFRs) 組合而成 ( from Bank 15 ) Access Bank Access RAM Access SFR 00h 7Fh 80h FFh = 1100b = 1101b = 1110b = 1111b Bank 12 Bank 13 Bank 14 Bank 15 00h FFh 00h FFh 00h FFh 00h FFh GPR or SFR GPR or SFR Access SFR Microchip Technology Taiwan Slide 55 C00h CFFh D00h DFFh E00h EFFh F00h F7Fh F80h FFFh Access RAM 與 Access SFR 的實際大小視不同的編號而有所差異 當指令中的選項位元 a =1, BSR 被用來配合指令中指定的位址一起形成 12 bits 的實際位址

PIC18FXXX 加強的部份 相當有彈性的資料指標 3 個資料指標, 各有五種操作模式 更方便且有效率的 Table Read/Write 功能 以 Byte 為操作單位 多種的指標更新選項 用簡單的指令集來支援複雜的架構 新的 MOVFF,BRA, 以及條件式分支指令 Microchip Technology Taiwan Slide 56

PIC18FXXX 加強的部份 資料指標 ( Data Pointer ) 總共有三個獨立的指標 FSR0, FSR1, FSR2 指標為 12 Bits, 可定址 4K 的資料空間 指標有兩個暫存器組成 ( 例 : FSR0L, FSR0H) 五種指標的操作方式 ( 使用不同的虛擬暫存器 ) INDFn : 直接操作指標所指的內容 POSTINCn : 操作指標所指內容後將指標加一 POSTDECn : 操作指標所指內容後將指標減一 PREINCn : 將指標先加一後再對指標所指位址操作 PLUSWn : 將 WREG 的內容作為 Offset 值與 FSRn 相加後以其結果為指標來存取記憶體 Microchip Technology Taiwan Slide 57

PIC18xxxx 特殊功能 Microchip Technology Taiwan Slide 58

PIC18 振盪器選擇 XT HS Standard frequency crystal oscillator High frequency crystal oscillator 100kHz - 4MHz DC - 40MHz HS+PLL High frequency crystal with 4x PLL 4MHz - 10MHz LP RC Low frequency crystal oscillator External RC oscillator 5kHz - 200kHz DC - 4MHz RCIO External RC oscillator, OSC2=RA6 DC - 4MHz INTRC Internal RC oscillator Various EC External Clock, OSC2=f osc /4 DC - 40MHz ECIO External Clock, OSC2=RA6 DC - 40MHz 提供多樣的振盪器選擇方式, 讓設計更加彈性 : LP 振盪模式提供了低功耗功能 RC 或 INTRC 振盪模式提供了低成本的效益 XT 提供一般使用的工作頻率 HS 提供需高速處理所需的工作頻率 速度範圍參考資料手冊所建議的範圍 Microchip Technology Taiwan Slide 59

設定 Configuration Word 的方式 直接在 MPLAB IDE 下設定 先確定 MPLAB IDE 使用的元件名稱 MPLAB IDE 目錄下 : Configure Configuration Bits 取消 Configuration Bits Set in code Microchip Technology Taiwan Slide 60

程式設定 Configuration Word 一般會建議利用程式內建 Config. 方式來設定 編譯過後,HEX 檔會有設定值的存在 避免燒錄時的人為設定上的選擇錯誤 舊版 MPASM 使用 config 方式, 新版已經改為 CONFIG 的語法 參考 C:\Program Files\Microchip\MPASM Suite\Template\Code 裡的 18f4520tmp.asm 裡的範例 相關設定的定義字參考 inc 檔 list p=18f4520 ; list directive to define processor #include <p18f4520.inc> ; processor specific variable definitions CONFIG OSC = LP, PWRT = ON, WDT = OFF Microchip Technology Taiwan Slide 61

什麼是 POR, OST, PWRT POR: 電源開機重置 MCLR 腳接到 VDD, 當 VDD 上升時會產生重置動作 (Reset) PWRT: 電源上電延遲計時器 偵測到電源開機後 (POR), 自動延遲 72mS 以確保 MCU 可以在工作電壓下執行 OST: 振盪器穩定計時器 HS,XT,LP 三種振盪模式的啟動穩定延遲, 自動計數 1024 的 Cycles 後送出振盪信號給 MCU ( 不適用在 RC 模式 ) 只在 POR 啟動後及喚醒睡眠模式下會做此動作確保頻率的穩定 Microchip Technology Taiwan Slide 62

睡眠模式 (Sleep Mode) 指微控制器可以執行 Sleep 指令進入休眠狀態節省消耗功率 系統主振盪時脈停止運作 處理器進入靜態的狀態 資料保持不變 Watch-Dog Timer 因使用特定的 RC 振盪可以持續工作不受影響 處理器進入最低耗電模式 通常是漏電流 (0.1-2.0µA typical) MCLR WDT INT TMR1 ADC CMP CCP PORTB SSP PSP 一些可以喚醒睡眠模式的外部觸發事件 Master Clear Pin Asserted (pulled low) Watchdog Timer Timeout INT Pin Interrupt Timer 1 Interrupt (or also TMR3 on PIC18) A/D Conversion Complete Interrupt Comparator Output Change Interrupt Input Capture Event PORTB Interrupt on Change Synchronous Serial Port (I 2 C Mode) Start / Stop Bit Detect Interrupt Parallel Slave Port Read or Write Microchip Technology Taiwan Slide 63

計時監視器 (Watchdog Timer) 以硬體方式監測軟體的故障並恢復運作 使用內建的獨立運作的 RC 振盪器 WDT 的時間計數器可以用 CLRWDT 指令歸零 使用 Config 硬體啟動 WDT 後無法用軟體方式關閉 WDT 發生計時溢位時會重置微處理控制器 (Reset MCU) 可程式控制計時溢位間 : 18ms to 3.0s 可以在 SLEEP Mode 下透過溢位來喚醒 CPU WDT Ripple Counter Postscaler WDTEN SWDTEN 8:1 Mux WDT Timeout Microchip Technology Taiwan Slide 64

串列燒錄功能 In-Circuit Serial Programming 燒錄時只用到兩支腳位 ( 請勿接電阻到地 ) RB6 PGC RB7 PGD Vpp 會有 13V 的觸發電壓輸入, 要使用 10K ohm 電阻接 Vdd, 最好不要再接電容到地以免影響 Vpp 上升時間造成燒錄錯誤 這種燒錄介面可以使用在 Microchip 所有的開發工具裏 ICD2, ICD3, Real ICE PICkit2, PM3 Pin V PP V DD V SS RB6 RB7 PIC18Fxxxx Function Programming Voltage = 13V Supply Voltage Ground Clock Input Data I/O & Command Input ICSP Connector Microchip Technology Taiwan Slide 65

掉電偵測功能 BOR Brown Out Reset 當工作電壓突然掉到所設定的低電壓門檻時,PIC 將會進入重置模式 避免一些奇怪及不可預期的運作 ( 電源不穩時所造成的誤動作 ) 功能像一般具延遲功能的 Reset 電路, 且偵測的電壓門檻是可以設定的以配合各種工作電壓的需求 BOR 功能一但被啟動就無法關閉, 如果要考慮極低的耗電時可能須關閉 BOR 功能 使用 BOR 功能可以防止系統開機不良的情形 短時間內 On, Off, On, Off, On 時所產生的當機 Microchip Technology Taiwan Slide 66

PBOR 可程式化掉電偵測功能 直接在 Configuration 設定 ( 燒錄前設定 ) 此功能無法用軟體方式開啟或關閉 可以設定的電壓門檻 BV DD : 2.5V 最低電壓門檻 V DD, 適用在 3.0V 工作電壓 2.7V 適用在 3.3V 工作電壓 4.2V 4.5V 適用在 5V 工作電壓 如果以上的電壓門檻值無法滿足的話, 請使用外加的 Reset 元件 Microchip s supervisor : MCP1xx, MCP8xx/TCM8xx, or TC12xx Microchip Technology Taiwan Slide 67

可程式化掉電偵測功能 當 V DD 電壓升高到臨界電壓點以上時, 能持續保持在重置 (Reset) 狀態, 並維持 72mS 的延遲計時 Microchip Technology Taiwan Slide 68

可程式化低電壓偵測功能 PLVD Programmable Low Voltage Detect 可以設定比 BOR 更早偵測出掉電 V DD LVDIN LVDCON 狀態, 進行重要資料的保存 (EEPROM) 16 種可以選擇電壓偵測位準 : 1.8V 到 4.5V 每一階為 0.1 到 0.2V 的步進電壓值 可使用外部類比電壓輸入 內建參考電壓元 V REF 16-bit Multiplexer LVDIF 此功能為類比架構消耗較多電流, 如考慮功耗可用軟體方式關閉 此模組 LVDIN V REF Microchip Technology Taiwan Slide 69

PIC18Fxxxx I/O 介紹與運用 Microchip Technology Taiwan Slide 70

PIC18 系列的周邊 : I/O Ports 輸入 / 輸出腳, 為一般 MCU 最基本的工作 PIC18 系列的 I/O 多了一個 LATx, 可有效解決所謂 Read- Modify-Write 指令動作帶來的困擾 每個 I/O Port 皆有三個獨立的控制暫存器 PORTx LATx TRISx Microchip Technology Taiwan Slide 71

I/O 的輸出入暫存器 Internal Data Bus Write PORTx Write LATx Read LATx Read PORTx LATx 拴鎖暫存器或 PORTx 輸出暫存器 PORTx I/O Pins Microchip Technology Taiwan Slide 72

為什麼加入 LATx 拴鎖暫存器 1. 如果工作在較低頻率或較小的負載電容環境 BSF PORTx,PINy Q4 BSF PORTx,PINz Q1 Q2 Q3 電壓的呈現在 PORTx,PINy V IL t Read-Modify-Write 操作時的取樣點 2. 如果工作在較高頻率或較大的負載電容環境 BSF PORTx,PINy BSF PORTx,PINz Q4 Q1 Q2 Q3 Q4 電壓的呈現在 PORTx,PINy V IL 此時電壓還沒升到 V IL 轉態點 t Read-Modify-Write 操作時的取樣點 Microchip Technology Taiwan Slide 73

如何解決 Read-Modify-Write 如果是對相同的 PORTx 連續操作 解決之道是在連續兩個 BSF/BCF 指令間加入適當個 NOP 指令 BSF NOP BSF PORTA,5 PORTA,0 使用 C18 則可加入 Nop( ) 的巨集 建議直接使用 LATx 的來取代 PORTx 的操作 這樣直接就對拴鎖暫存器操作, 而不是對外面的 PORT 操作也就沒有因電容所造成的延遲 BSF BSF LATA,5 LATA,0 Microchip Technology Taiwan Slide 74

I/O 輸出 / 輸入控制 I/O Pin 方向控制 TRISB 1 1 1 1 0 0 0 0 PORTB In In In In Out Out Out Out TRISx 的每一獨立位元可單獨去控制相對應 PORTx 裡的位元的資料方向 (Reset 的初始定義為輸入功能 ) 1 = 輸入, 0 = 輸出 Microchip Technology Taiwan Slide 75

類比或數位腳位? 有些接腳是類比輸入與數位共用同一隻接腳 ( 內定為類比輸入 ) 類比輸入有 ADC 輸入與電壓比較器輸入 ADCON1 暫存器用來設定腳位是類比輸入還是數位 I/O Bit 7 Bit 0 - - X X 1 1 1 1 VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0 設定最低 4 bits 為 1 時, 關閉所有 ADC 輸入腳功能 Microchip Technology Taiwan Slide 76

PIC18 系列的周邊 : I/O Ports 最多可擁有 68 個標準輸入 / 輸出接腳 (PIC18F87 PIC18F8720) 某些接腳具有可設定為 : 周邊功能或一般接腳 接腳具有 25mA 的高驅動電流 (sink & source) 可直接驅動 LEDs 及耗電流較高的負載 每一接腳可直接做位元運算, 且只需一個指令時間 每一接腳均具有下列功能 : 程式設定其為輸入或輸出腳 資料閂鎖 ( 可直接進行 read-modify modify-writes 的功能 ) 輸入資料直接讀取輸入的腳位 每一接腳有獨立的 ESD 保護二極體 Microchip Technology Taiwan Slide 77

顯示與鍵盤 利用最少的外加零件及軟體來完成 : 點亮 4 個七節顯示器並掃瞄一個 4 X 4 的矩陣鍵盤 RB0 - RB7 為顯示字形的輸出, RA0 - RA3 控制欲被點亮的七節顯示器位置 每隔 5mS 點亮一個七節顯示器, 共 20mS 完成一周 在點亮七節顯示器一周後, 改變 RA0~RA3 為輸入關閉七節顯示器 100uS 以掃瞄鍵盤 RB0 - RB3 為輸出 pins,rb4 - RB7 為輸入 pins ( 內含 pull- up 電阻 ) PIC18 系列的周邊 : I/O Ports 典型的應用範例 Microchip Technology Taiwan Slide 78 PIC18FXXX Current Sink

PIC18 系列的周邊 I/O Ports PORTB 的特殊功能 : Interrupt on Change PORTB 的 RB4 至 RB7 可因為偵測到接腳電位的改變來產生中斷, 並喚醒 PICmicro Microchip Technology Taiwan Slide 79

PIC18 系列的周邊 : I/O Ports 的特殊功能 PIC18FXXX RB4 - RB7 內有 pull-up 電阻, 設定為輸入腳 RB0-RB3 為輸出腳並同時輸出低電位 對 PORTB 做一次假讀取以記錄 RB4-RB7 目前的電位並進入睡眠模式 當任一鍵被按下時,RB4 - RB7 會有一電位的改變進而產生中斷喚醒 MCU 對鍵盤進行掃瞄動作讀取按鍵值 Microchip Technology Taiwan Slide 80

正確的語法表達 ( 一 ) 數值 數字 ( 字元 ) 表示法 十進制表示 (Decimal): D < 十進制數目 > &. < 十進制數目 > MOVLW D 100 ; 載入常數 100 (10) to W Reg. MOVLW.100 ; 載入常數 100 (10) to W Reg. Const1 EQU D 200 ; Const1 = 200 ( 十進制 ) 十六進制表示 (Hexadecimal): H < 十六進制數目 > & 0x< 十六進制數目 > & < 十六進制數目 > h MOVLW MOVLW MOVLW Const1 EQU H 3F 0x3F 0FEh ; 載入常數 3F (16) to W Reg. ; 載入常數 3F (16) to W Reg. ; 載入常數 FE (16) to W Reg. H 5A ; Const1 = 5A ( 十六進制 ) Microchip Technology Taiwan Slide 81

正確的語法表達 ( 二 ) 數值 數字 ( 字元 ) 表示法 二進制表示 (Binary): B < 二進制數目 > Const1 EQU MOVLW B 11110000 ; 載入常數 0xF0 to W Reg. B 01010101 ; Const1 = 01010101 ( 二進制 ) 字元 (ASCII): A < 字元 > & < 字元 > Const1 EQU MOVLW A R MOVLW c ; 載入字元 R to W Reg. ; 載入字元 c to W Reg. a ; Const1 = 小寫的字元 A Microchip Technology Taiwan Slide 82

必需要使用的虛擬指令 LIST - 目錄控制 (Listing Control) list p=pic18f4520 #INCLUDE - 加入一原始檔 定義檔或敘述檔 #include <18f4520.inc> EQU - 宣告常數 變數 ( 不可重新定位 ) memory equ count io_set equ 0x3f equ.100 B 11000011 ORG - 設定程式組譯的起始位址 org 0x00 ; 組譯位址從 00h 開始 org 0x30 ; 組譯位址從 30h 開始 END - 程式結束 Microchip Technology Taiwan Slide 83

虛擬指令的使用範例 list #include ;***** 定義變數 常數 參數區 ****** p=18f4520 ; 定義使用的 MCU 為 PIC18F4520 <p18f4520.inc> ; 使用 18F4520 的標準定義檔 T_DELAY EQU D 100 ; 設定常數值 dly_count EQU H 00 ; 設定變數位址 ;********************************************************************** ; ORG 0x000 ; 設定程式執行位址從 0000 開始 clrf PCLATU clrf PCLATH goto main ORG 0x0008 ; 高優先權中斷向量進入位址 ;******* 中斷處理副程式區 ****** ; retfie s ; 中斷返回 main movlw T_DELAY ; 主程式開始 movwf dly_count ;** remaining code goes here END ; 程式結束 Microchip Technology Taiwan Slide 84

練習一 : I/O 的操作 本練習的程式 Ex1.asm 放在..\102_ASP_TW\exer\Ex1.asm 建立一個屬於這個練習的 Project 名稱定為 Ex1.mcp 修改這個練習, 使程式能依按鍵的選擇來控制 LED JP9 的 2 & 3 腳 ( 左側 ) 需用 Jumper 短路,LED 接地 設定 RB0, RA4 為輸入 設定 PORTD 為輸出 ( 驅動 LED ) 按 SW2 (RB0) 時, 點亮 LED0 LED3 按 SW3 (RA4) 時, 點亮 LED4 LED7 Microchip Technology Taiwan Slide 85

Timer & CCP Module 介紹 Microchip Technology Taiwan Slide 86

PIC18 系列的周邊 : Timer0 Timer0 可設定為 8-Bits 或 16-Bits 模式 16-bit mode 時, TMR0H 會在讀寫 TMR0L 時才真正的被讀出或寫入 Timer0 可準確的由 8-bit 的 Data Bus 來讀取 16-bit 的 Timer 值 計時器產生溢位時 FFh to 00h (FFFFh to 0000h), 即產生中斷 Microchip Technology Taiwan Slide 87

PIC18 系列的周邊 Timer1 and Timer3 16-bit 模式的計數器或計時器 由兩個可讀 / 寫的 8-bit 計數器串聯而成 預除器有四種選擇 : 1, 2, 4,or 8 三種功能 : 計時器, 同步模式計數器, 非同步模式計數器 ( 睡眠模式下使用非同步時序喚醒 ) 專用石英振盪電路可作為外部計數時序或第二系統時序 ( System Clock ) 選擇 當計數器或計時器產生溢位時 FFFFh to 0000h, 即產生中斷 Microchip Technology Taiwan Slide 88

PIC18 系列的周邊 Timer1 and Timer3 (continued) 加入 暫存器的 以獲得更精確的計數功能 同步計時模式 非同步計時模式 Microchip Technology Taiwan Slide 89

PIC18 系列的周邊 Timer1 and Timer3 as a Real-Time Clock 使用 32.768 khz 的石英振盪器作為 Timer1 或 Timer3 的計時訊號 系統的主振盪器可使用低價的 RC 振盪電路 睡眠模式下,Timer1 (Timer3) 繼續遞增 當 Timer1 (Timer3) 產生溢位時, 中斷會喚醒 MCU, 主振 盪器 (RC) 立即起振 可利用 32.768KHz 的值來校正 RC 振盪 Microchip Technology Taiwan Slide 90

PIC18 系列的周邊 Timer2 8-bit 模式的計時器, 有預除器及後除器之功能 PWM 輸出模式下, 基本的頻率來源 TMR2 為一可讀 寫具有自動載入功能的計時器 TMR2 會自動加一並與設定的值相比 ; 若相等則送出訊號至後除器或產生中斷, 並自動將自己清除為零, 重新計時 MSSP (SPI ) 傳送速率的設定 Microchip Technology Taiwan Slide 91

Timer2 的方塊圖 PIC18 系列的周邊 Timer2 PR2 的內容為 Timer2 的週期 (0 255) Microchip Technology Taiwan Slide 92

PIC18 系列的周邊 Capture / Compare / PWM (CCP) Module CCP 模組可規劃為 : 脈波量測器 計時比較模式 脈衝寬度調變器 當起動脈波量測或計時比較功能時, 使用 TMR1 或 TMR3 (16-Bit Timer ) 當計時的基準 在脈衝寬度調變輸出模式下, 啟動 TMR2 當脈衝寬度 (Duty) 和週期 (Period) 的計時基準計時基準 Microchip Technology Taiwan Slide 93

定義 : PIC18 系列的周邊 Capture / Compare / PWM (CCP) Module (continued) Input Capture : 計算輸入脈衝的時間 寬度及頻率 ; 必須使用 16-bit 的 Timer1 為計時基準 Output Compare : 設定一 16-bit 的計時比較值與 16-bit 的 Timer1 相比, 若相等則依其設定來改變輸出 PWM (Pulse Width Modulation) : 頻率固定的方波, 藉由改變其脈衝寬度 (Duty) 來進行數值的調變 Microchip Technology Taiwan Slide 94

PIC18 系列的周邊 CCP Module: PWM Mode 最高可達 10-bit 的解析度 ( 當工作頻率為 40 Mhz ) 輸出頻率 39.06 khz 時, 解析度為 10-bit 40MHz / 1024 = 39.06KHz 輸出頻率 156.25 khz 時, 解析度為 8-bit 輸出頻率 312.5 khz 時, 解析度為 7-bit 脈衝寬度的最高解析度為 25 ns (@ 40 MHz, high-resolution mode) Microchip Technology Taiwan Slide 95

PIC18 系列的周邊 CCP Module: PWM Mode Period 由 PR2 設定 Duty Cycle 由 CCPR1H 決定 PWM 為 10-bit, 較低的兩個位元置於 CCP1CON 的 bit <5:4> 每一新的週期開始時, CCPR1L 的設定值就會重新被載入且正反器被設為 1 輸出 當 TMR2 = Duty Cycle (CCPR1H), 則正反器的輸出會被清除為零 Microchip Technology Taiwan Slide 96

PIC18 系列的周邊 Microchip Technology Taiwan Slide 97

PIC18 系列的周邊 當 16-bit CCPRx 暫存器的內容值等於計時器 TMR1 或 TMR3 時,CCPx 腳可經由事先的設定有以下之輸出變化 : 輸出 輸出 輸出不改變 比較值相等時, 也可產生中斷 亦可設定比較值相等時, 自動清除 TMR1 或啟動 A/D 轉換器 Microchip Technology Taiwan Slide 98

PIC18 系列的周邊 Microchip Technology Taiwan Slide 99

PIC18 系列的周邊 CCP Module: Input Capture Mode 當下列事件發生在輸入腳 CCPx 時,TMR1 或是 TMR3 目前的計數值 (16-Bit) 會直接被複製並儲存在 CCPRxH & CCPRxL 暫存器 每一上緣信號 ( 上緣或下緣觸發可設定 ) 每一下緣信號 每四個上緣或下緣信號 每十六個上緣或下緣信號 事件的觸發也可產生中斷 Microchip Technology Taiwan Slide 100

18F452 中斷處理 18F452 有兩個中斷向量點 高優先權 ==> 中斷向量位址 0x0008 低優先權 ==> 中斷向量位址 0x0018 每個中斷源均可選擇其中斷優先權 ( 二選一 ) 每個中斷源均有獨立的中斷旗標 (Flag) 中斷旗標的清除 ==> 自行用軟體清除 每個中斷源均可 Enable 或 Disable 當然 PIC18 系列也可設定與 PIC16Fxxx 系列的中斷相容 ( 關掉優先權的設定 ) Microchip Technology Taiwan Slide 101

PIC18F452 中斷邏輯架構 (High Priority Level) Microchip Technology Taiwan Slide 102

Shadow 暫存器 18F452 有 Shadow Register 的設計, 能提高中斷程式對事件的反應速度 高優先權中斷 W,BSR,STATUS,, 的存入 / 取出使用 Shadow Register 程式的返回 :retfie FAST 低優先權中斷 W,BSR,STATUS 的存入 / 取出則必需透過軟體方式 程式的返回 :retfie 0 Microchip Technology Taiwan Slide 103

Timer1 的中斷設定 有關 T1CON 的控制位元, 請參考 Page 105 ( PIC18F452) RCON 的 <IPEN> 位元 : 啟動高 低權位的中斷功能 GIEH : 允許高優先權中斷 GIEL : 允許低優先權中斷 TMR1IE : 打開 Timer1 的中斷設定 TMR1IP = 1, 設定 Timer1 為高優先權中斷 Microchip Technology Taiwan Slide 104

練習二 : 使用 Timer1 與中斷 使用 Timer1 外部的 32.768KHz 並啟動 Timer1 的中斷 : 練習程式 : C:\W400 workshop\exercise Exercise\Ex2.asm Ex2.asm 設定 PIC18F452 的工作模式後, 進入主程式的永久迴圈 將 Timer1 設定為 500 ms 中斷 CPU 一次 ( 使用 Fosc / 1 ) 0.5Sec = Timer Value * ( 1 / 32768Hz) Timer Value =?? Timer1 每次中斷後, 必須將 LED ( PORTD ) 的輸出值加一 注意! 參考電路圖的設定 JP2 的設定是 3,5 及 4,6 短路 ; JP9 的設定是 1,2 短路 Microchip Technology Taiwan Slide 105

A/D 轉換器 & 電壓比較器 Microchip Technology Taiwan Slide 106

10-bit A/D 轉換器 8 組類比轉換多工輸入選擇,10 bits 解析度 類比輸入取樣時間 :20 µs ( 輸入阻抗 <10K) 類比輸入轉換時間 :19.2 µs (12 T AD ) 10-bit 解析度時, 只有一位元的誤差 允許使用外部參考電壓 : VREF+ & VREF- 轉換的結果允許自動向左 向右對齊修正向右對齊修正 完整的轉換時間共須 39.2 µs 如輸入腳位固定, 其轉換時間只需 :29.2 µs Microchip Technology Taiwan Slide 107

10 10-bit A/D bit A/D 方塊圖方塊圖方塊圖方塊圖方塊圖方塊圖方塊圖方塊圖 10 10-bit A/D bit A/D 方塊圖方塊圖方塊圖方塊圖方塊圖方塊圖方塊圖方塊圖 R IN Sampling SW Microchip Technology Taiwan Slide 108 C HOLD 120PF

ADCON0 Register A/D 控制暫存器 See Data Book ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE --- bit7 ADCON1 Register ADON bit0 ADFM ADCS2 ----- ----- PCFG3 PCFG2 PCFG1 PCFG1 7 0 76 54 3210 XXXXXXXX XX ADMF=0 00 0000 ADRESH ADRESL 10-bit Result A/D 轉換結果向左 向右調整向右調整 ADMF=1 7 2 10 7 0 0000 00 XX XXXXXXXX ADRESH ADRESL 10-bit 向左靠齊 Microchip Technology Taiwan Slide 109 10-bit 向右靠齊

A/D 轉換基本流程 切換輸入腳位 取樣時間延遲延遲 20uS 起動 A/D 轉換 No 轉換完成? Yes 儲存 A/D 轉換結果 Microchip Technology Taiwan Slide 110

PIC18 系列的周邊 Analog Comparator Module 兩組類比的比較器 內建可程式規劃的參考電壓源 8 種工作模式的選擇 允許在睡眠模式下工作, 比較器的輸出發生改變時可產生中斷來喚醒 MCU 比較器的輸出較器的輸出 輸入腳位可規劃成一般輸入腳位可規劃成一般 I/O 腳使用 Microchip Technology Taiwan Slide 111

PIC18 系列的周邊 有 段的電壓輸出設定如果關閉參考電壓源, 則 會自動關閉可做為簡易 轉換器可將參考電壓 可直接輸出於接腳上 Microchip Technology Taiwan Slide 112

練習三 : 使用 A/D 轉換器 使用 A/D 轉換器將 VR1 的電壓透過 AN0 的輸入腳進行 A/D 的電壓轉換 : 練習程式 : C:\W400 workshop\exercise Exercise\Ex3.asm Ex3.asm 有關 A/D 的設定, 請參考 ADCON0 及 ADCON1 兩個暫存器的設定說明 PIC18Fxx2 Data Sheet ( Page 179 & 180 ) A/D 轉換的結果, 向左調整後只取其最高的 8-bits ( 最低的兩個位元不予理會 ), 並將每次轉換後的結果顯示在 LED Microchip Technology Taiwan Slide 113

MSSP & USART Microchip Technology Taiwan Slide 114

同步串列通訊 ( 一 ) Master Synchronous Serial Port (MSSP) 可工作於 SPI 或 I 2 C 兩種模式之一 SPI (Serial Peripheral Interface) 模式 可程式化速率設定 最高速率 (@ 40 MHz) : Master 10.0 Mbps Slave 4.29 Mbps 可程式化設定接收 發送的時脈 (clock) 動作極性 支援兩種傳輸模式 Microwire TM 和 Motorola s SPI Microchip Technology Taiwan Slide 115

SPI 方塊圖 SDO: Serial Data Output SDI: Serial Data Input Internal data bus SCK: Serial Clock SS: Slave Select Master Mode: SCK is the clock output pin Microchip Technology Taiwan Slide 116

同步串列通訊 ( 二 ) I 2 C (Inter-Integrated Circuit) 模式 全硬體化設計, 支援下列三種 I 2 C 的操作模式 Master Mode Multi-master Mode Slave Mode 支援 7-bit 或 10-bit 位址模式 傳送及接收速度 :100kHz, 400kHz,1 MHz 支援通用位址 (General call) 模式 address=0x00 Microchip Technology Taiwan Slide 117

I 2 C Master 模式 模式方塊圖 SDA SCL Start bit, Stop bit Acknowledge Generate Start bit detect, Stop bit detect, Write collision detect Clock Arbitration State counter for end of XMIT/RCV Microchip Technology Taiwan Slide 118

I 2 C Slave 模式 模式方塊圖 RC3/SCK RC4/SDA Microchip Technology Taiwan Slide 119

I 2 C Master C Master 模式下模式下模式下模式下模式下模式下模式下模式下發送資料的時序發送資料的時序發送資料的時序發送資料的時序發送資料的時序發送資料的時序發送資料的時序發送資料的時序 Microchip Technology Taiwan Slide 120

PIC18 系列的周邊 Addressable USART (AUSART) 支援全雙工非同步串列傳輸, 半雙工同步串列傳輸 8-bit 或 9-bit 的資料格式 串列接收與發送採用雙資料緩衝器的設計 獨立的收 發中斷產生 資料的接收 傳送以 b0 為第一位元 獨立的速率產生器 在 20MHz 時的最高速率 : 同步串列傳輸模式 : 5 Mbaud 非同步串列傳輸模式 : 312.5 Kbps ( 低速模式 ) 1.25 Mbps ( 高速模式 ) 支援 9-bit 位址或資料的判斷模式 Microchip Technology Taiwan Slide 121

PIC18 PIC18 PIC18 PIC18 PIC18 PIC18 PIC18 PIC18 系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊 USART USART 的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖 PIC18 PIC18 PIC18 PIC18 PIC18 PIC18 PIC18 PIC18 系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊系列的周邊 USART USART 的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖的結構方塊圖 Microchip Technology Taiwan Slide 122

TXIF & TRMT 的動作 假如 TXREG 的資料被載到 TSR, TXREG 會空出 ; 則 TXIF = 1 假如 TSR 的資料串列傳送完畢 ; 則 TRMT = 1 假設 TXREG 剛載入資料時 TMRT 為空的 (TMRT=1), 則這筆資料會立即被送到 TSR, 串列傳送會動作, 同時 TXIF = 1 TXIF 是可單獨使用, 即使 USART 的 TX 中斷是關閉的 (TXIE=0) 由以上動作可知偵測發送狀態 TXIF 會比 TMRT 來的快 Microchip Technology Taiwan Slide 123

RCIF 的動作 RSR 為一個移位器, 接收 8-bits 的串列資料及 start & stop bit. 接收到的串列資料會被載入到 RCREG FIFO 並將設定 RCIF 的動作 假設上一筆資料在 FIFO 中未被拿走此時又有一筆串列資料接收近來, 則這筆新的資料會被存在第二級的 FIFO 中 若兩級 FIFO 均有資料, 接收中斷產生將第一級資料提走, 中斷處理完畢後, 第二級 FIFO 的資料會立即產生中斷 2 deep FIFO Microchip Technology Taiwan Slide 124

PIC18 系列的周邊 RS-485 的功能說明 RS-485 適用於高雜訊 長距離通訊, 具有多個接收並聯的功能 : 採用差動式雙絞線傳送, 標準 UART 的傳輸格式 半雙工模式只需一組對絞線 ( 多點通訊 ) 全雙工模式需兩組對絞線 ( 點對點通訊 ) 利用第九個位元 (b8) 作為資料或命令的指引 當 b8 為 1 時, 表示該筆資料為命令, 啟動位址判斷 ; 只有被呼叫的接收器才會被允許接收下一筆的資料 b8=0 時, 該筆資料為一般的資料 Microchip Technology Taiwan Slide 125

PIC18 系列的周邊 RS-485 的功能說明 ADDEN 位元通知 USART 檢查串列資料的第九位元是否為零, 若為零則忽略此次的資料 : 此次接收無效, 勿須傳送至接收緩衝器中 不產生中斷 注意! 發送器的程式必須有效地控制第九位元 Microchip Technology Taiwan Slide 126

USART 速率的計算 PIC18F452 可設定 UART 的傳輸速率 BRGH = 0, 低速模式, Baud Rate = Fosc / [ 64 ( x + 1) ] BRGH = 1, 高速模式, Baud Rate = Fosc / [ 16 ( x + 1) ] 以 16MHz 的工作頻率為例 : 欲求出 9600 bps 的速率 Baud Rate = Fosc / [ 64 ( x + 1) ] 9600 = 16MHz / [ 64 ( x + 1) ] x = [ ( 16MHz / 9600 ) / 64 ) 1 x = 25.025 SPBRG = 25 Microchip Technology Taiwan Slide 127

USART 相關的暫存器 傳送資料時可不必使用中斷傳送 BRGH = 0 傳送格式設為 : 9600,N,8,1 接收最好使用中斷方式接收 CREN = 1 ADDEN = 0 Microchip Technology Taiwan Slide 128 接收格式設為 : 9600,N,8,1

練習四 : 使用 USART 練習程式 : C:\W400 workshop\exercise Exercise\Ex4.asm Ex4.asm 設定 USART 的工作模式為 :9600,N,8,1 電腦的超級終端機設定使用 COM1 或 COM2, 通訊協定為 : 9600,N,8,1,Handshake : None 傳送資料 : 不採用中斷方式 接收資料 : 採用中斷即時接收方式 APP001 電路設定需將 J6 的 1&2 及 3&4 短路 連接 15-Pin 的 RS-232 Cable 到 PC 端 程式會每隔 1 秒 (Timer1) 將 A/D 的轉換結果 ( 10-bit ) 轉成 ASCII 碼後, 傳送到超級終端機上顯示 ( 每次傳送自動加入換行字元 ) PC 鍵盤按 P 鍵,18F452 停止傳送 A/D 值, 按 C 鍵則繼續傳送 Microchip Technology Taiwan Slide 129

PIC18FXXX Directive Instructions Internal Data EEPROM Table Read / Write Microchip Technology Taiwan Slide 130

常用的虛擬指令 -- #DEFINE #DEFINE <name> <string> 通常用來定義文字 標記 常數 在此定義中,<string> 所描述的文字用 <name> 為助憶文字, 在組合語言中可以用 <name> 來代替 <string> 以增加程式的閱讀性例如 : #DEFINE S_CLK PORTC,3 #DEFINE S_DATA PORTC,2 #DEFINE S_FLAG 0x30,7 list p=16f74 #include <p16f74.inc> ; val_ff equ 0Xf8 val_250 equ.80 count equ 0x20 ; #define m_flag count,6 #define clk PORTC,0 #define sda PORTC,1 : : bsf clk btfss sda goto sda_low call sda_hi Microchip Technology Taiwan Slide 131

常用的虛擬指令 -- CBLOCK & ENDC CBLOCK 宣告變數的區域段, 並設定該區域段在暫存器的起始位址 CBLOCK 所定義的第一個變數 ( 暫存器 ) 位址, 即是該起始位址, 下一個變數位址會自動加一 ENDC 是結束此變數區域段的宣告 00016 cblock h'20' 00000020 00017 count, count_ms, led_count 00000023 00018 led_index 00000024 00019 led_buff 00020 endc : 0042 3008 00081 movlw 0x8 0043 00A2 00082 movwf led_count 0044 0DA4 00083 loop_right rlf led_buff,f 0045 0C86 00084 rrf PORTB,f 0046 2054 00085 call delay_250ms 0047 0BA2 00086 decfsz led_count,f 0048 2844 00087 goto loop_right 0049 283C 00088 goto loop_index Microchip Technology Taiwan Slide 132

常用的虛擬指令 -- -- MACRO & ENDM MACRO 一般稱之為巨集函數, 是用來制定自己的專用的指令, 並可傳遞參數給巨集函數內的指令 User_instru MACRO var_in1, var_in2, var_out 使用者定義的指令名稱 參數及變數傳遞 在巨集函數內, 如需執行 GOTO 指令可用 $ 符號做為跳躍的基準位址做加 ( 往下跳 ) 或減 ( 往上跳 ) 的短程跳躍 swap_led MACRO ENDM 是用來結束本巨集函數巨集函數 movlw h 8 movwf led_count rrf led_right,f rlf led_lift,f decfsz led_count goto $-6 ENDM 有 MACRO 的宣告就必須有 ENDM 的存在 Microchip Technology Taiwan Slide 133

MACRO & ENDM 的使用範例 portc_bfr equ 0x50 w_buffer equ 0x51 s_buffer equ 0x52 ; PUSH MACRO movwf w_buffer swapf w_buffer,f swapf STATUS,W movwf s_buffer ENDM ; POP MACRO swapf s_buffer,w movwf STATUS swapf w_buffer,w ENDM ; MOV MACRO regd,regs movf regs,w movwf regd ENDM ;******************************* ; Program start ;******************************* ; org 0x0 goto start ; org 0x04 ; Interrupt ; vector PUSH MOV portc_bfr,portc : POP retfie Microchip Technology Taiwan Slide 134

常用的虛擬指令 -- DB 標記 DB < 字元 >, < 字串 > 產生 8-bit 的固定資料存放在程式記憶體 此固定資料會以 Intel s HEX Code 型態與程式碼結合 因 PIC18Fxxxx 是 16-bit 的程式碼型態, 若資料長度為奇數則該字元組的偶數位元組 ( 較高的 Byte) 會自動補零 固定資料型態可為 : Hex code ASCII 字元 字串字串 0001DE 5B1B 4A32 0000 String_0 db 0x1b,'[','2','J',0x00 ; Clear Terminal Screen 0001E4 2020 2020 2020 String_1 db " Microchip Technology Taiwan ; Workshop 400",0x0a,0x0d,0x00 2020 4D20 6369 6F72 6863 7069 5420 6365 6E68 6C6F 676F 2079 6154 7769 6E61 3B20 5720 726F 736B 6F68 2070 3034 0A30 000D Microchip Technology Taiwan Slide 135

内部資料 EEPROM PIC18F452 256-Bytes EEPROM 具有一百萬次的寫入或清除能力 Flash Program Memory 具有十萬次的寫入或清除能力 資料持久年限 : 超過 40 年 具備 EEPROM 寫入完成的成的中斷功能 EEPROM 具有全電壓範圍的燒錄 PIC18LF452 : 2.0V ~5.5V EEPROM 寫入時間 :4mS Microchip Technology Taiwan Slide 136

EEPROM 相關暫關暫存器 PIC18F452 EEDATA (0xFA8) 用以存放 EEPROM 寫入或讀取的資料 EEADR (0xFA9) 用以存放 EEPROM 的欲存取的欲存取的地址 ( 0x00 ~ 0xFF ) EECON1 (0xFA6) EEPROM 讀 / 寫控制控制暫存器 EECON2 (0xFA7) 特殊的物理上不存在的暫存器存器 讀出的結果全果全為 0 專用于 EEPROM 的寫入順序控制的操作 Microchip Technology Taiwan Slide 137

EECON1 寄存器 存取 存取 存取 存取 或 Microchip Technology Taiwan Slide 138

讀取 EEPROM 的資料 PIC18F452 把欲讀取 EEPROM 的位址寫到 EEADR 暫存器 清除 EEPGD 位元, EECON1<7> 清除 CFGS 位元, EECON1<6> 設定 RD 位元, EECON1<0> 等過了兩個兩個指令周期的指令周期的時間後, 資料會在 EEDATA 暫存器中就中就緒 Microchip Technology Taiwan Slide 139

讀取 EEPROM 資料的程式 READ_EEPROM: EEPROM 讀取副程式 ; ; movff Data_EE_Addr,EEADR bcf EECON1,EEPGD bcf EECON1,CFGS bsf EECON1,RD movf EEDATA,W return 將欲讀取的位址存入 EEADR 清除 EEPGD 位元清除 CFGS 位元啟動讀取 EEPROM 的動作讀取動作完成, 將資料存到 W Reg. 副程式返回 Microchip Technology Taiwan Slide 140

寫入資料到 EEPROM PIC18F452 把欲寫入 EEPROM 的位址寫到 EEADR 暫存器 把欲寫入 EEPROM 的資料寫到 EEDATA 暫存器 清除 EEPGD 位元, EECON1<7> 清除 CFGS 位元, EECON1<6> 設定 WREN 位元, EECON1<2> 關閉所有的中斷 寫 55h 到 EECON2 暫存器 寫 AAh 到 EECON2 暫存器 設定 WR ( EECON1<1> ), 以啟動寫入的動作 允許中斷 清除 WREN 位元, EECON1<1> Microchip Technology Taiwan Slide 141

寫資料到 EEPROM EEPROM 寫入副程式 設定欲寫入 EEPROM 的位址與資料 清除 EEPGD 位元 清除 CFGS 位元 設定 WREN 位元, 啟動寫入功能 ( 關閉所有的中斷, 以避免程序錯亂 ) 啟動寫入順序步驟 開始寫入 EEPROM ( 允許中斷功能 ) PIC18F452 Write_EE_Data: movff Data_EE_Addr,EEADR movff Data_EE_Data,EEDATA ; BCF EECON1,EEPGD BCF EECON1,CFGS BSF EECON1,WREN ; ; BCF INTCON,GIE MOVLW 0X55 MOVWF EECON2 MOVLW 0XAA MOVWF EECON2 BSF EECON1,WR ; BSF INTCON,GIE 測試是否寫入完成? 寫入完成, 關閉 EEPROM 寫入功能 Microchip Technology Taiwan Slide 142 LOOP BTFSS PIR2, EEIF GOTO LOOP ; BCF EECON1,WREN BCF PIR2,EEIF RETURN

讀取程式記憶體 PIC18F452 Table Read 指令讀取 Program Memory 中的資料至 Data Memory 中 程式查表, PIC16Cxx 系列並無此功能 PIC16F87x,16F7x,16C78x 則有 Table Latch 讀取功能 Program memory 以 Byte ( 位元組 ) 為單位, 以 22 bit 的 Table pointer 來指定其位址 ( TABPTRU:TABPTRH:TABPTRL ) 被讀入的資料將置於 TABLAT 暫存器中 PIC18Fxxxx 提供一共四種型態的 Table Read 指令 Microchip Technology Taiwan Slide 143

PIC18F452 的 Table Read 指令 四種 TABLE Read 的操作方式 TBLRD* : 直接讀取指標位址所指的內容 TBLRD*+ : 讀取指標位址位址所指的內容後將指標加一 TBLRD*- : 讀取指標位址位址所指的內容後將指標減一 TBLRD+* : 將指標先加一後再讀取指標位址位址所指的內容 Microchip Technology Taiwan Slide 144

程式記憶體的讀取範例 PIC18F452 LFSR FSR0, RAMBUFADDR ; 設定 22-bit 的程式位址 MOVLW UPPER(PROGMEMADDR) ; MOVWF TBLPTRU ; MOVLW HIGH(PROGMEMADDR) ; MOVWF TBLPTRH ; MOVLW LOW(PROGMEMADDR) ; MOVWF TBLPTRL ; TBLRD*+ ; 讀取目前位址的程式資料, 並將指標加一 ; MOVFF TABLAT, POSTINC0 ; 將資料取出存到 FSR0 所指到的 RAM ; 的位址後,FSR0 加一只到下一位址 Microchip Technology Taiwan Slide 145

寫入程式記憶體 PIC18F452 Table Write 指令允許資料由 Data Memory 寫入 Program Memory Program memory 以 Byte ( 位元組 ) 為單位, 以 22 bit 的 Table pointer 來指定其位址 TABPTRU : TABPTRH : TABPTLL TABLAT 暫存器存放欲寫入 Program Memory 的資料 PIC18Fxxxx 提供四種型態的 Table Write 指令 Microchip Technology Taiwan Slide 146

PIC18Fxxx 的 Table Write 指令 四種 TABLE Write 的操作方式 TBLWT* : 直接寫入資料到指標所指的位址 TBLWT*+ : 寫入資料到指標所指的位址後將指標加一 TBLWT*- : 寫入資料到指標所指的位址後將指標減一 TBLWT+* : 將指標先加一後再將資料寫入指標所指位址 Microchip Technology Taiwan Slide 147

程式記憶體的寫入範例 PIC18F452 : ; 將欲被用來結束 Long Write 程 : ; 序的中斷來源設定好 LFSR FSR0, RAMBUFADDR ; 將要寫入的位址寫入 22 Bits MOVLW UPPER(PROGMEMADDR) ; 的 Table Pointer 中 MOVWF TBLPTRU ; TABLPTRU,TABLPTRH,TABLPTRL MOVLW HIGH(PROGMEMADDR) ; MOVWF TBLPTRH ; MOVLW LOW(PROGMEMADDR) ; MOVWF TBLPTRL ; MOVFF POSTINC0, TABLAT ; 將要寫入程式記憶體的值寫入 ; TABLAT 暫存器 TBLWT*+ ; 寫入至 holding register MOVFF POSTINC0, TABLAT ; 載入第二個 byte TBLWT*+ ; 寫入至 MSB (odd address) ; 起始 long write 的程序 Microchip Technology Taiwan Slide 148

練習五 :Table Read 練習程式 : C:\W400 workshop\exercise Exercise\Ex5.asm Ex5.asm 將存在 ROM 的字串資料用 Table Read 的方式讀出後, 透過 RS-232 傳送到超級終端機顯示 通訊協定 :9600, N, 8, 1, None Handshake 程式會每隔 1 秒 (Timer1) 先傳送字串 The A/D Results are : 到終端機顯示後, 再將 A/D 的轉換結果 ( 10-bit ) 轉成 ASCII 碼後, 傳送到終端機上顯示 ( 每次傳送自動加入換行字元 ) PC 鍵盤按 P 鍵後, 停止傳送 A/D 值, 並將字串 The A/D is stopped conversion! 傳到終端機顯示 PC 鍵盤按 C 鍵則繼續傳送 A/D 值, 並將字串 The A/D is running! 傳到終端機顯示 Microchip Technology Taiwan Slide 149

附錄 A 開發工具介紹 Microchip Technology Taiwan Slide 150

開發工具介紹 APP001 多功能實驗版 MPLAB IDE v8.xx MPLAB ICD2, ICE2000 MPLAB Real ICE Microchip Technology Taiwan Slide 151

RS-232 APP001 v1.0 實驗板 A/D VR ICD2 Connecter DC 9V Input J6 (RS-232) J2 (32768Hz) Reset Button PIC16F877A 16MHz Crystal +5V S.P.S. LCD 亮度調整 PORTD LED 2 X 16 LCD Module Microchip Technology Taiwan Slide 152 J9 (LED) Button 16Mhz OSC

APP001 實驗板功能 練習 PIC16F877A 內部周邊的使用方法及典型的應用方式 40 Pin 的 PIC16Fxxx 與 PIC18Fxxx 腳位相容 直接與 MPLAB-ICD2 連接, 不須經由 Header Board 轉接 可練習的主要外接電路有 : LCD Module, 按鍵處理,I 2 C EEPROM, I 2 C 溫度存取 SPI,RS-232, RS-485, CAN Controller AD 轉換, PWM 與 I/O 控制 101ASP 課程使用的主要資源 PORTD 用以控制 8 個獨立的 LED RA0 : 使用於讀取可變電阻的電位值 (AN0) RA4 : 使用於按鍵控制 (SW3) Microchip Technology Taiwan Slide 153

MPLAB-IDE 功能介紹 高整合度的微處理器軟體 / 硬體研發及偵錯平台 採用專案管理模式 ( Project ) 多視窗原始程式編輯 修改 直接組譯 / 編譯原始程式 軟體模擬 具有輸入模擬功能 支援原始程式偵錯 支援 MPASM MPLINK 支援 C compiler Microchip Technology Taiwan Slide 154 硬體除錯工具 : ICE2000 Real ICE MPLAB ICD2 MPLAB ICD2 LE PICKit2 Debugger 程式燒錄工具 : PM-III PICSTART Plus MPLAB ICD2 PICKIT2 Debugger

MPLAB IDE IDE - 整合式的發展環境 內含多功能程式編輯器 語言工具 MPASM Assembler MPLAB Integrated Development Environment 軟體模擬 MPLAB SIM Sofware Simulator 單一系統專案管理模式 模擬器及除錯器 MPLAB REAL ICE 燒錄器 PICkit 1 PICSTART Plus 原始檔案程式偵錯功能 協力廠商支援工具 Compilers IAR, Hi-Tech, CCS, ME Labs, Green Hills MPLINK MPLIB MPLAB ICE 2000 & 4000 MPLAB PM3 Real-time Operating Systems CMX, Vector, Realogy, Express Logic MPLAB C18 MPLAB C30 MPLAB C32 PICkit 2 MPLAB ICD 2 MATLAB Live Devices, CMX, Momentum Data Systems Uniquely supporting 8, 16 and 32 bit MCUS within one integrated development Environment! Microchip Technology Taiwan Slide 155

MPLAB - ICE2000 連接 Host 到 Pod 的 Cable *Emulator Pod *Processor Module Flex Circuit Cable *Device Adapter * 每個元件可分開採購 *SOIC Transition Socket Microchip Technology Taiwan Slide 156

MPLAB ICE2000 支援所有 PICmicro MCU 系列的模擬 全速的模擬支援 Up to 25 MHz ( PIC18CXXX ) 將有支援 40 Mhz 以上的版本 支援低操作電壓環境的模擬 最低至 2.5 V 與 PC 使用 Parallel printer port 的界面 Software programmable clock ( 在 MPLAB-IDE 中可直接設定所需頻率 ) Microchip Technology Taiwan Slide 157

MPLAB ICE2000 改良甚多的 Trace 能力 可將中斷點設置於 internal registers/ram 可以 Trace internal registers/ram 32K * 128 bits Trace Buffer 以及 Logic analyzer 可記錄執行階段的時間標記 ( Time Stamp ) Four level conditional break/trace/trigger 可精確量測兩事件間的時間間隔 (Time between intervals ) Microchip Technology Taiwan Slide 158

MPLAB ICD 2 支援 FS-USB 介面 支援 PIC16F 裡具有 ICD 功能之 MCU 的除錯 支援 PIC18F, PIC24, dspic30,dspic33 & PIC32 可設定中斷點, 單步執行以及進行變數的觀察 32K Bytes (PIC18F4520) 的程式可於 3 秒內燒錄完成 Microchip Technology Taiwan Slide 159

Real ICE 基本配備 ICE 主機 Logic Probe ICSP Cable USB Cable USB 插座 ICSP 連接板 Microchip Technology Taiwan Slide 160

傳統 ICE 技術上的瓶頸 ICE 專用晶片價格昂貴 量少, 難以大量生產 需與量產元件同步上市, 困難度高 信號傳輸上時序與速度的誤差 CPU/ 記憶體超過 20MHz 時的存取限制 ICE 實際的線路距離與元件之間的規格差異 ICE 價格 速度越快, 價格越高 價格昂貴, 需要高速的外接硬體邏輯電路 FPGA & SRAM Microchip Technology Taiwan Slide 161

REAL ICE 功能 基本 功能 完全整合在 MPLAB IDE 的環境下 開發環境下可作為燒錄器 中斷功能 監看變數視窗功能 程式執行控制 Run Halt Single step Step into Step over Reset Microchip Technology Taiwan Slide 162

REAL ICE 進階功能 Advanced Features Breakpoints ( 軟體與硬體中斷設定 ) Stopwatch ( 程式執行計時碼表 ) Real time watch ( 即時變數觀測 ) Trace ( 追蹤 ) Program execution ( 追蹤程式執行 ) Variable values ( 追蹤變數值 ) Microchip Technology Taiwan Slide 163

REAL ICE 功能一覽表 PIC10F PIC12F PIC16F PIC18F dspic30f PIC24F PIC24H dspic33f Run, Halt Single Step Hardware Breakpoints 1 1-3 1-4 1-6 1-6 Peripheral Freeze on Halt Break on Data Fetch or Write ( ) Break on Stack Error - - - Stopwatch ( ) Pass Counter Break address or data match WDT Overflow ( ) Real Time Watch ( ) Software Breakpoints 1K 1K 1K 1K Trace Data and Program Flow Microchip Technology Taiwan Slide 164

APP001 實驗板功能 練習 PIC18F452 內部周邊的使用方法及典型的應用方式 40 Pin 的 PIC16Fxxx 與 PIC18Fxxx 腳位相容 直接與 MPLAB-ICD2 連接 可練習的主要外接電路有 : LCD Module, 按鍵處理,I 2 C EEPROM, I 2 C 溫度存取 SPI,RS-232, RS-485, CAN Controller AD 轉換, PWM 與 I/O 控制 WORKSHOP 400 使用的主要資源 PORTD 用以控制 8 個獨立的 LED RA0 : 使用於讀取可變電阻的電位值 (AN0) RA4 & RB0 : 使用於按鍵控制 (SW3 & SW2) Microchip Technology Taiwan Slide 165

使用 MPLAB IDE v8.xx Microchip Technology Taiwan Slide 166

安裝 MPLAB IDE V8.xx 安裝 MPLAB IDE v8.xx 之前已有安裝舊版的 MPLAB IDE, 需先移除 別忘了, 還要安裝 ICD2 的 USB 驅動軟體 C:\Program Files\Microchip\MPLAB IDE\ ICD2\Drivers\clnicd2.htm 裡的說明 如果有使用 ICE2000 還要再安裝驅動程式 C:\Program Files\Microchip\MPLAB IDE\ ICE 2000\Drivers\DDINSTXP.HTM 裡的說明 Microchip Technology Taiwan Slide 167

MPLAB IDE 畫面 工具圖示區 C 的原始程式 工作項目 設定中斷點 編譯輸出 暫存器顯示 變數觀察視窗 Microchip Technology Taiwan Slide 168 狀態顯示列

專案管理 ( Project Management ) MPLAB IDE 是採專案管理方式來完成軟體研發與設計, 所以在使用 MPLAB IDE 時, 就必需建立一個 Project Project 的附加檔案名稱是 xx.mcp, 最好與原始檔案放在同一個目錄以方便管理 一個 Project 可記錄眾多資訊 : 視窗位置 大小大小 個數 相關檔案的名稱 位置 相關偵錯訊息的設定值 組譯器 編譯器的選擇與設定 以 Project 觀念來保持一個完整的軟體設計, 以便日後程式的維護 修改修改 Microchip Technology Taiwan Slide 169

練習 : 建立新的專案 ( Project ) 執行 MPLAB IDE, 將顯示一初始的空白桌面 Microchip Technology Taiwan Slide 170

使用 Configure Select Device 來指定 MCU 為 PIC18F452 練習 : 建立新的專案 目前所選擇的元件所支援的燒錄器 目前所選擇的元件所支援的發展工具 Microchip Technology Taiwan Slide 171

練習 : 建立新的專案 使用 Configure Configuration Bits 來設定 IC 運作模式 除 Background Debug 設定為 Enabled 以便使用 MPLAB ICD 2 其他選項, 均設為 Disable Microchip Technology Taiwan Slide 172

練習 : 建立新的專案 使用 Project Project Wizard 來建立一新的 Project 元件的輸入方式可直接輸入或點選 Microchip Technology Taiwan Slide 173

練習 : 建立新的專案 設定語言工具 也可以在 Project Set Language Toolsuite 來設定使用 MPASM 來組譯 設定語言工具執行路徑 也可以用 Project Set Language Tool locations 來確定相關程 式所執行的位置 Microchip Technology Taiwan Slide 174

練習 : 建立新的專案 建立 Project 裡的 source code 及工作目錄 輸入專案名稱 Ex1.mcp 用 Browse 來指定目錄 Microchip Technology Taiwan Slide 175

練習 : 建立新的專案 加入 source code 到 Project 的工作目錄 Microchip Technology Taiwan Slide 176

練習 : 建立新的專案 Project 建立完成, 請在確認設定是否正確 Microchip Technology Taiwan Slide 177

練習 : 加入原始檔案方式 將滑鼠指到 Source Files 並按下滑鼠的右鍵 MPLAB IDE 將要求您加入檔案 Microchip Technology Taiwan Slide 178

練習 : 建立資料庫來源位置 Microchip Technology Taiwan Slide 179 使用 Project Build Options Project 啟動輸入視窗 該視窗是輸入資料庫 含入檔及連結描述檔的路徑位置, 一般是使用 C 語言及多檔案的組合語言才需要輸入 使用單一組合語言者無需輸入路徑資料

練習 : 組譯程式 使用 Project Build All 或 Ctrl+F10 來組譯程式 組譯成功 Microchip Technology Taiwan Slide 180

啟動基本 MPLAB-SIM 點選 Debugger Select Tool MPLAB SIM 以啟動內建的軟體模擬程式 Microchip Technology Taiwan Slide 181

MPLAB SIM 的基本除錯功能 Make Project 執行 單步執行 Reset Build All 停止 Step Over 利用 mouse 的右鍵來設定中斷點 利用 Stopwatch 視窗來量測程式執行所需的時間 Microchip Technology Taiwan Slide 182

Watch Window 的重要性 變數在 RAM 的位置是誰安排的 你知道怎樣才能看到變數的內容 MPLAB IDE 有專屬的變數觀察視窗 變數位置 變數名稱 變數內容 Microchip Technology Taiwan Slide 183

編譯程式與除錯 利用 Build All (Ctrl + F10) 來編譯程式 如有錯誤, 請參考錯誤訊息並加以修正 在錯誤訊息處按滑鼠兩次即能輕易切換至錯誤行 利用 Watch Window 來觀察變數 利用 Mouse 的右鍵來設定中斷點 熟悉 Reset,Run,Halt 功能 Step,Step Over 功能 RAM,SFR 視窗在組合語言下就不是那麼重要了? 其它的視窗可在 view 下開啟 Microchip Technology Taiwan Slide 184

使用 MPLAB ICD2 除錯 Microchip Technology Taiwan Slide 185

全速執行 單步執行 MPLAB-ICD2 功能 單 / 多點硬體中斷 變數觀察, 原始程式除錯等級 快速載入程式到模擬元件 可當模擬元件的燒錄工具 工作電壓 : 2.5V to 5.5V 頻率範圍 ; 32KHz to 40MHz RS-232 或 USB 介面 價格便宜 Microchip Technology Taiwan Slide 186

MPLAB-ICD2 配線圖 +9V Power Supply Cable 6-pin Phone Cable ICD2 Module APP001 實驗板 USB Cable Microchip Technology Taiwan Slide 187

啟動 ICD2 點選 Debugger Select Tool MPLAB ICD2 以啟動內建的軟體模擬程式 Microchip Technology Taiwan Slide 188