51单片机指令有哪些啊?

51单片机指令有哪些啊?,第1张

51指令集

指令格式 功能简述 字节数 周期

一、数据传送类指令

MOV A, Rn 寄存器累加器 1 1

MOV Rn,A 累加器送寄存器 1 1

MOV A ,@Ri 内部RAM单元送累加器 1 1

MOV @Ri ,A 累加器送内部RAM单元 1 1

MOV A ,#data 立即数送累加器 2 1

MOV A ,direct 直接寻址单元送累加器 2 1

MOV direct ,A 累加器送直接寻址单元 2 1

MOV Rn,#data 立即数送寄存器 2 1

MOV direct ,#data 立即数送直接寻址单元 3 2

MOV @Ri ,#data 立即数送内部RAM单元 2 1

MOV direct ,Rn 寄存器送直接寻址单元 2 2

MOV Rn ,direct 直接寻址单元送寄存器 2 2

MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2

MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2

MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2

MOV DPTR ,#data16 16位立即数送数据指针 3 2

MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2

MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2

MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2

MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2

MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2

MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2

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

XCH A ,@Ri 累加器与内部RAM单元交换 1 1

XCHD A ,direct 累加器与直接寻址单元交换 2 1

XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1

SWAP A 累加器高4位与低4位交换 1 1

POP direct 栈顶d出指令直接寻址单元 2 2

PUSH direct 直接寻址单元压入栈顶 2 2

二、算术运算类指令

ADD A, Rn 累加器加寄存器 1 1

ADD A, @Ri 累加器加内部RAM单元 1 1

ADD A, direct 累加器加直接寻址单元 2 1

ADD A, #data 累加器加立即数 2 1

ADDC A, Rn 累加器加寄存器和进位标志 1 1

ADDC A, @Ri 累加器加内部RAM单元和进位标志 1 1

ADDC A, #data 累加器加立即数和进位标志 2 1

ADDC A, direct 累加器加直接寻址单元和进位标志 2 1

INC A 累加器加1 1 1

INC Rn 寄存器加1 1 1

INC direct 直接寻址单元加1 2 1

INC @Ri 内部RAM单元加1 1 1

INC DPTR 数据指针加1 1 2

DA A 十进制调整 1 1

SUBB A, Rn 累加器减寄存器和进位标志 1 1

SUBB A, @Ri 累加器减内部RAM单元和进位标志 1 1

SUBB A, #data 累加器减立即数和进位标志 2 1

SUBB A, direct 累加器减直接寻址单元和进位标志 2 1

DEC A 累加器减1 1 1

DEC Rn 寄存器减1 1 1

DEC @Ri 内部RAM单元减1 1 1

DEC direct 直接寻址单元减1 2 1

MUL AB 累加器乘寄存器B 1 4

DIV AB 累加器除以寄存器B 1 4

三、逻辑运算类指令

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

ANL A, @Ri 累加器与内部RAM单元 1 1

ANL A, #data 累加器与立即数 2 1

ANL A, direct 累加器与直接寻址单元 2 1

ANL direct, A 直接寻址单元与累加器 2 1

ANL direct, #data 直接寻址单元与立即数 3 1

ORL A, Rn 累加器或寄存器 1 1

ORL A,@Ri 累加器或内部RAM单元 1 1

ORL A,#data 累加器或立即数 2 1

ORL A,direct 累加器或直接寻址单元 2 1

ORL direct, A 直接寻址单元或累加器 2 1

ORL direct, #data 直接寻址单元或立即数 3 1

XRL A, Rn 累加器异或寄存器 1 1

XRL A,@Ri 累加器异或内部RAM单元 1 1

XRL A,#data 累加器异或立即数 2 1

XRL A,direct 累加器异或直接寻址单元 2 1

XRL direct, A 直接寻址单元异或累加器 2 1

XRL direct, #data 直接寻址单元异或立即数 3 2

RL A 累加器左循环移位 1 1

RLC A 累加器连进位标志左循环移位 1 1

RR A 累加器右循环移位 1 1

RRC A 累加器连进位标志右循环移位 1 1

CPL A 累加器取反 1 1

CLR A 累加器清零 1 1

四、控制转移类指令类

ACCALL addr11 2KB范围内绝对调用 2 2

