小明的同学 发表于 2025-2-23 10:42

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单片机指令精简,执行效率高,适合实时控制。选择时需根据具体应用需求决定。

小明的同学 发表于 2025-2-23 10:42

PIC单片机的指令集基于RISC架构,具有精简、高效的特点。以下是其主要特点和一些常见指令:

主要特点
精简指令集:指令数量较少,通常在35到80条之间,具体取决于型号。

固定长度指令:指令长度固定,通常为12、14或16位。

单周期执行:大多数指令在一个时钟周期内完成。

哈佛架构:程序存储器和数据存储器分开,允许同时访问。

丰富的寻址方式:支持立即寻址、直接寻址、间接寻址等。

小明的同学 发表于 2025-2-23 10:43

小明的同学 发表于 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:清除看门狗定时器。

小明的同学 发表于 2025-2-23 10:43

举个简单的例子
    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                     ; 程序结束

wahahaheihei 发表于 2025-2-26 19:31

较少的指令能否满足所有的需求呢?

jiekou001 发表于 2025-2-28 11:17

51上很多特性,精简指令集单片机不支持,好像那个移位的,会将移出来的那个位给一个CY的寄存器,其他的就不行,需要逻辑运算来保存。

gejigeji521 发表于 2025-2-28 14:55

汇编是如何编程的,没看懂。

kingTek 发表于 2025-3-2 20:00

减指令是病,是不得已,pic的指令集比51的差远了,51的位操作干脆利索,没有切银行号,中断也不用查询,基本测不到bug!

weifeng90 发表于 2025-3-7 08:14

51核的设计更类似于8086

ewyu 发表于 2025-3-10 16:48

8051 单片机和 PIC 单片机是两种常见的嵌入式微控制器,它们的指令集在设计理念和架构上有显著差异。

twinkhahale 发表于 2025-3-10 18:56

寄存器结构这俩完全不一样,比如说8051有 8 个通用寄存器(R0-R7),位于寄存器组中。PIC使用 工作寄存器(WREG) 作为累加器,大多数操作通过 WREG 进行。

gongqijuns 发表于 2025-3-10 20:08

8051:基于 CISC(复杂指令集计算机)架构。指令集丰富,单条指令可以完成复杂操作。PIC:基于 RISC(精简指令集计算机)架构。指令集精简,大多数指令在一个时钟周期内完成

tiakon 发表于 2025-3-10 21:16

其实8051具有特殊功能寄存器(SFR)用于控制外设和状态

yuliangren 发表于 2025-3-10 22:24

PIC的话,其寄存器文件(Register File)包含通用寄存器和特殊功能寄存器。

canfeil 发表于 2025-3-11 09:13

寻址模式一般来说不一样,8051支持多种寻址模式,包括直接寻址、间接寻址、寄存器寻址、立即寻址等。但PIC得寻址模式相对简单,主要包括直接寻址和间接寻址。

星星点点didi 发表于 2025-3-11 10:23

堆栈和子程序调用来说,8051堆栈位于内部 RAM 中,深度有限(通常为 128 字节)。使用 CALL 和 RET 指令实现子程序调用和返回。PIC:堆栈是硬件实现的,深度固定(通常为 8 级或更多,具体取决于型号)。用 CALL 和 RETURN 指令实现子程序调用和返回。

eleg34ance 发表于 2025-3-11 11:26

中断处理的话,8051有 5 个固定中断源(如外部中断、定时器中断、串口中断等)。中断向量表位于程序存储器的固定地址。PIC中断源数量较多,具体取决于型号。

nuan11nuan 发表于 2025-3-11 13:00

其实中断来说,PIC的话,中断向量表通常只有一个入口,需要在中断服务程序中判断中断源。

hight1light 发表于 2025-3-11 14:12

外设控制8051外设控制通过特殊功能寄存器(SFR)实现。但是PIC外设控制通过寄存器文件中的特殊功能寄存器实现。

meeagle 发表于 2025-3-14 15:58

我用汇编做项目的,感觉指令用熟了之后,还是CISC写起来要方便一点
页: [1] 2
查看完整版本: 8051单片机的指令与PIC单片机的指令集的不同之处