我是靠谱客的博主 幽默宝贝,最近开发中收集的这篇文章主要介绍51指令及片内RAM一览表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

SOURCE: CLICK HERE & HERE

 

 

助记符

操作码

说明

字节

振荡周期

ACALL  addrll

X1*

绝对子程序调用

2

24

ADD  A,Rn

28~2F

寄存器和A相加

1

12

ADD  A,direct

25

直接字节和A相加

2

12

ADD  A,@R

26,27

间接RAMA相加

1

12

ADD  A,#data

24

立即数和A相加

2

12

ADDC  A,Rn

38~3F

寄存器、进位位和A相加

1

12

ADDC  A,dircet

35

直接字节、进位位和A相加

2

12

ADDC  A,@R

36,37

间接RAM、进位位和A相加

1

12

ADDC  Adircet

34

立即数、进位位和A相加

2

12

AJMP  addrll

Y1**

绝对转移

2

24

ANL  A,Rn

58~5F

寄存器和A

1

12

ANL  A,direct

55

直接字节和A与"

2

12

ANL  A,@Ri

56,57

间接RAMA相"与"

1

12

ANL  A,#data

54

立即数和A相"与"

2

12

ANL  directA

52

A和直接字节相"与"

2

12

ANL  direct#data

53

立即数和直接字节相"与"

3

24

ANL  C,bit

82

直接位和进位相"与"

2

24

ANL  C,/bit

B0

直接位的反和进位相"与"

2

24

CJNE  A,dircet,rel

B5

直接字节与A比较,不相等则相对转移

3

24

CJNE  A,#data,rel

B4

立即数与A比较,不相等则相对转移

3

24

CJNE  Rn,#data,rel

B8~BF

立即数与寄存器相比较,不相等则相对转移

3

24

CJNE  @R,#data,rel

B6,B7

立即数与间接RAM相比较,不相等则相对转移

3

24

CLR  A

E4

A清零

1

12

CLR  bit

C2

直接位清零

2

12

CLR  C

C3

进位清零

1

12

CPL  A

F4

A取反

1

12

CPL  bit

B2

直接位取反

2

12

CPL  C

B3

进位取反

1

12

DA  A

D4

A的十进制加法调整

1

12

DEC  A

14

A1

1

12

DEC  Rn

18~1F

寄存器减1

1

12

DEC  direct

15

直接字节减1

2

12

DEC  @Ri

16,17

间接RAM1

1

12

DIV  AB

84

A除以B

1

48

DJNE  Rn,rel

DB~DF

寄存器减1,不为零则相对转移

3

24

DJNE  direct,rel

D5

直接字节减1,不为零则相对转移

3

24

INC  A

04

A1

1

12

INC  Rn

08~0F

寄存器加1

1

12

INC  direct

05

直接字节加1

2

12

INC  @Ri

06,07

间接RAM1

1

12

INC  DPTR

A3

数据指针加1

1

24

JB  bit;rel

20

直接位为1,则相对转移

3

24

JBC  bit,rel

10

直接位为1,则相对转移,然后该位清0

3

24

JC  rel

40

进位为1,则相对转移

2

24

JMP  @A+DPTR

73

转移到ADPTR所指的地址

1

24

JNB  bit,rel

30

直接位为0,则相对转移

3

24

JNC  rel

50

进位为0,则相对转移

2

24

JNZ  rel

70

A不为零,则相对转移

2

24

JZ  rel

60

A为零,则相对转移

2

24

LCALL  addr16

12

长子程序调用

3

24

LJMP  addr16

02

长转移

3

24

MOV  A,Rn

E8~EF

寄存器送A

1

12

MOV  A,direct

E5

直接字节送A

2

12

MOV  A,@Ri

E6,E7

间接RAMA

1

12

MOV  A,#data

74

立即数送A

2

12

MOV  RnA

F8~FF

A送寄存器

1

12

MOV  Rn,direct

A8~AF

直接字节送寄存器

2

24

MOV  Rn,#data

78~7F

立即数送寄存器

2

12

MOV  direct,A

F5

A送直接字节

2

12

MOV  direct,Rn

88~8F

寄存器送直接字节

2

24

MOV  direct,direct

85

直接字节送直接字节

3

24

MOV  direct,@Ri

86,87

间接RAM送直接字节

2

24

MOV  direct,#data

75

立即数送直接字节

3

24

MOV  @Ri,A

F6,F7

A送间接RAM

1

12

MOV  @Ri,direct

A6,A7

直接字节送间接RAM

2

24

MOV  @Ri,#data

76,77

立即数送间接RAM

2

12

MOV  C,bit

A2

直接位进位

2

12

MOV  bit,C

92

进位送直接位

2

24

MOV  DPTR,#data16

90

16位常数送数据指针

3

24

MOVC  A,@A+DPTR

93

A+DPTR寻直的程序存储器字节送A

1

24

MOVC  A,@A+PC

83

A+PC寻址的程序存储字节送A

1

24

MOVX  A,@Ri

E2,E3

外部数据存储器(8位地址)送A

1

24

MOVX  A,@DPTR

