PIC16F87X基本指令說明

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

文件名

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

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

PIC16F F MPLAB 08 16F LED 15 LED

Microsoft Word - S153B.doc

Microsoft Word new--use.doc

701PIC Introduction to PICMicro MCUs

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

Microsoft PowerPoint - 701_PIC-CHN_Attendee.ppt

33023A.book(31005A_cn.fm)

AN579

Microsoft Word - 3-1_instruction

<4D F736F F F696E74202D B5A5C6ACBBFAD3EBB5E7D7D3CFB5CDB3C9E8BCC62E707074>

什麼是 MPASM MPASM 就是 Microchip PICmicro Assembler 單一原始檔案格式 將組合語言直接翻譯成 hex 格式的機械碼 多原始檔案格式 將組合語言翻譯成 object 格式的檔案, 該檔案須經連結器 (linker) 再產生 hex 格式的機械碼 2003 Mi

目录 1. 产品简介 功能特性 引脚图 引脚描述 中央处理器 (CPU) 程序存储器 (OTP ROM) 堆栈 数据存储器 (RAM) INDF 寄存器.

<A1AAA1AA475053B4AEBFDACAFDBEDDBDD3CAD5B3CCD0F2CAB5C0FD>

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

Microsoft Word - 2CA13內文.doc

PIC8位单片机汇编语言常用指令的识读(上)

AN541

Microsoft Word - 透析8051之迴圈控制方法.doc

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

Microsoft Word 定址法實驗.doc

Microsoft Word - ISSFA-0109_B_SM59264_WDT_ APN_TC_.doc

AN510

第1章 ISIS编辑器指南

Microsoft PowerPoint - chap5.ppt

untitled

Microsoft PowerPoint - chap2.ppt

PIC PICC C 4K C <10% C PIC 11.3 MPLAB-IDE PICC PICC MPLAB-IDE MPLAB-IDE ICE2000 ICD2 PICC MPLAB-IDE IDE Project Set Language Tool Locations

Microsoft Word - 全華Ch2-05.doc

ICD ICD ICD ICD ICD

Microsoft Word - 論文終極板.doc

微處理機

学习MSP430单片机推荐参考书

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

CSU1121/2用户手册

378高雄市都市計畫說明書

名人风云录_九_.doc

AN546

Microsoft Word - 第四章.doc

2013年度西藏自治区教育厅

實用文格式大全.doc

个 小 小 的 乡 下 人 木 匠 的 儿 子, 竟 然 有 这 么 大 的 力 量 其 实 就 是 这 点, 祂 活 出 来 的 那 种 爱, 是 世 界 上 没 有 的 祂 活 出 来 的 爱 是 世 界 上 的 人 都 需 要 的, 但 却 是 人 人 在 这 个 世 界 上 都 得 不 到

薛 秦 高 继 宁 宋 明 锁 文 洪 梁 瑞 敏 贾 跃 进 内 蒙 古 自 治 区 (3 人 ) 琪 格 其 图 米 子 良 赵 震 生 辽 宁 省 (8 人 ) 田 素 琴 白 凤 鸣 肖 瑞 崇 黄 恩 申 白 长 川 杨 世 勇 李 敬 林 王 秀 云 吉 林 省 (5 人 ) 赵 继 福

PowerPoint Presentation

Microsoft PowerPoint - chap12.ppt

Microsoft Word - DataStruct-981.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式]

Microsoft Word - PLC與GP接線說明_缺WDH_2.doc

PowerPoint 簡報

ex

<4D F736F F D20AC4FBDBDA4FBB67DA96CAABA2DA743A67EAFC5AAA95FA7B9BD5A5F2E646F63>

(Microsoft Word - Motion Program \270\305\264\272\276\363 \307\245\301\366 \271\327 \270\361\302\367.doc)

慈禧太后

PICkit2 LPC

6-1-1極限的概念

xueshu004.doc

79 SZ/SH/SM ONOFF SET/RST SZSHSM SET SET RST RESET ( ) ( ) SET XXXX SET XXXX XXXX RST XXXX RST XXXX XXXX 1(2) SZ3 SZ4 SH SM I000~I177 I000~I477 I000~I

Microsoft Word 箕æ−¥ï¼‹å®ı稿;