AJMP addr11 2KB范围内绝对转移 2 2

LCALL addr16 2KB范围内长调用 3 2

LJMP addr16 2KB范围内长转移 3 2

SJMP rel 相对短转移 2 2

JMP @A+DPTR 相对长转移 1 2

RET 子程序返回 1 2

RET1 中断返回 1 2

JZ rel 累加器为零转移 2 2

JNZ rel 累加器非零转移 2 2

CJNE A ,#data ,rel 累加器与立即数不等转移 3 2

CJNE A ,direct ,rel 累加器与直接寻址单元不等转移 3 2

CJNE Rn,#data ,rel 寄存器与立即数不等转移 3 2

CJNE @Ri ,#data,rel RAM单元与立即数不等转移 3 2

DJNZ Rn ,rel 寄存器减1不为零转移 2 2

DJNZ direct ,rel 直接寻址单元减1不为零转移 3 2

NOP 空 *** 作 1 1

五、布尔 *** 作类指令

MOV C, bit 直接寻址位送C 2 1

MOV bit, C C送直接寻址位 2 1

CLR C C清零 1 1

CLR bit 直接寻址位清零 2 1

CPL C C取反 1 1

CPL bit 直接寻址位取反 2 1

SETB C C置位 1 1

SETB bit 直接寻址位置位 2 1

ANL C, bit C逻辑与直接寻址位 2 2

ANL C, /bit C逻辑与直接寻址位的反 2 2

ORL C, bit C逻辑或直接寻址位 2 2

ORL C, /bit C逻辑或直接寻址位的反 2 2

JC rel C为1转移 2 2

JNC rel C为零转移 2 2

JB bit,rel 直接寻址位为1转移 3 2

JNB bit,rel 直接寻址为0转移

单片机指令功能一览表

助记符 代码 说明

MOVA,Rn E8~EF寄存器A

MOVA,direct E5 dircet直接字节送A

MOVA,@Ri ER~E7间接RAM送A

MOVA,#data 74 data 立即数送A

MOVRn,A F8~FFA送寄存器

MOVRn,dircet A8~AF dircet 直接字节送寄存器

MOVRn,#data 78~7F data 立即数送寄存器

MOVdircet,A F5 dircetA送直接字节

MOVdircet,Rn 88~8F dircet 寄存器送直接字节

MOVdircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节

MOVdircet,@Ro86~87间接RAM送直接字节

MOVdircet,#data 75 dircet data 立即数送直接字节

MOV@Ri,A F6~F7A送间接RAM

MOV@Ri,#data 76~77 data 直接字节送间接RAM

MOV@Ri,#data 76~77 data 立即数送间接RAM

MOVDPTR,#data16 90 data 15~8 16位常数送数据指针

data7~0

MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮

器字节选A

MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A

MOVX A,@Ri E2~E3送外部数据(8位地址)送A

MOVX A,@DPTR E0 送外部数据(16位地址)送A

MOVX @Ri,A F2~F3A送外部数据(8位地址)

MOVX @DPTR,A F0 A送外部数据(16位地址)

PUSH dircetC0 dircet直接字节进栈,SP加1

POPdircetD0 dircet直接字节退栈,SP减1

XCHA,Rn C8~CF交换A和寄存器

XCHA,dircet C5 dircet交换A和直接字节

XCHA,@Ri C6~C7交换A和间接RAM

XCHA,@Ri D6~D7交换A和间接RAM的低位

SWAP A C4

算术 *** 作(A的二个半字节交换)

ADDA,Rn 28~2F 寄存器加到A

ADDA,dircet 25 dircet 直接字节加到A

ADDA,@Ri 26~27 间接RAM加到A

ADDA,#data 24data立即数加到A

ADDA,Rn 38~3F 寄存器和进位位加到A

ADDA,dircet 35dircet 直接字节和进位位加到A

ADDA,@Ri 36~37 间接字节和进位位加到A

ADDA,data34 data 立即数和进位位加到A

ADDA,Rn 98~9F A减去寄存器和进位位

ADDA,dircet 95 dircet A减去直接字节和进位位

ADDA,@Ri 36~37 间接RAM和进位位加到A

ADDA,data34 data 立即数和进位位加到A

SUBB A,Rn 98~9F A减去寄存器和进位位

