PIC单片机常用模块与综合系统设计实例精讲
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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 位寻址示意图