98年度即測即評學科測試與即測即評即發證技術士技能檢定簡章

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

41213C.book

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

33023A.book(31006A_cn.fm)

2 PIC PIC 1 / CPU PIC MCU PIC RC

序 文 藝 社 (Society of Chinese Literature) 在 去 年 暑 假 開 始 籌 措 成 立, 二 零 一 三 年 九 月 正 式 展 開 所 有 活 動 文 藝 社 成 立 的 目 的 旨 在 讓 學 生 學 習 欣 賞 歷 代 名 篇 名 作, 其 中 以 古 典

(Microsoft Word - \277\357\262\325\252\272\246\322\266q.doc)

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

秘密大乘佛法(下)

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

Page 2 of 12

Microsoft Word - Sunday

鎶ョ焊0

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

Microsoft PowerPoint - 使用 Word 編輯與排版文件 (II).ppt

第一章

Microsoft PowerPoint - chap4.ppt

00513D_CN.FM

資料轉移、定址、算術 Data Transfer, Addressing, and Arithmetic

untitled


章節

Table of Contents

第一章 緒論

(Microsoft Word \245\277\244\361\273P\244\317\244\361.doc)

圖 1. PIC16F877 接腳說明 ( 圖片來源 :Microchip PIC16F87X Data Sheet) PIC16F877 屬於閃控式 (Flash) 單晶片, 可以重複燒錄, 其 ROM 的容量總共是 8K words, 以 2K 為一個 page, 區分為 4 個 pages;


<4D F736F F D20AA69AD59ABC2A4BDA571B6C5B56FA6E6A4CEB56FA6E6A4CEC2E0B4ABBFECAA6B >

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt

untitled

Microsoft PowerPoint - C15_LECTURE_NOTE_04.ppt


KV-HS38/HS34/HS29M90

以前三星手机自带游戏三星e258游戏 三星e258手机报价 诺基亚手机大全

Transcription:

PIC16F87X 基本指令說明 ADDLW K 是 Add Literal and W 縮寫,ADDLW K 此指令是將 W 的內容與數值 K 相加, 並將加完結果存於 W 內 即 (W)+K (W) 例 :W=0X11,K=0X15, 執行 ADDLW K 之後, 結果為 W=0X26,K=0X15 ADDWF 是 Add W and f 縮寫,ADDWF F,d 此指令是將 W 之內容與 RAM(file) 之內容相加, 並 將加完結果存於 W 或 RAM 內, 由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W 例 :W=0X11,KKK=0X15, 執行 ADDWF KKK,W 則 W=0X26,KKK=0X15 ANDLW 是 AND Literal with W 縮寫 ANDLW K 此指令是將 W 之內容與數值 K 作邏輯的 AND 運算, 並將結果存在 W 內 * 如果需將某個埠部份輸出清除為 0, 同時又需維持其他輸出 狀態不變時, 可用 AND 運算來完成 * 例 :W=0X11,K=0X15, 執行 ANDLW K 之後, 結果為 W=B 00010001,K=0X15 ANDWF 是 AND W with F 縮寫 ANDWF F,d 此指令是將 W 之內容與 RAM(file) 之內容 作 AND 的邏輯運算, 並將結果存於 W 或 RAM 內由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W 例 :W=0X11,KKK=0X15, 執行 ANDWF KKK,F 之後, 結果為 W=0X11,KKK=0X11 BCF 是 BIT CLEAR F 縮寫 BCF F,b 是將 RAM(file) 內的第 b 個 BIT 清除為 0 例 :KKK=0X15=B 00010101, 執行 BCF KKK,2 後,KKK=B 00010001 BSF 是 BIT SET F 縮寫 BCF F,b 是將 RAM(file) 內的第 b 個 BIT 設為 1 例 :KKK=0X15=B 00010101, 執行 BSF KKK,6 後,KKK=B 01010101 BTFSS 是 BIT TEST F, SKIP IF SET 縮寫 BTFSS F,b 此指令是將 RAM(file) 中第 b 個 BIT 做檢查 若第 b 個 BIT 為 1, 則將跳過接下來的一個指令, 才繼續執行 (2us 時間 ) 若 b 為 0, 則繼續往下執行, 不做任何執行順序的改變 (1us 時間 ) 例 :KKK=B 00010101 BTFSS KKK,2 ;;; 判斷 KKK=B 00010101 第 2 個 BIT 是否為 1 GOTO T1 GOTO T2 ;;; 因為 KKK 第 2 個 BIT 為 1, 故執行 GOTO T2 這一行 BTFSC 是 BIT TEST F, SKIP IF CLEAR 縮寫 BTFSC F,b 是判斷 RAM(file) 中的第 b 個 BIT 是否為 0 若 b 為 0 則跳過接下來的一個指令, 才繼續執行 (2us 時間 ) 若 b 為 1, 則繼續 往下執行 (1us 時間 ) 一般可用來偵測按鍵開關是否被按 例 :PORTD,0 接一按鍵開關如圖所示, 寫一程式去判斷 按鍵是否被使用按下 PUSH_BUTTOM: BTFSC PORTD,0 GOTO PUSH_BUTTOM ;; 按鍵沒有被按, 故 PORTD,0=1 GOTO PUSH_OK ;; 繼續偵測按鍵 若按鍵被按, ;;PORTD,0=0( 接地 ), 故執行跳到 PUSH_OK 處執行 CALL 是 CALL Subroutine 縮寫 CALL K 此指令是呼叫副程式 首先將返回位址 (PC+1) 第 1 頁 R=10KΩ 5V SW PORTD,0 PIC

