51单片机代码以及对应讲解(单片机551单片机指令集)

51单片机代码以及对应讲解(单片机551单片机指令集)(1)

单片机指令说多也不多,但也不少,学习指令集不是用于编程,而是在于后期复杂项目中,系统所表现的现象与实际程序不符时,用于查验,所以指令集,只是了解即可,要有此概念,用时再去查找手册即可,小编在此提及的指令,当然不如手册来的精细,所以对指令集感兴趣的同学,建议去看手册.

该章讲完之后,就不在讲指令集了.

指令集就相当于告一段落,在此贴出的目的是用于方便同学们查找.

按功能分:

(1) 数据传送类指令

(2) 算数操作类指令

(3) 逻辑操作类指令

(4) 控制转移类指令

(5) 布尔变量操作类指令

具体用法如下:

MOV 将数传送至累加器/寄存器/地址单元/RAM单元等

MOVC A, @A DPTR 以DPTR为基址,变址寻址单元中的数据送入累加器

MOVC A, @A PC 以PC为基址,变址寻址单元中的数据送入累加器

MOVX @Ri, A 累加器送逻辑上外部的片内扩展RAM(8位寻址)

MOVX @DPTR, A 累加器送逻辑上外部的片内扩展RAM(16为寻址)

PUSH direct 直接地址单元压入堆栈

POP direct 出栈送数据到地址单元

XCH A, Rn 寄存器与累加器交换

XCH A, direct 地址单元与累加器交换

XCH A, @Ri 间接RAM与累加器交换

XCHD A, @Ri 间接RAM的低半字节与累加器交换

ADD A, Rn 寄存器内容送入累加器

ADDC A, Rn 带进位寄存器内容送入累加器

SUBB A, Rn 累加器带借位减寄存器内容

INC A 累加器加1

INC Rn 寄存器加1

DEC A 累加器减1

DEC Rn 寄存器减1

MUL AB A乘以B

DIV AB A除以B(A/B)

DA A 累加器十进制调整

ANL A, Rn 累加器与寄存器"与"

ORL A, Rn 累加器与寄存器"或"

XRL A, Rn 累加器与寄存器"异或"

CLR A 累加器清"0"

CPL A 累加器"求反"

RL A 累加器循环左移

RLC A 累加器带进位位循环左移

RR A 累加器循环右移

RRC A 累加器带进位位循环右移

SWAP A 累加器半字节交换

ACALL addr11 绝对(短)调用子程序

LCALL addr16 长调用子程序

RET 子程序返回

RETI 中断返回

AJMP addr11 绝对(短)转移

LJMP addr16 长转移

SJMP re1 相对转移

JMP @A DPTR 相对于DPTR的间接转移

JZ re1 累加器为零转移

JNZ re1 累加器非零转移

CJNE A, direct, re1 累加器与直接地址单元比较,不相等则转移

DJNZ Rn, re1 寄存器减1,非零转移

NOP 空操作

CLR C 清零进位位

CLR bit 清零直接地址位

SETB C 置1进位位

SETB bit 置1直接地址位

CPL C 进位位求反

CPL bit 直接地址位求反

ANL C, bit 进位位与直接地址位相"与"

ANL C, /bit 进位位与直接地址位反码相"与"

ORL C, bit 进位位与直接地址位相"或"

JC rel 进位位为1则转移

JNC rel 进位位为0则转移

JB bit, rel 直接地址位为1则转移

JNB bit, rel 直接地址位为0则转移

JBC bit, rel 直接地址位为1则转移,该位清0

以上应该是大部分指令的用法了,可以用于任何寄存器的操作.

工作繁忙,出一篇文章实属不易,望带着宽容的眼光看问题.

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页