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

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

[复制链接]
68|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小明的同学|  楼主 | 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                     ; 程序结束


使用特权

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

本版积分规则

146

主题

1542

帖子

2

粉丝