放到堆疊暫存內, 再將 K 所指的 11 個 BIT 立即位址放到 PC 之 0~10 BIT 中, 最後將 PCLATH 暫 存中第 3~4 BIT 載入到 PC 較高的位元組 ( 第 12 和 13 BIT) 例 : T1: CALL T1 ;;; 呼叫 T1 的副程式 ( 將下一個位址放入堆疊 ). RETURN ;;; 副程式執行完畢,RETURN 返回主程式 並將堆疊的位址填回 CLRF 是 CLEAR F 縮寫 CLRF F 是將 RAM(file) 內容清除為 0, 並將 Z 旗標設為 1 例 :KKK=0XFA, 執行 CLRF KKK 後,KKK=0X00 CLRW 是 CLEAR W 縮寫 CLRW 是將 W 內容清除為 0, 並將 Z 旗標設為 1 CLRWDT 是 CLEAR WATCHDOG TIMER 縮寫 CLRWDT 是把 看門狗計時器 的內容清 除為 0 所謂 看門狗計時器, 是 CPU 為防止本身當機而在其內部設計的一個計時器 其動 作原理主要是可以獨立計時, 不受 CPU 振盪電路的控制, 且計時終了, 會將 CPU 重置 因此, 如果看門狗計時器被啟動, 則 CPU 必須配合看門狗計時器的時間, 不斷的將計時器清除, 以 防止計時終了 而萬一 CPU 發生當機, 無法將看門狗計時器清除, 因此, 看門狗計時器會計 時終了, 而會自動將 CPU 重置 (RESET) 這就是利用看門狗計時器來防止 CPU 當機的方法 COMF 是 COMPLEMENT F 縮寫 COMF F,d 是將 RAM(file) 內容取 1 的補數 並將結果 存於 W 或 RAM 內, 由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W 例 :KKK=B 10101010, 執行 COMF KKK 後,KKK=B 01010101 DECF 是 DECREMENT F 縮寫 DECF F,d 是將 RAM(file) 之內容減 1 並將結果存於 W 或 RAM 內, 由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W 例 :KKK=0X23, 執行 DECF KKK,0,KKK=0X23, W=0X22 DECFSZ 是 DECREMENT F, SKIP IF 0 縮寫 DECFSZ F,d 是將 RAM(file) 之內容減 1, 並 檢查是否為 0, 以及將結果存於 W 及 RAM 內, 由 d 決定 若減一之後為 0, 則跳過下一行指令 (2us), 若不為 0, 則繼續執行下一行指令 (1us) 例如 :KKK=0X05 DECFSZ KKK,F ;;; 迴圈執行四次後 (1us+2us)x4, 第五次時跳到 (2us)MOVWF PORTC GOTO TEST MOVWF PORTC GOTO 是 UNCONDITIONAL BRANCH 縮寫 GOTO K 是無條件改便執行順序的指令 例 如,GOTO MAIN 就是指程式執行到指令後, 會跳到 LABEL 為 MAIN 的地方去執行 (2us) INCF 是 INCREMENT F 縮寫 INCF F,d 是將 RAM(file) 之內容加 1, 並將結果存於 W 或 RAM 內, 由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W 第 2 頁

