官术网_书友最值得收藏!

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 位尋址示意圖

主站蜘蛛池模板: 太仓市| 正阳县| 龙州县| 招远市| 扎赉特旗| 连江县| 玛沁县| 乡城县| 安义县| 油尖旺区| 晋州市| 库尔勒市| 读书| 鄂托克前旗| 乳山市| 老河口市| 安溪县| 绍兴县| 沙河市| 始兴县| 东至县| 大新县| 阜新市| 汝城县| 驻马店市| 福海县| 洮南市| 德州市| 房产| 乃东县| 新安县| 葫芦岛市| 西安市| 云和县| 苗栗市| 贵定县| 基隆市| 漳州市| 炉霍县| 丰宁| 吕梁市|