8051单片机的指令与PIC单片机的指令集的不同之处
8051单片机和PIC单片机在指令集上有显著差异,主要体现在以下几个方面:1. 架构
8051单片机:基于CISC(复杂指令集计算机)架构,指令集复杂,指令长度不固定,执行时间各异。
PIC单片机:基于RISC(精简指令集计算机)架构,指令集精简,指令长度固定,执行时间一致。
2. 指令长度
8051单片机:指令长度可变,1到3字节不等。
PIC单片机:指令长度固定,通常为12、14或16位,具体取决于型号。
3. 指令数量
8051单片机:指令数量较多,约111条,涵盖多种操作。
PIC单片机:指令数量较少,通常在35到80条之间,具体取决于型号。
4. 寻址方式
8051单片机:支持多种寻址方式,如立即寻址、直接寻址、寄存器寻址、间接寻址等。
PIC单片机:寻址方式相对较少,常见的有立即寻址、直接寻址和间接寻址。
5. 寄存器结构
8051单片机:有多个专用寄存器,如累加器(A)、B寄存器、程序状态字(PSW)等。
PIC单片机:采用通用寄存器结构,寄存器数量较多且功能通用。
6. 堆栈
8051单片机:堆栈位于内部RAM,深度有限,通常为128字节。
PIC单片机:堆栈深度固定,通常为8级,独立于数据存储器。
7. 中断处理
8051单片机:有5个固定中断源,中断向量表位于程序存储器起始处。
PIC单片机:中断源数量较多,具体取决于型号,中断向量表通常只有一个入口。
8. 开发工具
8051单片机:开发工具多样,如Keil、SDCC等。
PIC单片机:常用开发工具为MPLAB X IDE,支持汇编和C语言编程。
8051单片机指令复杂,功能丰富,适合复杂控制;PIC单片机指令精简,执行效率高,适合实时控制。选择时需根据具体应用需求决定。
PIC单片机的指令集基于RISC架构,具有精简、高效的特点。以下是其主要特点和一些常见指令:
主要特点
精简指令集:指令数量较少,通常在35到80条之间,具体取决于型号。
固定长度指令:指令长度固定,通常为12、14或16位。
单周期执行:大多数指令在一个时钟周期内完成。
哈佛架构:程序存储器和数据存储器分开,允许同时访问。
丰富的寻址方式:支持立即寻址、直接寻址、间接寻址等。 小明的同学 发表于 2025-2-23 10:42
PIC单片机的指令集基于RISC架构,具有精简、高效的特点。以下是其主要特点和一些常见指令:
主要特点
PIC单片机的指令集可以分为以下几类:
1. 数据传送指令
MOVF:将文件寄存器的内容传送到W寄存器或自身。
MOVWF:将W寄存器的内容传送到文件寄存器。
MOVLW:将立即数传送到W寄存器。
2. 算术运算指令
ADDWF:将W寄存器和文件寄存器的内容相加,结果存放到W寄存器或文件寄存器。
SUBWF:从文件寄存器中减去W寄存器的内容,结果存放到W寄存器或文件寄存器。
INCF:增加文件寄存器的内容。
DECF:减少文件寄存器的内容。
3. 逻辑运算指令
ANDWF:将W寄存器和文件寄存器的内容进行逻辑与操作,结果存放到W寄存器或文件寄存器。
IORWF:将W寄存器和文件寄存器的内容进行逻辑或操作,结果存放到W寄存器或文件寄存器。
XORWF:将W寄存器和文件寄存器的内容进行逻辑异或操作,结果存放到W寄存器或文件寄存器。
COMF:对文件寄存器的内容取反。
4. 位操作指令
BCF:清除文件寄存器的指定位。
BSF:设置文件寄存器的指定位。
BTFSC:测试文件寄存器的指定位,如果为0则跳过下一条指令。
BTFSS:测试文件寄存器的指定位,如果为1则跳过下一条指令。
5. 控制转移指令
GOTO:无条件跳转到指定地址。
CALL:调用子程序。
RETURN:从子程序返回。
RETFIE:从中断返回。
DECFSZ:减少文件寄存器的内容,如果结果为0则跳过下一条指令。
INCFSZ:增加文件寄存器的内容,如果结果为0则跳过下一条指令。
6. 其他指令
NOP:空操作,用于延时或占位。
SLEEP:进入低功耗模式。
CLRWDT:清除看门狗定时器。 举个简单的例子
LIST P=16F84A
INCLUDE "P16F84A.INC"
ORG 0x0000 ; 程序起始地址
GOTO START ; 跳转到主程序
START
MOVLW 0x0A ; 将立即数0x0A加载到W寄存器
MOVWF PORTB ; 将W寄存器的内容传送到PORTB
ADDWF PORTB, F ; 将PORTB的内容与W寄存器相加,结果存放到PORTB
BSF PORTB, 0 ; 设置PORTB的第0位
BTFSC PORTB, 1 ; 测试PORTB的第1位,如果为0则跳过下一条指令
GOTO SKIP ; 跳转到SKIP标签
NOP ; 空操作
SKIP
SLEEP ; 进入低功耗模式
END ; 程序结束
较少的指令能否满足所有的需求呢? 51上很多特性,精简指令集单片机不支持,好像那个移位的,会将移出来的那个位给一个CY的寄存器,其他的就不行,需要逻辑运算来保存。 汇编是如何编程的,没看懂。 减指令是病,是不得已,pic的指令集比51的差远了,51的位操作干脆利索,没有切银行号,中断也不用查询,基本测不到bug! 51核的设计更类似于8086 8051 单片机和 PIC 单片机是两种常见的嵌入式微控制器,它们的指令集在设计理念和架构上有显著差异。 寄存器结构这俩完全不一样,比如说8051有 8 个通用寄存器(R0-R7),位于寄存器组中。PIC使用 工作寄存器(WREG) 作为累加器,大多数操作通过 WREG 进行。 8051:基于 CISC(复杂指令集计算机)架构。指令集丰富,单条指令可以完成复杂操作。PIC:基于 RISC(精简指令集计算机)架构。指令集精简,大多数指令在一个时钟周期内完成 其实8051具有特殊功能寄存器(SFR)用于控制外设和状态 PIC的话,其寄存器文件(Register File)包含通用寄存器和特殊功能寄存器。 寻址模式一般来说不一样,8051支持多种寻址模式,包括直接寻址、间接寻址、寄存器寻址、立即寻址等。但PIC得寻址模式相对简单,主要包括直接寻址和间接寻址。 堆栈和子程序调用来说,8051堆栈位于内部 RAM 中,深度有限(通常为 128 字节)。使用 CALL 和 RET 指令实现子程序调用和返回。PIC:堆栈是硬件实现的,深度固定(通常为 8 级或更多,具体取决于型号)。用 CALL 和 RETURN 指令实现子程序调用和返回。 中断处理的话,8051有 5 个固定中断源(如外部中断、定时器中断、串口中断等)。中断向量表位于程序存储器的固定地址。PIC中断源数量较多,具体取决于型号。 其实中断来说,PIC的话,中断向量表通常只有一个入口,需要在中断服务程序中判断中断源。 外设控制8051外设控制通过特殊功能寄存器(SFR)实现。但是PIC外设控制通过寄存器文件中的特殊功能寄存器实现。 我用汇编做项目的,感觉指令用熟了之后,还是CISC写起来要方便一点
页:
[1]
2