例 :KKK=0X1B, 執行 INCF KKK,F 後,KKK=0X1C INCFSZ 是 INCREMENT F, SKIP IF 0 縮寫 INCFSZ F,d 是將 RAM(file) 之內容加 1, 並 檢查結果是否為 0, 以及將結果存於 W 或 RAM 內, 由 d 決定 而若加一的結果為 0, 則跳過下 一行指令 (2us); 若不為 0, 則執行下一行指令 (1us) 例 :KKK=0XFC INCFSZ KKK,F ;;; 對 KKK 執行加 1, 等加到 KKK=0XFF 0X00 則跳到 TEST2 執行 GOTO TEST GOTO TEST2 IORLW 是 Inclusive OR Literal with W 縮寫 IORLW K 是將 W 內容與數值 K 作邏輯的 OR 運 算, 並將結果存於 W 內 * 常用於某個埠的部份輸出設定為 1, 同時維持其他點輸出不變 例 :W=B 00101011,K=0XCD=B 11001101 執行 IORLW K 之後, W=B 11101111,K=0XCD IORWF 是 Inclusive OR W with F 縮寫 IORWF F,d 是將 W 內容與 RAM(file) 之內容作 OR 的邏輯運算, 並將結果存於 W 或 RAM 內, 由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則 結果存到 W 例 :W=B 00101011,KKK=0XCD=B 11001101 執行 IORWF K 之後, W=B 00101011,KKK=B 11101111 MOVF 是 MOVE F 縮寫 MOVF F,d 是將 RAM(file) 內容複製搬移 至於搬移複製到那裡, 則由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W 特別注意 : 當 d=1 時, 其實 並沒有改變 RAM 的內容 只是藉由此指令使 CPU 知道 RAM 的內容是否為零, 因此常被用來作 為測試 RAM 的內容是否為 0 之用 例 :KKK=0X22 (1) MOVF KKK,1 ;;; 測試 KKK 是否為 0, 不改變 KKK 的值 (2) MOVF KKK,0 ;;; 將 KKK 的內容, 複製移到 W 所以 W=KKK=0X22 MOVLW 是 Move Literal to W 縮寫 MOVLW K 將數值 K 存放於 W 內 *MOVLW 不影響任何旗標 * 例 : 如果要讓變數 XXX=6 用組合語言寫法為 MOVLW.6 ;;; 將 6 移到 W 暫存器 MOVWF XXX ;;; 再將 W 暫存器之值 6 移到 ( 複製 )XXX 所以 XXX=6 MOVWF 是 Move W to f 縮寫 MOVWF F 是將 W 的內容複製到 RAM(file) 內 特別注意 :MOVWF F,f 或 MOVWF F,w 這樣寫法是錯誤的 *MOVWF 不影響任何旗標 * 例 :W=B 11110101 執行 MOVWF PORTC 則 PORTC=B 11110101 NOP 是 No Operation 縮寫 此指令是要 CPU 什麼事都不要做, 只要消耗一個指令週期的時間 RETFIE 是 Return From Interrup 縮寫 此指令是中斷副程式的結尾所必須的指令, 意思要結束中斷副程式, 返回當初被中斷的地方, 並且重新啟動中斷的功能 (PIC 中斷在 0x04) RETLW 是 Return with Literal in W 縮寫 RETLW K 通常與 CALL 合用, 是查表副 第 3 頁

