PIC單片機(jī)指令系統(tǒng)及設(shè)計(jì)
1.空操作指令 NOP
此指令起到單純的延時(shí),延長一個(gè)指令周期,不進(jìn)行任何操作
2.寄存器傳送指令 MOVWF f
此指令作用為將W寄存器中的數(shù)據(jù)放到F寄存器
例: MOVLW 10 (將立即數(shù)10放入 W寄存器)
MOVWF 11 (將W寄存器中的數(shù)據(jù)放入F11寄存器中)
可能原來使用51系列單片機(jī)的朋友看這些程序有點(diǎn)別扭,呵呵,我就有點(diǎn)別扭,
但理解起來應(yīng)該并不困難
3.清工作寄存器W CLRW
此語句需要一個(gè)指令周期,作用讓W(xué)=0,影響狀態(tài)寄存器Z標(biāo)志位,W清0則Z為1
狀態(tài)寄存器F3各位定義:
D7 D6 D5 D4 D3 D2 D1 D0
PA2 PA1 PA0 TO PD Z DC C
(1)C志位既為進(jìn)位/借位標(biāo)志 ,當(dāng)兩個(gè)數(shù)相加時(shí)產(chǎn)生了進(jìn)位則C=1反之C=0此處跟
51系列單片機(jī)匯編沒有什么區(qū)別,但當(dāng)兩個(gè)數(shù)相減的時(shí)候如果得到的數(shù)據(jù)為負(fù),也就
也就是說產(chǎn)生了借位則C=0,反之C=1這是與51系列單片機(jī)不同之處。
(2)DC位為半進(jìn)位標(biāo)志。當(dāng)進(jìn)行減法或者加法的時(shí)候低四位操作產(chǎn)生進(jìn)位的時(shí)候則
DC=1
(3)這是0標(biāo)志,在算術(shù)邏輯操作結(jié)果為0的時(shí)候 Z=1
(4)PD位為低功耗標(biāo)志,在上電或者執(zhí)行CLRWDT時(shí)候,此位為1,當(dāng)執(zhí)行SLEEP指令的
時(shí)候此位為0
(5)TO位是WDT超時(shí)標(biāo)志,當(dāng)上電或者執(zhí)行CLRWDT,SLEEP指令的時(shí)候該位為1,當(dāng)
WDT超時(shí)的時(shí)候此位為0
(6)PA0和PA1可讀可寫,可以通過他的設(shè)置來選擇程序存儲(chǔ)器的頁面
(7)PA2為保留位
4.清數(shù)據(jù)寄存器 CLRF f,d
清理寄存器F(f)為0 當(dāng)d=1的時(shí)候只清除F(f),當(dāng)d=0的時(shí)候同時(shí)清除W寄存器
例: CLRF 11,1 (F11=0 W寄存器數(shù)據(jù)不改變)
CLRF 11,0 (F11=0,W=0)
此指令為單周期指令,其實(shí)PIC里的大多數(shù)匯編指令都是單周期指令,只有CALL和
GOTO指令需要兩個(gè)周期
5。寄存器相減 SUBWF f,d
例: MOVLW 10
MOVWF 11
MOVLW 12
SUBWF 11,1
此程序的意思就是將W寄存器中先放入10,然后將W中的數(shù)據(jù)放在F11數(shù)據(jù)寄存器中
然后再向W寄存器中放12,再指令SUBWF 11,1 意思是用F11中的數(shù)減去W中的數(shù)據(jù)
然后把結(jié)果放在F11中,因?yàn)閐=1 ,如果把指令換成SUBWF 11,0的話則把結(jié)果放在
W寄存器中,影響到的標(biāo)志位有C ,DC,Z,關(guān)于如何影響我想就不用說了吧,前面已經(jīng)
詳細(xì)說明這幾個(gè)位是如何改變的
6.寄存器減1 DECF f,d
將f寄存器中的數(shù)據(jù)減1然后放入d d=0的時(shí)候放入W,D=1的時(shí)候放入 f
7.寄存器或 IORWF f,d
通過前面幾條指令的解釋我想這個(gè)就應(yīng)該很簡單了,無非將W與F取或后存入D
8寄存器與 ANDWF f,d
9.寄存器異或 XORWF f,d
10,寄存器相加 ADDWF f,d
11,寄存器傳送 MOVF f,d
將F(f)中的數(shù)據(jù)放入d,當(dāng)為1時(shí),F(xiàn)(f)將數(shù)據(jù)從新放入自身,如果d=0則將F中的數(shù)據(jù)
放入W寄存器。
12,寄存器取反 COMF f,d
13,寄存器加1 INCF f,d
14,減1為0跳轉(zhuǎn) DECFSZ f,d
例:MOVLW 55H
MOVWF 10
LOOP:DECFSZ 10,1 (如果F10減1后為0的話則跳轉(zhuǎn)到RETLW 0否則繼續(xù)執(zhí)行)
GOTO LOOP
RETLW 0
15.帶進(jìn)位C進(jìn)行右移 RRF f,d
類似于51匯編中的帶C左移功能
16,帶進(jìn)位C進(jìn)行左移 RLF d,f
17,寄存器高低四位進(jìn)行交換
SWAPF f,d
18。加1為0跳轉(zhuǎn) INCFSZ f,d
其實(shí)這個(gè)就是當(dāng)f為FFH的時(shí)候翻轉(zhuǎn)為00H,判斷這個(gè)
以上為33條語句中的18條語句的詳細(xì)解釋和應(yīng)用。如果大家對這些語句有什么好的
應(yīng)用的話,歡迎在后面跟帖。在下一篇上再介紹其余的指令。
擴(kuò)展閱讀:PIC8位單片機(jī)匯編語言常用指令
編輯:admin 最后修改時(shí)間:2018-05-19