E0

外部数据存储器(16位地址)送A

1

24

MOVX  @Ri,A

F2,F3

A送外部数据存储器(8位地址)

1

24

MOVX  @DPTR,A

F0

A送外部数据存储器(16位地址)

1

24

MUL  AB

A4

A乘以B

1

48

NOP

00

空操作

1

12

ORL  A,Rn

48~4F

寄存器和A相"或"

1

12

ORL  A,direct

45

直接字节和A相"或"

2

12

ORL  A,@Ri

46,47

间接RAMA相"或"

1

12

ORL  A,#data

44

立接数和A相"或"

2

12

ORL  direct,A

42

A和直接。字节"或"

2

12

ORL  dircect,#data

43

立即数和直接字节相"或"

3

24

ORL  C,bit

72

直接位和进位相"或"

2

24

ORL  C,/bit

A0

直接位的反和进位相"或"

2

24

POP  direct

D0

直接字节退栈,SP1

2

24

PUSH  direct

C0

SP1,直接字节进栈

2

24

RET

22

子程序调用返回

1

24

RETI

32

中断返回

1

24

RL  A

23

A左环移

1

12

RLC  A

33

A带进位左环移

1

12

RR  A

03

A右环移

1

12

RRC  A

13

A带进位右环移

1

12

SETB  bit

D2

直接位置位

2

12

SETB  C

D3

进位置位

1

12

SJMP  rel

80

短转移

2

24

SUBB  A,Rn

98~F

A减去寄存器及进位位

1

12

SUBB  A,direct

95

A减去直接字节及进位位

2

12

SUBB  A,@Ri

96,97

A减去间接RAM及进位位

1

12

SUBB  A,#data

94

A减去立即数及进位位

2

12

SWAP  A

C4

A的高半字节和低半字节交换

1

12

XCH  A,Rn

C8~CF

A和寄存器交换

1

12

XCH  A,direct

C5

A和直接字节交换

2

12

XCH  A,@Ri

C6,C7

A和间接RAM交换

1

12

XCHD  A,@Ri

D6,D7

A和间接RAM的低四位交换

1

12

XRL  A,Rn

68~6F

寄存器和A相"异或"

1

12

XRL  A,direct

65

直接字节和A相"异或"

2

12

XRL  A,@Ri

66,67

间接RAMA相"异或"

1

12

XRL  A#data

64

立即数和A相"异或"

2

12

XRL  direct,A

62

A和直接字节相"异或"

2

12

XRL  direct,#data

63

立即数和直接字节相"异或"

3

24

 

 

================================================================

 

51片内RAM一览

 

0F0H *B(B寄存器)

       A,B两无符号8位数相乘,16位积低字节在A,高字节在B

       AB,商的整数在A,余数在B

0E0H*A(累加器)

       数据中转,判断等。

0D0H*PSW(程序状态字)

位地址

位功能如

0

D0

P:累加器A中的数据奇、偶标志位,1的个数为奇,P1

1

D1

-未用

2

D2

OV:溢出标志位,有溢出OV=1

3

D3

RS0:寄存器选择位,RS0,RS1000区,101区,102区,113

4

D4

 

5

D5

F0:用户标志位

6

D6

AC:半进位标志,操作结果低四位向高四位进,借位时AC=1

7

 

CY:进位标志位,操作结果向最高位有进位,借位时CY=1

0B8H *IP(中断优先级控制)      

位地址

位功能

0

B8

PX0:确定外部中断INT0优先级,1=高,0=低

1

B9

PT0:确定T0优先级别

2

BA

PX1:确定外部中断INT1优先级

3

BB

PT1:确定T1优先级别

4

BC

确定串行口优先级别

5

5

确定T2优先级别(仅8052/32有)

6

6

未用

7

7

未用

0B0H*P3(P3口,双向I/O口,有第二功能)

位地址

位第一功能

位第二功能

0

B0

P3.0

RXD:串入口

1

B1

P3.1

TXD:串出口

2

B2

P3.2

/INT0:外中断0

3

B3

P3.3

/INT1:外中断1

4

B4

P3.4

T0:外计数脉冲0

5

B5

P3.5

T1:外计数脉冲1

6

B6

P3.6

/WR:外RAM写选通脉冲出

7

B7

P3.7

/RD:外RAM读选通脉冲出

0A8H*IE(中断允许控制)

位地址

位功能

0

A8

EX0:外部中断01=允许,0=禁止

1

A9

ET0T0中断

2

AA

EX1:外部1中断

3

AB

ET1T1中断

4

AC

ES 串行口中断

5

5

ET2T2中断,(仅8032/52有)

6

6

-:未用

7

AF

EA:总中断

0A0H*P2(P2口,双向I/O)

位地址

位功能

0

A0

P2.0

1

A1

P2.1

2

A2

P2.2

3

A3

P2.3

4

A4

P2.4

5

A5

P2.5

6

A6

P2.6

7

A7

P2.7

99H SBUF(串行数据缓冲器)

98H *SCON(串行控制)

位地址

位功能

0

98.RI