SUBB A,dircet 95 dircet A减去直接字节和进位位

SUBB A,@Ri 96~97 A减去间接RAM和进位位

SUBB A,#data 94 data A减去立即数和进位位

INCA 04A加1

INCRn08~0F 寄存器加1

INCdircet05 dircet 直接字节加1

INC@Ri 06~07 间接RAM加1

DECA 14A减1

DECRn18~1F 寄存器减1

DECdircet15 dircet 直接字节减1

DEC@Ri 16~17 间接RAM减1

INCDPTR A3数据指针加1

MULABA4A乘以B

DIVAB84A除以B

DA A D4A的十进制加法调整

逻辑 *** 作

ANLA,Rn 58~5F 寄存器“与”到A

ANLA,dircet 55 dircet 直接字节“与”到A

ANLA,@Ri 56~57 间接RAm“与”到A

ANLA,#data 54 data 立即数“与”到A

ANLdircet A 52 dircet A“与”到直接字节

ANLdircet,#data 53 dircet data立即数“与”到直接字节

ORLA,Rn 48~4F 寄存器“或”到A

ORLA,dircet 45 dircet 直接字节“或”到A

ORLA,@Ri 46~47 间接RAM“或”到A

ORLA,#data 44 data 立即数“或”到A

ORLdircet,A 42 dircet A“或”到直接字节

ORLdircet,#data 43 dircet data立即数“或”到直接字节

XRLA,Rn 68~6F 寄存器“异或”到A

XRLA,dircet 65 dircet 直接字节“异或”到A

XRLA,@Ri 66~67 间接RAM“异或”到A

XRLA,#data 64 data 立即数“异或”到A

XRLdircet A 62 dircet A“异或”到直接字节

XRLdircet,#data 63 dircet data立即数“异或”到直接字节

CLRA E4清零

CPLA F4A取反

RL A 23A左环移

RLCA 33A通过进位左环移

RR A 03A右环移

RRCA 13A通过进位右环移

控制程序转移

ACALL addr 11 *1 addr(a7~a0)绝对子程序调用

LCALL addr 16 12 addr(15~8) 长子程序调用

addr(7~0)

RET 22子程序调用返回

RETI addr 11 32中断调用返回

AJMP addr 11 △1 addr(a7~a6) 绝对转移

LJMP addr 16 02addr(15~8) 长转移

addr(7~0)

SJMP rel 80 rel短转移,相对转移

JMP@A+DPTR 73相对于DPTR间接转移

JZ rel 60 relA为零转移

JNZrel 70 relA为零转移

CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移

CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移

CJNE A,Rn,#data,relB8~BF data rel立即数与寄存器比较,不等则转移

CJNE @Ri,#data,rel B6~B7 data rel立即数与间接RAM比较,不等则转移

DJNZ Rn,relD8~DF rel 寄存器减1,不为零则转移

DJNZ dircet,relB5 dircet rel 直接字节减1,不为零则转移

NOP 00空 *** 作

*=a10a9a8l

△=a10a9a80

布尔变量 *** 作

CLRC C3清零进位

CLRbit C2清零直接位

SETB C D3置位进位

SETB bit D2置位直接位

CPLC B3进位取反

CPLbit B2直接位取反

ANLC,bit 82 dit直接数“与”到进位

ANLC,/bitB0直接位的反“与”到进位

ORLC,bit 72 bit直接位“或”到进位

ORLC,/bitA0 bit直接位的反“或”到进位

MOVC,bit A2 bit直接位送进位

MOVbit,C 92 bit进位送直接位

JC rel 40 rel进位位为1转移

JNCrel 50 rel进位位为0转移

JB bit,rel 20 bit rel直接位为1相对转移

JNBbit,rel 30 bit rel直接位为0相对转移

JBCbit,rel 10 bit rel直接位为1相对转移,然后清零该位

单片机程序暂停指令的一般实现方法有两种:一种是使用硬件实现暂停,一种是使用软件实现暂停。硬件实现暂停可以通过在单片机上设置一个外部中断源,当外部中断源被触发时,单片机将被暂停,而软件实现暂停则是在单片机程序中添加一个专门的暂停指令,当程序执行暂停指令时,单片机将暂停执行程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11056257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存