打印
[PIC®/AVR®/dsPIC®产品]

8051单片机的指令与PIC单片机的指令集的不同之处

[复制链接]
1648|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小明的同学|  楼主 | 2025-2-23 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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                     ; 程序结束


使用特权

评论回复
5
wahahaheihei| | 2025-2-26 19:31 | 只看该作者
较少的指令能否满足所有的需求呢?

使用特权

评论回复
6
jiekou001| | 2025-2-28 11:17 | 只看该作者
51上很多特性,精简指令集单片机不支持,好像那个移位的,会将移出来的那个位给一个CY的寄存器,其他的就不行,需要逻辑运算来保存。

使用特权

评论回复
7
gejigeji521| | 2025-2-28 14:55 | 只看该作者
汇编是如何编程的,没看懂。

使用特权

评论回复
8
kingTek| | 2025-3-2 20:00 | 只看该作者
减指令是病,是不得已,pic的指令集比51的差远了,51的位操作干脆利索,没有切银行号,中断也不用查询,基本测不到bug!

使用特权

评论回复
9
weifeng90| | 2025-3-7 08:14 | 只看该作者
51核的设计更类似于8086

使用特权

评论回复
10
ewyu| | 2025-3-10 16:48 | 只看该作者
8051 单片机和 PIC 单片机是两种常见的嵌入式微控制器,它们的指令集在设计理念和架构上有显著差异。

使用特权

评论回复
11
twinkhahale| | 2025-3-10 18:56 | 只看该作者
寄存器结构这俩完全不一样,比如说8051有 8 个通用寄存器(R0-R7),位于寄存器组中。PIC使用 工作寄存器(WREG) 作为累加器,大多数操作通过 WREG 进行。

使用特权

评论回复
12
gongqijuns| | 2025-3-10 20:08 | 只看该作者
8051:基于 CISC(复杂指令集计算机)架构。指令集丰富,单条指令可以完成复杂操作。PIC:基于 RISC(精简指令集计算机)架构。指令集精简,大多数指令在一个时钟周期内完成

使用特权

评论回复
13
tiakon| | 2025-3-10 21:16 | 只看该作者
其实8051具有特殊功能寄存器(SFR)用于控制外设和状态

使用特权

评论回复
14
yuliangren| | 2025-3-10 22:24 | 只看该作者
PIC的话,其寄存器文件(Register File)包含通用寄存器和特殊功能寄存器。

使用特权

评论回复
15
canfeil| | 2025-3-11 09:13 | 只看该作者
寻址模式一般来说不一样,8051支持多种寻址模式,包括直接寻址、间接寻址、寄存器寻址、立即寻址等。但PIC得寻址模式相对简单,主要包括直接寻址和间接寻址。

使用特权

评论回复
16
星星点点didi| | 2025-3-11 10:23 | 只看该作者
堆栈和子程序调用来说,8051堆栈位于内部 RAM 中,深度有限(通常为 128 字节)。使用 CALL 和 RET 指令实现子程序调用和返回。PIC:堆栈是硬件实现的,深度固定(通常为 8 级或更多,具体取决于型号)。用 CALL 和 RETURN 指令实现子程序调用和返回。

使用特权

评论回复
17
eleg34ance| | 2025-3-11 11:26 | 只看该作者
中断处理的话,8051有 5 个固定中断源(如外部中断、定时器中断、串口中断等)。中断向量表位于程序存储器的固定地址。PIC中断源数量较多,具体取决于型号。

使用特权

评论回复
18
nuan11nuan| | 2025-3-11 13:00 | 只看该作者
其实中断来说,PIC的话,中断向量表通常只有一个入口,需要在中断服务程序中判断中断源。

使用特权

评论回复
19
hight1light| | 2025-3-11 14:12 | 只看该作者
外设控制8051外设控制通过特殊功能寄存器(SFR)实现。但是PIC外设控制通过寄存器文件中的特殊功能寄存器实现。

使用特权

评论回复
20
meeagle| | 2025-3-14 15:58 | 只看该作者
我用汇编做项目的,感觉指令用熟了之后,还是CISC写起来要方便一点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

148

主题

1554

帖子

2

粉丝