片内RAM中的寄存器
89C51共21个SFR(Special Function Registers)特殊功能寄存器,按其使用功能可分为5类:
字节地址 | 位地址 | 寄存器 | 列别 | |||||||
FF | ||||||||||
F0 | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | B | CPU控制寄存器 |
E0 | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC | CPU控制寄存器 |
D0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | PSW | CPU控制寄存器 |
B8 | —— | —— | —— | BC | BB | BA | B9 | B8 | IP | 中断控制寄存器 |
B0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 | 并行I/O口 |
A8 | AF | —— | —— | AC | AB | AA | A9 | A8 | IE | 中断控制寄存器 |
A0 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 | 并行I/O口 |
99 | 不可寻址位 | SBUF | 串行口控制 | |||||||
98 | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 | SCON | 串行口控制 |
90 | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | P1 | 并行I/O口 |
8D | 不可寻址位 | TH1 | 定时器/计数器 | |||||||
8C | 不可寻址位 | TH0 | 定时器/计数器 | |||||||
8B | 不可寻址位 | TL1 | 定时器/计数器 | |||||||
8A | 不可寻址位 | TL0 | 定时器/计数器 | |||||||
89 | 不可寻址位 | TMOD | 定时器/计数器 | |||||||
88 | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 | TCON | 定时器/计数器 |
87 | 不可寻址位 | PCON | 串行口控制 | |||||||
83 | 不可寻址位 | DPH | CPU控制寄存器 | |||||||
82 | 不可寻址位 | DPL | CPU控制寄存器 | |||||||
81 | 不可寻址位 | SP | CPU控制寄存器 | |||||||
80 | 87 | 86 | 85 | 84 | 83 | 82 | 81 | 80 | P0 | 并行I/O口 |
8051/89C51共有21个专用寄存器,介绍如下:
第一类:CPU控制寄存器:B、ACC、PSW、SP、DPL、DPH、PC(不算专用寄存器);
(1)B寄存器(Base Register) B寄存器也是一个8位寄存器,主要用于乘除运算。乘法运算时,B存乘数,乘法操作后,乘积的高8位存于B中;除法运算时,B存除数,除法操作后,余数存于B中。此外,B寄存器也可作为一般寄存器使用。
- 寄存器 B
- 助记符:B
- 地址:F0H
- 位数:8位
- 作用:常在乘、除指令中用到,其他时刻作为一般的通用寄存器或RAM单元使用。
- 在乘指令中两个操作数即两个乘数取之于累加器A和寄存器B中,所得16位积的高8位放在B中,低八位放在A中。 附:乘法指令:MUL A B
- 在除指令中A存放被除数,B存放除数,商存放于A,商存放于B中。附:DIV A B
(2)累加器(Accumulator,ACC) 累加器为8位寄存器,是最常用的专用寄存器,功能较多,地位重要。它既可用于存放操作数,也可用来存放运算的中间结果。MCS-51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。
- 累加器 ACC
- 助记符: A
- 地址:E0H
- 位数:8位
- 作用:最常用的8位特殊功能寄存器,指令操作数常存放于A中以及许多运算中间结果存放于A中。
(3)程序状态字(Program Status Word,PSW) 程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则使用软件方法设定。PSW的位状态可以用专门指令进行测试,也可以用指令读出。一些条件转移指令根据PSW某些位的状态进行程序转移。PSW的各位定义如下图所示。
PSW位地址:
位地址 | D7H |
D6H |
D5H |
D4H |
D3H |
D2H |
D1H |