PIC中檔單片機彙編指令詳解(1)

NOP 空操做指令語法

語法形式:NOP數據

操做數:無端口

執行時間:一個指令週期時間

執行過程:除了消耗一個指令週期以外,無任何其餘影響,因此一般被用來做爲延時使用

狀態標誌影響:無

說明:指令操做沒有任何操做數參與,也不影響任何寄存器的內容和狀態,因此一般都是被做爲延時使用的。

指令範例:BSF PORTB,0 ;PORTB的第0位輸出高電平(1)

          NOP ;延時,使電平穩定

MOVWF 將W寄存器的內容傳送到數據寄存器

語法形式:MOVWF f

操做數:f爲數據寄存器的低7位地址(0x00~0x7F)

執行時間:一個指令週期

執行過程:把W寄存器的內容傳送到f數據寄存器,W寄存器的內容保持不變,相似於Copy

狀態標誌影響:無

說明:該指令是對數據寄存器賦值的主要方式

指令範例:

MOVLW 0x55 ;W寄存器賦值

MOVWF Data ;W寄存器值傳送給Data

;此時Data=0x55

CLRW W寄存器內容清0

語法形式:CLRW

操做數:無

執行時間:一個指令週期

執行過程:0x00→W

1→Z

狀態標誌影響:Z

說明:該指令對W寄存器內容清零,並置位0標誌Z

另外使用MOVLW 0x00也能夠使W寄存器內容爲0,可是這條指令不影響0標誌Z

指令範例:CLRW ;W=0,Z=1

CLRF 數據寄存器內容清零

語法形式:CLRF f

操做數:f爲數據寄存器的低7位地址(0x00~0x7F)

執行時間:一個指令週期

執行過程:0x00→f

1→Z

狀態標誌影響:Z

說明:指令對數據寄存器清零,並置位0標誌Z

指令範例:CLRF TRISB ;端口B全部I/O引腳設爲輸出

SUBWF 將數據寄存器的內容減去W寄存器內容

語法形式:SUBWF f,d

操做數:f爲數據寄存器的低7位地址(0x00~0x7F)

d爲目的寄存器的低7位地址(0x00~0x7F)

當d=f時,結果放在f數據寄存器,W寄存器內容不變

當d=W時,結果放在W寄存器中,數據寄存器f內容不變

執行時間:一個指令週期

執行過程:【f】-【W】→d

狀態標誌影響:Z DC C

說明:要特別注意W寄存器在這條指令中是減數

當【f】=【W】時,相減的結果爲0,則Z=1

當【f】>【W】時,沒有借位發生,則C=1

當【f】<【W】時,有借位發生,則C=0

實際上在PIC單片機中這條指令是經過先對W寄存器的內容求補碼,而後與被減數相加,因此在判斷是否有借位時和其餘單片機不一樣,請注意

指令範例:

MOVLW 0x23 ;W=0x23

MOVWF tmp ;tmp=0x23

MOVLW 0x32 ;W=0x32

SUBWF tmp,W ;tmp-W將結果存入W中,W=0xF1,tmp=0x23

;過程:tmp=0x23,W求補碼爲0xCD,因此0x23+0xCD=0xF1,又因tmp<W,因此C=0

相關文章
相關標籤/搜索