51单片机的内部结构和特殊寄存器

二、内部结构

2.1 内部组成

  1. 一个8位CPU

  2. 一个时钟电路

  3. 4KB程序存储器

  4. 128B数据存储器(这里指的是内部数据RAM区大小,不包括SFR(专用寄存器)区,所以这里指的是内部RAM低128个单元,00H-7FH)

  5. 两个16位定时/计数器

  6. 64KB扩展总线控制电路。为什么是64KB?因为扩展电路时P0口和P2口分别用作地址低八位和高八位,总共16位寻址空间,即64KB

  7. 4个8位并行IO端口

  8. 1个可编程串行接口

  9. 5个中断源(2个定时器,2个外部中断,1个串行通信中断),包括两个中断优先级嵌套

2.2 内部RAM

 低128单元为内部数据RAM区(00H-0FH),高128单元为SFR区(80H-FFH)。

2.2.1 内部低128个单元

C语言使用**data**关键字读写内部RAM单元内容,可采用直接或间接寻址方式进行数据传送
  1. 00H—1FH为通用寄存器区,共四组,每组为R0~R7八个寄存器单元。寄存器组的选取通过程序状态寄存器PSW的RS1、RS0位确定。

  2. 20H—2FH为位寻址区,可对单元里的每一位进行位操作,也可作为一般的RAM区进行字节操作。

  3. 30H—7FH为堆栈区、数据缓冲区,即用户RAM区。栈顶位置由SP指针确定,堆栈地址空间是向上增长的,一般将SP初始化设置为大于30H。只能按字节存取。

地址 功能
80H~FFH 高128字节,用于SFR
30H~7FH 数据缓冲区
20H~2FH 16个字节(128位)可位寻址bdata区
18H~1FH 第四组寄存器R0~R7
10H~17H 第三组寄存器R0~R7
08H~0FH 第二组寄存器R0~R7
00H~07H 第一组寄存器R0~R7

2.2.2 内部高128个字节

21个SFR(特殊功能寄存器)离散分布(只能使用直接寻址的方式)。

至于什么叫不可寻址,则是指不能单独进行每一位的操作,如TMOD定时器工作模式及工作方式寄存器,在进行操作时,只能写**TMOD=0xXX**。

关于能否进行位操作,可以通过查相关资料知道,当然还有个技巧就是其字节地址换成**10**进制后能否被“****8****”整除,能被“****8****”整除的就能进行位操作,不能被“****8****”整除就不能,如**P1**地址为**90H**,**10**进制为**144**, **144/8=18**,能被整除,所以可以位操作。再如**TMOD**地址为**89H**, **10**进制为**137**,**137/8=17.125**,不能被整除,所以不可以位操作。
特殊寄存器
寄存器符号 地址 寄存器名称
ACC E0H 累加器
B F0H B寄存器
PSW D0H 程序状态字
SP 81H 栈顶指针
DPL 82H 数据指针低8位
DPH 83H 数据指针高8位
IE A8H 中断允许控制寄存器
IP B8H 中断优先控制寄存器
P0 80H I/O口0
P1 90H I/O口1
P2 A0H I/O口2
P3 B0H I/O口3
PCON 87H 电源控制及波特率选择寄存器
SCON 98H 串行口控制寄存器
SBUF 99H
  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值