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