【正文】
F f,b f位置 1 BTFSC f,b f位測試 , 為 0則跳 BTFSS f,b f位測試 , 為 1則跳 SLEEP 進(jìn)入低功耗休眠模式 CLRWDT 清看門狗 RETLW k W帶立即數(shù)返回 RETFIE 中斷返回 RETURN 子程序返回 CALL k 調(diào)用子程序 GOTO k 強(qiáng)行跳轉(zhuǎn) (k為 9位地址描述 ) MOVLW k W置立即數(shù) IORLW k W和立即數(shù)邏輯或 ADDLW k W和立即數(shù)相加 SUBLW k 立即數(shù)減去 W ANDLW k W和立即數(shù)邏輯與 XORLW k W和立即數(shù)邏輯異或 字節(jié)操作 位操作 立即數(shù)和控制操作 f = 寄存器 , k = 立即數(shù) (8位 ), b = 位地址 0,7, d = 目的地 (1=f, 0=W) 第 3頁 PIC指令集核心 助記符 助記符 功能說明 助記符 功能說明 ADD 加 MOV 移動 SUB 減 RL 左移 AND 與 RR 右移 IOR 或 CLR 清空 XOR 異或 COM 取反 INC 加一 RET 返回 DEC 減一 BTF 位測試 第 4頁 指令系統(tǒng)字符說明 字符 功能說明 字符 功能說明 W 工作寄存器 FSZ Skip if Zero f 文件寄存器 FSC Skip if Carry b 位 FSS Skip if Set K ( ) L 立即數(shù) (( )) d 方向 傳輸方向 第 5頁 1 21 典型指令分析 MyVar MOVF MyVar,W INCF MyVar,F W or WREG File Registers MOVWF MyVar 21 立即數(shù) MOVLW 1 第 6頁 PICmicro 單片機(jī)指令集 字節(jié)操作 14位內(nèi)核之字節(jié)操作指令構(gòu)成 操作碼 d f f f f f f f d = 目的地標(biāo)志位 d = 0 結(jié)果送 W d = 1 結(jié)果送 f f = 7位寄存器地址 例如 : ADDWF REG, W ADDWF f, d NOP MOVWF f CLRW CLRF f SUBWF f,d DECF f,d IORWF f,d ANDWF f,d XORWF f,d ADDWF f,d MOVF f,d COMF f,d INCF f,d DECFSZ f,d RRF f,d RLF f,d SWAPF f,d INCFSZ f,d 字節(jié)操作指令 第 7頁 PIC單片機(jī) 指令集 位操作 14位內(nèi)核之位操作指令構(gòu)成 OP CODE b f f f f f f f b = 3Bit Address (Bit Number) f = 7bit Register Address b b Example: BTFSC STATUS, C BTFSC f, b BCF f,b BSF f,b BTFSC f,b BTFSS f,b 位操作 第 8頁 k 14位內(nèi)核之立即數(shù)操作指令構(gòu)成 OP CODE k k k k k k k k = 8bit Immediate Value 例 : MOVLW 0x2F MOVLW k MOVLW k IORLW k ADDLW k SUBLW k ANDLW k XORLW k 立即數(shù)操作 PIC單片機(jī) 指令集 立即數(shù)操作 第 9頁 k 14位內(nèi)核之 RETLW指令構(gòu)成 OP CODE k k k k k k k k = 8bit Immediate Value SLEEP CLRWDT RETLW k RETFIE RETURN CALL k GOTO k 控制類操作 14位內(nèi)核之 CALL /GOTO指令構(gòu)成 OP CODE k = 11bit Immediate Value k k k k k k k k k k k PIC單片機(jī) 指令集 控制類操作 第 10頁 ?數(shù)據(jù)傳送類指令 4 條 ?算術(shù)運(yùn)算類指令 6 條 ?邏輯運(yùn)算類指令 14 條 ?控制轉(zhuǎn)移類指令 11 條 PIC16F877指令集的 35條指令按 操作碼 的類別分為四類指令 第 11頁 數(shù)據(jù)傳送類指令 助記符 操作說明 影響狀態(tài)位 MOVF f , d f傳送到 W 或 f Z MOVWF f W傳送到 f MOVLW K 立即數(shù) K送 W SWAPF f,d 交換 f的高低 4位 第 12頁 程序舉例 ?例 編程將立即數(shù) 20H傳送到通用寄存器 20H中 MOVLW 20H MOVWF 20H 第 13頁 MOVF 20H,W MOVWF 40H MOVF 30H,W MOVWF 20H MOVF 40H,W MOVWF 30H ? 例 編程將通用寄存器 20H和 30H中的內(nèi)容進(jìn)行交換 第 14頁 算術(shù)運(yùn)算類指令 助記符 操作說明 影響狀態(tài)位 ADDWF f , d W+f?f / W Z SUBWF f , d fW?f / W C、 DC、 Z ADDLW K K+W?W C、 DC、 Z SUBLW K KW?W C、 DC、 Z INCF f , d f+1?f / W Z DECF f , d f1?f / W Z d=1,結(jié)果保存在 f中, d=0,結(jié)果保存在 w中 第 15頁 助記符 操作說明 影響狀態(tài)位 CLRF f f清零 Z CLRW W清零 Z CLRWDT WDT清零 T0、 PD BCF f , b f的 b位清零 BSF f , b f的 b位置 1 RLF f , d f和 C循環(huán)左移 C RRF f , d f和 C循環(huán)右移 C 邏輯運(yùn)算類指令 1 第 16頁 助記符 操作說明 影響 狀態(tài)位 ANDWF f , d f 按位與 W?f/W Z IORWF f , d f 按位或 W?f/W Z XORWF f , d f 按位異或 W?f/W Z ANDLW K K按位與 W?W Z IORLW K K按位或 W?W Z XORLW K K按位異或 W?W Z COMF f , d f按位取反 ?f/W Z 邏輯運(yùn)算類指令 2 第 17頁 控制轉(zhuǎn)移類指令 1 助記符 操作說明 影響狀態(tài)位 CALL K 調(diào)用子程序 K為標(biāo)號 GOTO K 跳轉(zhuǎn)到標(biāo)號 K INCFSZ f , d f+1為 0間跳 Z DECFSZ f , d f1為 0間跳 Z BTFSC f , b f的 b位為 0間跳 BTFSS f , b f的 b位為 1間跳 第 18頁 助記符 操作說明 影響狀態(tài)位 RETURN 子程序返回 RETLW K 子程序帶立即數(shù)返回 RETFIE 中斷程序返回 GIE NOP 空操作 SLEEP 系統(tǒng)休眠 TO、 PD 控制轉(zhuǎn)移類指令 (續(xù) ) 第 19頁 指令流水線 ?由于 PIC 單片機(jī)的系統(tǒng)結(jié)構(gòu)采用“哈佛”結(jié)構(gòu),使得在一條指令被執(zhí)行的同時讀取下一條指令成為可能,這就是 PIC 單片機(jī)的指令執(zhí)行流水線概念。 第 20頁 ?例 編程將通用寄存器 20H存入立即數(shù)0FH,把 20H的數(shù)據(jù)與立即數(shù) 24H相“與”后,結(jié)果存入通用寄存器 40H中。 設(shè)置為 0表示輸出 端口的輸入輸出控制 例:將 RA4/T0CKI引腳設(shè)置為輸入狀態(tài) BSF STATUS,RP0 BSF TRISA,4 第 23頁 例:將 RB0/INT引腳設(shè)置為輸入狀態(tài) BSF STATUS,RP0 BSF TRISB,0 例:將端口 C的低四位設(shè)置為輸出 、 高四位設(shè)置為輸入 BSF STATUS,RP0 MOVLW 0F0H MOVWF TRISC 第 24頁 例:從端口 C的低四位引腳輸出高電平 、 高四位引腳輸出為低電平 BSF STATUS,RP0 MOVLW 0 MOVWF TRISC MOVLW 0FH MOVWF PORTC