这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » PIC单片机指令系统及设计

共1条 1/1 1 跳转至

PIC单片机指令系统及设计

高工
2013-10-25 15:56:20     打赏

1.空操作指令 NOP

此指令起到单纯的延时,延长一个指令周期,不进行任何操作

2.寄存器传送指令 MOVWF f

此指令作用为将W寄存器中的数据放到F寄存器

例: MOVLW 10 (将立即数10放入 W寄存器)

MOVWF 11 (将W寄存器中的数据放入F11寄存器中)

可能原来使用51系列单片机的朋友看这些程序有点别扭,呵呵,我就有点别扭,

但理解起来应该并不困难

3.清工作寄存器W CLRW

此语句需要一个指令周期,作用让W=0,影响状态寄存器Z标志位,W清0则Z为1

状态寄存器F3各位定义:

D7 D6 D5 D4 D3 D2 D1 D0

PA2 PA1 PA0 TO PD Z DC C

(1)C志位既为进位/借位标志 ,当两个数相加时产生了进位则C=1反之C=0此处跟

51系列单片机汇编没有什么区别,但当两个数相减的时候如果得到的数据为负,也就

也就是说产生了借位则C=0,反之C=1这是与51系列单片机不同之处。

(2)DC位为半进位标志。当进行减法或者加法的时候低四位操作产生进位的时候则

DC=1

(3)这是0标志,在算术逻辑操作结果为0的时候 Z=1

(4)PD位为低功耗标志,在上电或者执行CLRWDT时候,此位为1,当执行SLEEP指令的

时候此位为0

(5)TO位是WDT超时标志,当上电或者执行CLRWDT,SLEEP指令的时候该位为1,当

WDT超时的时候此位为0

(6)PA0和PA1可读可写,可以通过他的设置来选择程序存储器的页面

(7)PA2为保留位

4.清数据寄存器 CLRF f,d

清理寄存器F(f)为0 当d=1的时候只清除F(f),当d=0的时候同时清除W寄存器

例: CLRF 11,1 (F11=0 W寄存器数据不改变)

CLRF 11,0 (F11=0,W=0)

此指令为单周期指令,其实PIC里的大多数汇编指令都是单周期指令,只有CALL和

GOTO指令需要两个周期

5。寄存器相减 SUBWF f,d

例: MOVLW 10

MOVWF 11

MOVLW 12

SUBWF 11,1

此程序的意思就是将W寄存器中先放入10,然后将W中的数据放在F11数据寄存器中

然后再向W寄存器中放12,再指令SUBWF 11,1 意思是用F11中的数减去W中的数据

然后把结果放在F11中,因为d=1 ,如果把指令换成SUBWF 11,0的话则把结果放在

W寄存器中,影响到的标志位有C ,DC,Z,关于如何影响我想就不用说了吧,前面已经

详细说明这几个位是如何改变的

6.寄存器减1 DECF f,d

将f寄存器中的数据减1然后放入d d=0的时候放入W,D=1的时候放入 f

7.寄存器或 IORWF f,d

通过前面几条指令的解释我想这个就应该很简单了,无非将W与F取或后存入D

8寄存器与 ANDWF f,d

9.寄存器异或 XORWF f,d

10,寄存器相加 ADDWF f,d

11,寄存器传送 MOVF f,d

将F(f)中的数据放入d,当为1时,F(f)将数据从新放入自身,如果d=0则将F中的数据

放入W寄存器。

12,寄存器取反 COMF f,d

13,寄存器加1 INCF f,d

14,减1为0跳转 DECFSZ f,d

例:MOVLW 55H

MOVWF 10

LOOP:DECFSZ 10,1 (如果F10减1后为0的话则跳转到RETLW 0否则继续执行)

GOTO LOOP

RETLW 0

15.带进位C进行右移 RRF f,d

类似于51汇编中的带C左移功能

16,带进位C进行左移 RLF d,f

17,寄存器高低四位进行交换

SWAPF f,d

18。加1为0跳转 INCFSZ f,d

其实这个就是当f为FFH的时候翻转为00H,判断这个

以上为33条语句中的18条语句的详细解释和应用。如果大家对这些语句有什么好的

应用的话,欢迎在后面跟帖。在下一篇上再介绍其余的指令。

扩展阅读:PIC8位单片机汇编语言常用指令




关键词: 基础知识    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]