程式的結尾所必須指令之一 例 :KKK=0X01 MOVF KKK,W ; CALL TABLE MOVWF PORTC ;;;PORTC=0X11 ;;; 將要查表第幾筆的值給 W(W=1) ;;; 呼叫 TABLE 的表, 並將 0X11 值載入 W 內 TABLE: ADDWF PCL,F ;;; 查表的第一行, 需改變 PCL 的指標位置 RETLW 0X10 ;;; RETLW 0X11 ;;; 將 0X11 存放在 W 內, 返回主程式 RETURN 是 Return from Subroutine 縮寫 RETURN 是要結束副程式, 並返回至呼叫處的指 令 其與 RETLW 是同類指令, 只是 RETURN 只有返回並不會改變 W 內的值 而 RETLW 不但 返回, 並且改變 W 內容之值 RLF 是 Roate Left f through Carry 縮寫 RLF f,d 是將 RAM(file) 之內容及進位旗標左 旋 而旋轉完結果存放位置由 d 決定 若 d=1, 則結果存到 RAM(file) 若 d=0, 則結果存到 W 例 : 若 KKK=B 01010101,C=1 時 C=1 0 1 0 1 0 1 0 1 執行 RLF KKK,f, 結果如下 C=0,KKK=B 10101011 C=0 1 0 1 0 1 0 1 1 RRF 是 Rotate Right f through Carry 縮寫 RRF f,d 是將 RAM(file) 之內容及進位旗標右旋 而旋轉完結果存放位置由 d 決定 若 d=1, 則結果存到 RAM(file) 若 d=0, 則結果存到 W 例 :KKK=B 01010101,C=1 時, C=1 0 1 0 1 0 1 0 1 執行 RRF KKK,f 後, 結果如下 KKK=B 10101010,C=1 C=1 1 0 1 0 1 0 1 0 SLEEP 是要 CPU 進入省電模式 (POWER DOWN MODE) SUBLW 是 Subtract W from Literal 縮寫 SUBLW K 是先將 W 之內容取 2 的補數後, 再與數值 K 相加, 並將加完結果存於 W 內 **W=K-W,W 只能當減數 ** 第 4 頁

例 :W=H 23,K=H 3A 執行 SUBLW K 之後, 即 K W W=H 17 SUBWF 是 Subtract W from f 縮寫 SUBWF f,d 是先將 W 之內容取 2 的補數後, 再與 RAM(file) 的內容相加, 並將加完結果存於 W 或 RAM(file) 內則由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W SWAPF 是 Swap Nibbles in f 縮寫 SWAPF f,d 是將 RAM(file) 之內的高位元組 ( 第 4~7BIT) 與低位元組 ( 第 0~3 位元 ) 作互換, 並將互換結果存於 W 或 RAM(file) 內則由 d 決定 若 d=1, 則 結果存到 RAM 若 d=0, 則結果存到 W 由於 SWAPF 並不影響任何旗標, 適合做 STATUS 資料 或重要資料需在中斷時的備份使用 例 :STATUS=H A3 =B10100011, W=H 23 =B 00100011, STATUS_TEMP=H 00 EX: ORG 0X04 SWAPF STATUS,W ;;; 中斷副程式的 0X04 向量位置 ;;; 執行程式之後,STATUS=H A3,W=H 3A MOVWF STATUS_TEMP ;;;STATUS_TEMP=H 3A ;;; 將 STATUS 資料還原的方法 SWAPF STATUS_TEMP,W ;;; 再進行交換一次,STATUS_TEMP=H 3A,W=H A3 MOVWF STATUS.. RETFIE ;;; 再將結果複製到 STATUS,STATUS=H A3 ;;;; 中斷副程式返回指令 XORLW 是 Exclusive OR Literal with W 縮寫 XORLW K 是將 W 的內容與數值 K 作互 斥或 (XOR) 運算, 並將結果存於 W 內 例 :W=B 10101111, K=B 10100000 XORLW B 10100000 結果 :W=B 00001111 XORWF 是 Exclusive OR W with F 縮寫 XORWF f,d 是將 W 的內容與 RAM(file) 作互斥 或 (XOR) 運算, 並將結果存於 W 內或 RAM 內, 由 d 決定 若 d=1, 則結果存到 RAM 若 d=0, 則結果存到 W *XORWF 指令常用於比對二個變數是否相等 若兩者相同, 則零旗標被設為 1; 反之, 兩數若不相等, 則零旗標被清除為 0 * 例 :AAA=B 00110010,KKK=B 00110010 EX: MOVF AAA,W XORWF KKK, W ;; 將 AAA 的值複製到 W,W=B 00110010 ;; 將 KKK 與 W 的內容進行互斥或比對, 由於 W=KKK BTFSC STATUS,Z ;;; 判斷 Z 旗標是否為 0 故 W XOR KKK 會使得 W=0 GOTO NON_ZERO ;;; 若不是 0, 則到 NON_ZERO GOTO ZERO ;;; 由於 W=0, 所 Z 旗標 =0, 故跳到 ZERO 處執行 第 5 頁 PIC16F87X 指令列表 W: 指 W 暫存器, 所有運算 交換 邏輯比對都和 W 暫存器有關 F: 代表 RAM(file)( 相當可讀寫的記憶體 ),

