8051指令系统汇总表
启动及中断入口地址
0000H RESET
0003H
000BH T/C0
0013H
001BH T/C1
0023H 串口1
002BH 仅8032(8052)有
0033H PF1(电源故障)__DS80C320
003BH 串口2 ...
0043H INT2
004BH
0053H INT4
005BH
0063H WDTI__看门狗
PSW状态寄存器
CY | AC | F0 | RS1 | RS0 | OV | - | P |
进位 辅助进位 用户 寄存器选择 符号运算 出错标志 奇偶标志
标志 0 0 0 1=奇
0 1 1 0=偶
1 0 2
1 1 3
TMOD 89H
GATE | C/ | M1 | M0 | GATE | C/ | M1 | M0 |
用于定时器/计数器T1 | 用于定时器/计数器T0 |
M1 | M0 | 方 式 | 功 能 |
0 | 0 | 方式0 | 13位定时器/计数器 |
0 | 1 | 方式1 | 16位定时器/计数器 |
1 | 0 | 方式2 | 常数自动装入的8位定时器/计数器 |
1 | 1 | 方式3 | 仅适用于T0,分为两个8位计数器,对T1停止计数 |
PCON 87H
SMOD | SMOD0 |
| GE1 | GF0 | PD | IDL |
直接寻址 内部数据RAM寻址
寄
存
器
间
接
寻
址 | Indirect RAM | 255 | |
Direct RAM | 127 | ||
127 120
7 0 | 48
32 | 位 寻 址 | |
R7 R0 3区 | 31 24 |
寄
存
器 | |
R7 R0 2区 | 23 16 | ||
R7 R0 1区 | 15 8 | ||
R7 R0 0区 | 7 0 | ||
位地址(符号地址) 字节地址
可
位
寻
址 | F7 B F0 | F0H |
E7 ACC E0 | E0H | |
D7 PSW D0 | D0H | |
DF IP D8 | D8H | |
B7 P3 B0 | B0H | |
AF IE A8 | A8H | |
A7 P2 A0 | A0H | |
SBUF | 99H | |
9F SCON 98 | 98H | |
97 P1 90 | 90H | |
TH1 | 8DH | |
TH0 | 8CH | |
TL1 | 8BH | |
TL0 | 8AH | |
(TMOD) | 89H | |
8F TCON 88 | 88H | |
(PCON) | 87H | |
DPH | 83H | |
DPL | 82H | |
SP | 81H | |
87 P0 80 | 80H |
SFR寻址
MSB 位地址 LSB
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 |
SRF寄存器
地址 MSB 位寻址 LSB
F0H | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | B |
E0H | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC |
D0H | CY | AC | F0 | RS1 | RS0 | OV | P | PSW | |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
C8H | CF | CE | CD | CC | CB | CA | C9 | C8 | T2CON |
B8H | PT2 | PS | PT1 | PX1 | PT0 | PX0 | IP | ||
BD | BC | BB | BA | B9 | B8 |
B0H | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 |
A8H | EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 | IE | |
AF | AE | AD | AC | AB | AA | A9 | A8 |
A0H | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 |
98H | SM0 | SM1 | SM2 | REN | TB8 | RB8 | T1 | R1 | SCON |
9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 |
90H | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | P1 |
80H | 87 | 86 | 85 | 84 | 83 | 82 | 81 | 80 | P0 |
88H | 定 时 器 | 中 断 |
T C O N | ||||||
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 | ||
T1标志 | 启动=1 停止=0 | T0标志 | 启动=1 停止=0 | 中断1 标志 | 0 电平 1 下沿 | 中断1 标志 | 0 电平 1 下沿 | ||
8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 |
IE0及IE1在中断返回前应清除(CLR IE0(IE1))。
EA | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
IE | |
禁止中断=0 允许中断=1 | 8052 | 串行口 | 定时器 1中断 | INT1 | 定时器 0中断 | INT0 | ||
IP中断优先级寄存器: 1=高 0=低
PT2 | PS | PT1 | PX1 | PT0 | PX0 | IP | ||
定时器2 | 串行口 | 定时器1 | INT1 | 定时器0 | INT0 |
DPS 数据指针选择 86H
DPS.0 |
1—DPL1,DPH1; 0—DPL,DPH
CKCON 时钟控制 8EH
WD1 | WD0 | T2M | T1M | T0M | MD2 | MD1 | MD0 |
WD1,WD0—Watchdog timer; MD2,MD1,MD0—外部RAM访问时间选择
WD1 WD0 复位时间 0 0 0 2机器周期
- 0 217+512 0 0 1 3机器周期(缺省)
- 1 220+512 0 1 0 4机器周期
- 0 223+512 0 1 1 5机器周期
1 1 226+512 1 0 0 6机器周期
1 0 1 7机器周期
1 1 0 8机器周期
1 1 1 9机器周期
C0H | SM0_1 | SM1_1 | SM2_1 | REN_1 | TB8_1 | RB8_1 | T1_1 | R1_1 | SCON1 |
电源管理寄存器
C4H | CD1 | CD0 | SWB | - | XTOFF | ALEOFF | DME0 | PMR |
DME0—1 使能片内1K MOVX SRAM
扩展中断使能
E8H | - | - | - | EWDI | EX5 | EX4 | EX3 | EX2 | EIE |
DOG INT5 INT4 INT3 INT2
看门狗控制器
D8H | SMOD_1 | PRO | - | - | WDIF | WDRF | EWT | RWT | WDCON |
PRO-—上电复位标志
WDIF—看门狗中断标志
WDRF—看门狗计数器复位标志
EWT-—使能看门狗计数器复位
RWT---复位看门狗计数器
指令表中的定义如下:
Ri=R0及R1;Rn=R0--R7;direct=内部RAM;
data=立即数(单字节或双字节)
数 据 传 送 类
助 记 符 |
用符号表示的操作 | 标 志 | 字 节 数 | 周 期 数 | 振 荡 周 期 |
POVACC | |||||
MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct,direct MOV direct,@Ri MOV direct,#data MOV @Ri,A MOV @Ri,direct MOV @Ri,#data | (A)←(Rn) (A)←(direct) (A)←((Ri)) (A)←#data (Rn)←A (Rn)←(direct) (Rn)←#data (direct)←A (direct)←(Rn) (direct)←(direct) (direct)←((Ri)) (direct)←#data ((Ri))←(A) ((Ri))←(direct) ((Ri))←#data | p . . . p . . . p . . . p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1 2 1 2 1 2 2 2 2 3 2 3 1 2 2 | 1 1 1 1 1 2 1 1 2 2 2 2 1 2 1 | 12 12 12 12 12 24 12 12 24 24 24 24 12 24 12 |
MOV DPTR,#data16 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@Ri MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A PUSH direct
POP direct | (DPTR)←#data16 (A)←((A)+DPTR) (A)←((A)+PC) (A)←((Ri)) (A)←((DPTR)) ((Ri))←(A) (DPTR)←(A) (SP)←(SP)-1 ((SP))←(direct) (direct)←(SP) (SP)←(SP)-1 | . . . . p . . . p . . . p . . . p . . . . . . . . . . . . . . .
. . . . | 3 1 1 1 1 1 1 2
2 | 2 2 2 2 2 2 2 2
2 | 24 24 24 24 24 24 24 24
24 |
XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri | (A)<-->(Rn) (A)<-->(direct) (A)<-->((Ri)) (A3-0) <-->((Ri)3-0) | p . . . p . . . p . . . p . . . | 1 2 1 1 | 1 1 1 1 | 12 12 12 12 |
算 术 操 作 类
助 记 符 |
用符号表示的操作 | 标 志 | 字 节 数 | 周 期 数 | 振 荡 周 期 |
POVACC | |||||
ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data
SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data
INC A INC Rn INC @Ri INC direct
DEC A DEC Rn DEC @Ri DEC direct
INC DPTR MUL AB DIV AB DA A | (A)←(A)+(Rn) (A)←(A)+direct (A)←(A)+((Ri)) (A)←(A)+#data (A)←(A)+(C)+(Rn) (A)←(A)+(C)+(direct) (A)←(A)+(C)+((Ri)) (A)←(A)+(C)+#data
(A)←(A)-(C)-(Rn) (A)←(A)-(C)-direct (A)←(A)-(C)-((Ri)) (A)←(A)-(C)-#data
(A)←(A)+1 (Rn)←(Rn)+1 ((Ri))←((Ri))+1 (direct)←(direct)+1
(A)←(A)-1 (Rn)←(Rn)-1 ((Ri))←((Ri))-1 (direct)←(direct)-1
(DPTR)←(DPTR)+1 (AB)←(A)*(B) (A)15-8,(B)7-0←(A)/(B) 十进制调正 | ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
p . . . . . . . . . . . . . . .
p . . . . . . . . . . . . . .
. . . . pov . c pov . c p . . c | 1 2 1 2 1 2 1 2
1 2 1 2
1 1 1 2
1 1 1 2
1 1 1 1 | 1 1 1 1 1 1 1 1
1 1 1 1
1 1 1 2
1 1 1 2
2 4 4 1 | 12 12 12 12 12 12 12 12
12 12 12 12
12 12 12 24
12 12 12 24
24 48 48 12 |
逻 辑 操 作 类
助 记 符 |
用符号表示的操作 | 标 志 | 字 节 数 | 周 期 数 | 振 荡 周 期 |
POVACC | |||||
ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data
ORL A,Rn ORL A,direct ORL A,@Ri ORL A,#data ORL direct,A ORL direct,#data
XRL A,Rn XRL A,direct XRL A,@Ri XRL A,#data XRL direct,A XRL direct,#data
CLR A CPL A
RL A
RLC A
RR A
RRC A
SWAP A
| (A)←(A)∧(Rn) (A)←(A)∧(direct) (A)←(A)∧((Ri)) (A)←(A)∧#data (direct)←(direct)∧(A) (direct)←(direct)∧#data
(A)←(A)ˇ(Rn) (A)←(A)ˇ(direct) (A)←(A)ˇ((Ri)) (A)←(A)ˇ#data (direct)<-(direct)ˇ(A) (direct)<-(direct)ˇ#data
(A)←(A)≮(Rn) (A)←(A)≮(direct) (A)←(A)≮((Ri)) (A)←(A)≮#data (direct)←(direct)≮(A) (direct)←(direct)≮#data
(A)←0 (A)←(A)
A7←A0 ↓__↑ C←A7←A0 ↓_____↑ A7→A0 ↑__↓ A7→A0→C ↑_____↓ A7-4<-->A3-0
| p . . . p . . . p . . . p . . . . . . . . . . .
p . . . p . . . p . . . p . . . . . . . . . . .
p . . . p . . . p . . . p . . . . . . . . . . .
p . . . p . . .
. . . .
p . . .
. . . .
p . . .
. . . .
| 1 2 1 2 1 3
1 2 1 2 2 3
1 2 1 2 3
1 1
1
1
1
1
1
| 1 1 1 1 1 2
1 1 1 1 1 2
1 1 1 1 2
1 1
1
1
1
1
1
| 12 12 12 12 12 24
12 12 12 12 12 24
12 12 12 12 24
12 12
12
12
12
12
12
|
控 制 转 移 类(1)
助 记 符 |
用符号表示的操作 | 标 志 | 字 节 数 | 周 期 数 | 振 荡 周 期 |
POVACC | |||||
ACALL addr11
LCALL addr16
RET
RETI
AJMP addr11
LJMP addr16 SJMP rel
JMP @A+DPTR JZ rel
JNZ rel
CJNE A,direct,rel
CJNE A,#data,rel
| (PC)←(PC)+2, (SP)←(SP)+1 (SP)←(PC7-0) (SP)←(SP)+1 (SP)←(PC15-8) (PC10-0)←页地址a10-a0 (PC)←(PC)+3, (SP)←(SP)+1 (SP)←(PC7-0) (SP)←(SP)+1 (SP)←(PC15-8) (PC)←addr15-0 (PC15-8)←((SP)), (SP)←(SP)-1 (PC7-0)←((SP) (SP)←(SP)-1 (PC15-8)←((SP)) (SP)←(SP)-1 (PC7-0)←((SP) (SP)←(SP)-1 (PC)←(PC)+2 (PC10-0)←页地址a10-a0 (PC)← addr15-0 (PC)←(PC)+2 (PC)←(PC)+rel (PC)←(A)+(DPTR) (PC)←(PC)+2 IF(A)=0 THEN (PC)←(PC)+rel (PC)←(PC)+2 IF(A)≠0 THEN(PC)←(PC)+rel (PC)←(PC)+3 IF(A)≠(direct) THEN (PC)←(PC)+rel IF(A)<(direct) THEN (C)←1 ELSE (C)←0 (PC)←(PC)+3 IF(A)≠data THEN (PC)←(PC)+rel IF(A)<data THEN (C)←1 ELSE (C)←0 | . . . .
. . . .
| 2
2
1
1
2 3 2
1 2
2
3
3
| 2
2
2
2
2 2 2
2 2
2
2
2
| 24
24
24
24
24 24 24
24 24
24
24
24
|
控 制 转 移 类(2)
助 记 符 |
用符号表示的操作 | 标 志 | 字 节 数 | 周 期 数 | 振 荡 周 期 |
POVACC | |||||
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
DJNZ Rn,rel
DJNZ direct,rel
NOP | (PC)←(PC)+3 IF(Rn)≠data THEN (PC)←(PC)+rel IF(Rn)<data THEN (C)←1 ELSE (C)←0
(PC)←(PC)+3 IF((Ri))≠data THEN (PC)←(PC)+rel IF((Ri))<data THEN (C)←1 ELSE (C)←0
(PC)←(PC)+2 (Rn)←(Rn)-1 IF(Rn)>0 OR (Rn)<0 THEN (PC)←(PC)+rel
(PC)←(PC)+2 (direct)←(direct)-1 IF(direct)>0 OR (direct)<0 THEN (PC)←(PC)+rel
空操作(PC)←(PC)+1 | . . . .
| 3
3
3
2
1 | 2
2
2
2
1 | 24
24
24
24
12 |
布 尔 变 量 操 作 类
助 记 符 |
用符号表示的操作 | 标 志 | 字 节 数 | 周 期 数 | 振 荡 周 期 |
POVACC | |||||
CLR C CLR bit
SETB C SETB bit CPL C CPL BIT
ANL C,bit ANL C, ORL C,bit ORL C, MOV C,bit MOV bit,C JC rel
JNC rel
JB bit,rel
JNB bit,rel
JBC bit,rel
| (C)←0 (bit)←0
(C)←1 (bit)←1 (C)← (bit)←
(C)←(C)∧(bit) (C)←(C)∧ (C)←(C)ˇ(bit) (C)←(C)∧ (C)←(bit) (bit)←(C) (PC)←(PC)+2 IF(C)=1 THEN (PC)←(PC)+rel (PC)←(PC)+2 IF(C)=0 THEN (PC)←(PC)+rel (PC)←(PC)+3 IF(bit)=1 THEN (PC)←(PC)+rel (PC)←(PC)+3 IF(bit)=0 THEN (PC)←(PC)+rel (PC)←(PC)+3 IF(bit)=1 THEN (PC)←(PC)+rel (bit)←0 | . . . ↑ . . . .
. . . ↑ . . . . . . . ↑ . . . .
. . . ↑ . . . ↑ . . . ↑ . . . ↑ . . . ↑ . . . . . . . .
. . . .
. . . .
. . . .
. . . .
| 1 2
1 2 1
2
2 2 2 2 2 2 2
2
3
3
3
| 1 1
1 1 1
1
2 2 2 2 2 2 2
2
2
2
2
| 12 12
12 12 12
12
24 24
24
24 24 24
24
24
24
24
|