PAGE1
PAGE1
PIC18系列的指令集和编程
指令集概述
PIC18系列单片机的指令集是其核心功能之一,了解和掌握这些指令对于编写高效、可靠的嵌入式程序至关重要。PIC18系列单片机采用增强型RISC(精简指令集计算机)架构,具有丰富的指令集,能够支持多种编程模式和数据操作。PIC18系列的指令集分为基本指令和扩展指令两大类,基本指令包括数据传输、算术逻辑运算、位操作、程序控制等,而扩展指令主要涉及乘法和除法操作。
指令格式
PIC18系列单片机的指令格式非常简洁,每条指令占用14位或16位。指令格式分为以下几种:
14位指令格式:
操作码(Opcode):7位,用于指定指令的类型。
操作数(Operand):7位,用于指定指令的操作对象。
16位指令格式:
操作码(Opcode):10位,用于指定指令的类型。
操作数(Operand):6位,用于指定指令的操作对象。
寻址模式
PIC18系列单片机支持多种寻址模式,包括直接寻址、间接寻址、立即寻址和相对寻址。这些寻址模式使得单片机在处理数据时更加灵活和高效。
直接寻址:操作数直接给出寄存器的地址。
间接寻址:操作数通过寄存器中的地址来访问数据。
立即寻址:操作数直接给出数据值。
相对寻址:操作数给出相对于当前指令地址的偏移量。
基本指令
数据传输指令
数据传输指令用于在寄存器、存储器和I/O端口之间移动数据。常见的数据传输指令包括:
MOVWF:将WREG中的数据移动到指定的文件寄存器。
MOVFW:将文件寄存器中的数据移动到WREG。
CLRF:清除指定的文件寄存器。
CLRW:清除WREG。
SWAPF:交换文件寄存器中的高4位和低4位。
示例
;将WREG中的数据移动到文件寄存器0x10
MOVWF0x10
;将文件寄存器0x10中的数据移动到WREG
MOVFW0x10
;清除文件寄存器0x10
CLRF0x10
;清除WREG
CLRW
;交换文件寄存器0x10中的高4位和低4位
SWAPF0x10,0
算术逻辑指令
算术逻辑指令用于执行基本的数学和逻辑运算。常见的算术逻辑指令包括:
ADDWF:将WREG中的数据与指定文件寄存器中的数据相加,结果存入文件寄存器。
SUBWF:将指定文件寄存器中的数据减去WREG中的数据,结果存入文件寄存器。
ANDWF:将WREG中的数据与指定文件寄存器中的数据进行逻辑与运算,结果存入文件寄存器。
IORWF:将WREG中的数据与指定文件寄存器中的数据进行逻辑或运算,结果存入文件寄存器。
XORWF:将WREG中的数据与指定文件寄存器中的数据进行逻辑异或运算,结果存入文件寄存器。
示例
;将WREG中的数据与文件寄存器0x10中的数据相加,结果存入文件寄存器0x10
ADDWF0x10,1
;将文件寄存器0x10中的数据减去WREG中的数据,结果存入文件寄存器0x10
SUBWF0x10,1
;将WREG中的数据与文件寄存器0x10中的数据进行逻辑与运算,结果存入文件寄存器0x10
ANDWF0x10,1
;将WREG中的数据与文件寄存器0x10中的数据进行逻辑或运算,结果存入文件寄存器0x10
IORWF0x10,1
;将WREG中的数据与文件寄存器0x10中的数据进行逻辑异或运算,结果存入文件寄存器0x10
XORWF0x10,1
位操作指令
位操作指令用于对单个位或多个位进行操作。常见的位操作指令包括:
BSF:设置指定文件寄存器中的某一位。
BCF:清除指定文件寄存器中的某一位。
BTFSC:如果指定文件寄存器中的某一位为1,则跳过下一条指令。
BTFSS:如果指定文件寄存器中的某一位为0,则跳过下一条指令。
示例
;设置文件寄存器0x10中的第1位
BSF0x10,1
;清除文件寄存器0x10中的第3位
BCF0x10,3
;如果文件寄存器0x10中的第4位为1,则跳过下一条指令
BTFSC0x10,4
GOTONEXT
;如果文件寄存器0x10中的第5位为0,则跳过下一条指令
BTFSS0x10,5
GOTONEXT
NEXT:
;下一条指令
程序控制指令
程序控制指令用于控制程序的执行流程。常见的程序控制指令包括:
GOTO:无条件跳转到指定地址。
CALL:调用子程序。
RETURN:从子程序返回。
RETFIE:从中断子程序返回。
RETLW:从子程序返回并加载立即数到WREG。
BRANCH:条件跳转。
示例
;无条件跳转到地址0x100
GOTO0x100
;调用子程序
CALL