- PIC單片機常用模塊與綜合系統設計實例精講
- 夏彬彬 任明全 屈金學編著
- 961字
- 2019-01-01 14:12:25
3.4 尋址方式
由于PIC單片機采用了精簡指令集結構,相對于其他同類采用復雜指令集的單片機,其尋址操作就得到了極大的簡化。根據數據的來源不同,為PIC單片機設計了4種不同的尋址方式:立即尋址、直接尋址、寄存器間接尋址和位尋址。其中,位尋址是PIC單片機獨具特色的一類尋址方式,它使編程變得更加靈活,可操作性更強。
1.立即尋址
在立即尋址方式下,實際的操作數可以從指令碼中直接獲得,立即尋址也因此而得名。
例:ANDLW 0FH
其功能為:將立即數0FH與W寄存器的內容(假設為39H)做“與”運算,結果(09H)送到W。其指令碼的二進制形式為:11100100001111,其中前6位是指令碼,后8位是操作數,如圖3-3所示。

圖3-3 立即尋址示意圖
2.直接尋址
直接尋址方式在指令中直接給出操作數所在的寄存器地址,可以是專用寄存器,也可以是通用寄存器。
例: ANDWF 20H,1
其功能為:將地址為20H的RAM單元的內容(假設是0FH)與W的內容(假設是39H)做“與”運算,由于d=1,因此結果(09H)送入到地址為20H的寄存器單元中,而不是W寄存器中。參加邏輯“與”運算的一個數據(0FH)所在的單元地址(20H),可以從指令中直接得到,如圖3-4所示。

圖3-4 直接尋址示意圖
3.寄存器間接尋址
在寄存器間接尋址方式下,指令中的寄存器必須是0單元,這是特指INDF單元,但在物理上并不存在這個寄存器單元,只不過在指令系統中做此規定以方便尋址。INDF只是在指令形式上的一個反映,實際上寄存器間接尋址是對FSR寄存器進行讀寫的。FSR寄存器的地址為04H,FSR寄存器中存放的就是操作數地址。但在另一種情況下,FSR還可作為普通寄存器訪問,即直接訪問04H單元,而不是通過訪問00H單元進而間接地訪問FSR中存放的間接尋址地址。
例1:INDF 04H,1
其功能為:將04H單元(FSR寄存器)中的數據加1后再存入04H單元。
例2:ANDWF 0,1
其功能為:將地址為20H的RAM單元的內容(假設是0FH)與W的內容(假設是39H)做“與”運算,結果(09H)送入地址為20H的寄存器單元中。由于寄存器地址20H是存放在FSR中的,因此對20H單元進行訪問也是通過FSR,寄存器間接尋址也因此而得名,如圖3-5所示。

圖3-5 寄存器間接尋址示意圖
4.位尋址
PIC單片機不僅可以對寄存器某一單元進行尋址,還可以直接對寄存器中的某一位進行操作,包括判斷其是否為0或是否為1,對其進行置零或置1操作。這使得編程變得更加靈活。
例: BSF 20H,7
其功能為:把地址為20H的寄存器單元內的bit7置為1,如圖3-6所示。

圖3-6 位尋址示意圖