微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机常用指令介绍与指令功能分类表

PIC单片机常用指令介绍与指令功能分类表

时间:09-12 来源:互联网 点击:

信息只需在 errorlevel 伪指令中引用信息识别标号,并在其前面用“+”或“-”号,即代表打开或关闭这一类信息,例如:

errorlevel 0, -302, -305 显示所有信息,但不需要 302 和 305 这两类提示信息

errorlevel 1, +305 显示错误和警告信息,但同时还要关注 305 类的提示信息

#define / #undefine 例 3-04

#define 的作用是定义常数符号,即用一个符号变量替换另一个符号串或变量。被替换的可以是任意字母数字组成的符号但替换者本身不能是一个纯数字。例如:

#define DELAY_TIME 1000 定义常数符号,即用 DELAY_TIME 符号代替 1000

#define KEY1 PORTB,7 用 KEY1 符号代替端口 PORTB 的第 7 引脚 例 3-05

用#define 伪指令定义符号后,可使程序中的变量或指令变得更具实际意义,也使程序变得更易维护。

指令“btfss PORTB,7”和“btfss KEY1”在事先用了例 3-05 中的#define 后编译的结果是一样的,但明显地后者看起来更容易理解,一看就知道这是在测试编号为KEY1 的一个按键。

PIC指令功能分类表

类型 助记符 操作说明 命令说明

传 送 类 MOVF F,dF→d 将F寄存器的内容传送到F本身(d=1)或W(d=0)(影响状态位)Z

MOVWF FW→F 将W寄存器的内容传送到F,W内容不变-

MOVLW KK→W 将8位立即数传送到W寄存器-

SWAPF F,dF半字节交换→dF寄存器的高4位和低4位交换位置后,结果存入F本身(d=1)或W(d=0)中-

算 术 运 算 类 ADDWF F,dF+W→dW寄存器的内容和F寄存器的内容相加,结果存入F(d=1)或W(d=0)中C,DC,Z

ADDLW F,dK+W→WW寄存器的内容和8位立即数相加,结果存入WC,DC,Z

INCF F,dF+1→dF寄存器的内容加1后,结果存入W(d=0)或F(d=1)中Z

SUBWF F,dF-W→dF寄存器的内容减去W寄存器的内容,结果存入W(d=0)或F(d=1)中C,DC,Z

SUBLW KK-W→W8位立即数减掉W寄存器的内容,结果存入WC,DC,Z

DECF F,dF-1→dF寄存器的内容减1后,结果存入W(d=0)或F(d=1)中Z

逻 辑 运 算 类 ANDWF F,dF∧W→dW寄存器的内容和F寄存器的内容相与,结果存入F(d=1)或W(d=0)中Z

ANDLW KK∧W→WW寄存器的内容和8位立即数相与,结果存入WZ

IORWF F,dF∨W→dW寄存器的内容和F寄存器的内容相或,结果存入F(d=1)或W(d=0)中Z

IORLW KK∨W→WW寄存器的内容和8位立即数相或,结果存入WZ

XORWF F,dF⊕W→dW寄存器的内容和F寄存器的内容相异或,结果存入F(d=1)或W(d=0)中Z

XORLW KK⊕W→WW寄存器的内容和8位立即数相异或,结果存入WZ

COMF F,dF取反→dF寄存器的内容取反后,结果存入F(d=1)或W(d=0)中Z

CLRF F0→F,寄存器复位F寄存器的内容被清为全0Z

CLRW -0→W,寄存器复位W寄存器的内容被清为全0Z

RLF F,dF带C循环左移→d将F寄存器带C循环左移,结果存入F本身(d=1)或W(d=0)。C

RRF F,dF带C循环右移→d将F寄存器带C循环右移,结果存入F本身(d=1)或W(d=0)。C

BCF F,B将F中第B位清0将寄存器的第B位清为0-

BSF F,B将F中第B位置1将寄存器的第B位置1-

程 序 跳 转 类 INCFSZ F,dF+1→d,结果若为0则跳一步F寄存器的内容加1后,结果存入F本身(d=1)或W(d=0)。如结果为0则跳过下一条指令,否则顺序执行-

DECFSZ F,dF-1→d,结果若为0则跳一步F寄存器的内容减1后,结果存入F本身(d=1)或W(d=0)。如结果为0则跳过下一条指令,否则顺序执行-

BTFSC F,BF中第B位为0,则跳一步测试F寄存器的第B位。若F(B)=0,则跳过下一条指令,否则顺序执行-

BTFSS F,BF中第B位为1,则跳一步测试F寄存器的第B位。若F(B)=1,则跳过下一条指令,否则顺序执行-

CALL K调用子程序首先将PC+1推入堆栈,然后将11位常数K送入PC(10~0),同时将PCLATH(4,3)→PC(12,11),从而使PC=子程序入口地址-

GOTO K 无条件跳转将11位常数K送入PC(10~0),同时将PCLATH(4,3)→PC(12,11),从而使PC=新地址-

RETURN -从子程序返回将堆栈顶端单元的内容弹出并送入PC,从而返回主程序断点处-

RETLW KW带参数子程序返回将堆栈顶端单元的内容弹出并送入PC,同时8位常数K→W,从而带着参数返回主程序断点处-

RETFIE -从中断服务子程序返回将堆栈顶端单元的内容弹出并送入PC,从而返回主程序断点处,同时将全局中断使能位GIE置1,从新开放中断-

控 制 类SLEEP -进入睡眠方式该指令执行后,单片机进入低功耗睡眠模式,时基电路停振TO,PD

CLRWDT -0→WDT将WDT寄存器和分配给它

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top