串行口接受中断标志,允许串口收时,收到一字符后RI=1CPU响应中断返回后不清RI,须用户清RI.

1

99.TI

串行口发送中断标志,CPU写一数据到SBUF后,就启动发送器工作,串口以0方式发送时,每发送完8位数据,硬件置TI=1,方式123时,在发送停止位时TI=1,TI=1表示串口正向CPU申请发送中断,CPU响应中断返回后不清TI,须用户清TI.

2

9A.RB8

 

3

9BTB8

 

4

9C.REN

 

5

9D.SM2

 

6

9E.SM1

 

7

9F.SM0

 

87H PCON(电源控制)

       不能位寻址!!!

       D7       SMOD:波特率备增位

       D6       -------

       D5       -------:该三位未定义

       D4       -------

       D3   GF1:通用标志位,由软件置/复位

       D2   GF0 通用标志位,由软件置/复位

       D1   PDPD=1,掉电工作方式

       D0   IDLIDL=1,节电工作方式(又称待机方式)

*退出掉电/节电方式可(1):使用硬复位,使该位清零

                   2):设中断程序,通过RETI指令复位该位。

90H*P1(P1口,双向I/O)

位地址

位功能

0

90

P1.0

1

91

P1.1

2

92

P1.2

3

93

P1.3

4

94

P1.4

5

95

P1.5

6

96

P1.6

7

97

P1.7

8DHTH1(定时/计数器1的高位字节)

8CHTH0(定时/计数器0的高位字节)

8BHTL1(定时/计数器1的低位字节)

8AHTL0(定时/计数器0的低位字节)

89HTMOD(定时/计数器的方式控制)

位功能

0

T0M0

1

   M1  M0M1T0方式选择,见下表

2

   C/T  T0定时/计数选择,0定时,1外部计数

3

   GATE   T0门控制,GATE=1时,计数/定时受外部电平控制,GATE=0时,不受外引脚控制

4

T1 M0

5

   M1 M0M1T1的方式选择,见下表

6

   C/T  T1定时/计数选择,0定时,1外部计数

7

   GATE   T1门控制,GATE=1时,计数/定时受外部电平控制,GATE=0时,不受外引脚控制

 

方式

M0

M1

功能

0

0

0

TL5位,TH 8位组成13位定时/计数器

1

0

1

16位定时/计数器

2

1

0

常数自动装入8位定时/计数器,TL为计数器,TH为常数寄存器

3

1

1

仅适应T0,TL0,TH0均为定时/计数器

88H*TCON(定时/计数器控制)

位地址

位功能

0

88

IT0:外中断INT0触发方式控制位,IT0=1,电平触发;IT0=0,边沿触发

1

89

IE0:外中断INT0中断请求位,IE0=1,有外中断请求,IE0=0,外中断请求已清除。(仅适应边沿方式)

2

8A

IT1:功能同IT0

3

8B

IE1:功能同IE0

4

8C

TR0:定时器T0的运行控制位,可用软件置位,复位在TMODGATE=0时,TR0=1T0计数允许;TMODGATE=1时,TR0=1INT1为高时T0计数INT1为低时T0禁止计数

5

8D

TF0:定时器T0的溢出标志位,当定时计数器的最高位产生溢出时,TF0=1,CPU响应中断,此时硬件清TF00;也可由程序查询或位操作清除

6

8E

TR1:功能同TR0

7

8F

TE1:功能同TE0

 

83H DPTR(数据指针,DPH)

82HDPTR(数据指针,DPL)

81HSP(堆栈指针)

80H*P0(P0口,双向I/O)

位地址

位功能

0

80

P0.0

1

81

P0.1

2

82

P0.2

3

83

P0.3

4

84

P0.4

5

85

P0.5

6

86

P0.6

7

87

P0.7

7FH:数据缓冲区(常用作堆栈区)

RAM区位地址与字节地址对照表

字节地址

D7

D6

D5

D4

D3

D2

D1

D0

2FH

7F

7E

7D

7C

7B

7A

79

78

2EH

77

76

75

74

73

72

71

70

2DH

6F

6E

6D

6C

6B

6A

69

68

2CH

67

66

65

64

63

62

61

60

2BH

5F

5E

5D

5C

5B

5A

59

58

2AH

57

56

55

54

53

52

51

50

29H

4F

4E

4D

4C

4B

4A

49

48

28H

47

46

45

44

43

42

41

40

27H

3F

3E

3D

3C

3B

3A

39

38

26H

37

36

35

34

33

32

31

30

25H

2F

2E

2D

2C

2B

2A

29

28

24H

27

26

25

24

23

22

21

20

23H

1F

1E

1D

1C

1B

1A

19

18

22H

17

16

15

14

13

12

11

10

21H

0F

0E

0D

0C

0B

0A

09

08

20H

07

06

05

04

03

02

01

00

1FH R0~R7   3

17H R0~R7   2

0FH R0~R7   1

07H R0~R7   0

00H

最后

以上就是幽默宝贝为你收集整理的51指令及片内RAM一览表的全部内容,希望文章能够帮你解决51指令及片内RAM一览表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部