包含使用者自訂的變數或一些特殊暫存器 L: 代表數字 (Literal), 也就是常數 f 代表來源位址,d 代表目的地 址 (d=0 代表指令運算結果存到工作暫存器 W 之內,d=1 代表指令運算結果存到 RAM(File) b 代表位元 ( 對 8 位 元微處理器而言,b=0~7),k 代表常數 ( 對 8 位元微處理器而言,k=0~255 之整數, 相常於十六進位數字 H 00 ~H FF 至於影響旗標內 C 指進位旗標 (Carry Flag,STATUS,0),Z 代表零旗標 (STATUS,2),DC 則代表半 進位 (STATUS,1) ( 一 ) 位元組 (Bytes) 指令集 指令 運算元 指令說明 執行週期 影響旗標 ADDWF f,d w+f, 結果存入 d 1 C,DC,Z ANDWF f,d w and f, 結果存入 d 1 Z CLRF f 清除 f 的內容 ( 結果 f=0) 1 Z CLRW 清除 w 的內容 ( 結果 w=0) 1 Z COMF f,d 將 f 取 1 的補數, 結果存入 d 1 Z DECF f,d 將 f 減 1, 結果存入 d 1 Z DECFSZ f,d 將 f 減 1, 結果存入 d, 若結果為 0, 則跳過接下來 1(2) 的一個指令 INCF f,d 將 f 加 1, 結果存入 d 1 Z INCFSZ f,d 將 f 加 1, 結果存入 d, 若結果為 0, 則跳過接下來 1(2) 的一個指令 ( 執行下下行 ) IORWF f,d w or f, 結果存入 d 1 Z MOVF f,d 複製 f, 結果存入 d 1 Z MOVWF f 將 w 的內容複製到 f 1 NOP 不動作 ( 但會耗掉一個指令週期 ) 1 RLF f,d 將 f 的內容和 C( 進位旗標 ) 左轉一個指令 1 C RRF f,d 將 f 的內容和 C( 進位旗標 ) 右轉一個指令 1 C SUBWF f,d f-w, 結果存入 d 1 C,DC,Z SWAPF f,d 將 f 之個 / 十位互換, 不影響旗標 1 XORWF f,d w xor f, 結果存入 d 1 Z ( 二 ) 位元 (Bit) 指令集 指令 運算元 指令說明 執行週期 影響旗標 BCF f,b 將 f 的第 b 個位元清除為 0 1 BSF f,b 將 f 的第 b 個位元設定為 1 1 BTFSC f,b f 的第 b 個位元為 0 則跳到下下行指令 1(2) BTFSS f,b f 的第 b 個位元為 1 則跳到下下行指令 1(2) ( 三 ) 常數 (Literal) 與控制指令集 指令 運算元 指令說明 執行週期 影響旗標 ADDLW k w+l ( 常數 ), 結果存入 w 1 C,DC,Z ANDLW k w AND l ( 常數 ), 結果存入 w 1 Z CALL k 呼叫副程式 ( 儲存位址 ) 2 CLRWDT 清除 WDT 1 TO,PD GOTO k 改變程式之執行順序 ( 不存位址 ) 2 IORLW k w OR l ( 常數 ), 結果存入 w 1 Z MOVLW k 將 l ( 常數 ) 複製到 w 1 RETFIE 中斷副程式之 return (1 GIE) 2 RETLW k 查表之 return( 注意程式之頁數 page) 2 RETURN 一般的 return 2 SLEEP 微處理器進入省電狀態 1 TO,PD SUBLW k l ( 常數 ) w, 結果存入 w 1 C,DC,Z XORLW k w XOR l ( 常數 ), 結果存入 w 1 Z 資料來源 :PIC16F87X 微處理器技術精解 盧春林 ( 民 92) 標高電腦股份有限公司 第 6 頁