- 一、51单片机的引脚图和逻辑符号
- 1.1 引脚图
- 1.2 逻辑符号
- 1.2.1 并行IO引脚(32只)
- 二、内部结构
- 2.1 内部组成
- 2.2 内部RAM
- 2.2.1 内部低128个单元
- 2.2.2 内部高128个字节
- 特殊寄存器
- (1)ACC——累加器
- (2)B——一个寄存器
- (3)PSW——程序状态字
- (4)DPTR(DPH、DPL) ——数据指针
- (5)P0、P1、P2、P3——四个并行输入/输出口的寄存器。
- (6)IE——中断充许寄存器
一、51单片机的引脚图和逻辑符号 1.1 引脚图 1.2 逻辑符号 1.2.1 并行IO引脚(32只)
单片机又称为单片微计算机,最初的英文缩写是 SCM 。
Single Chip MicrocomputerIntel公司的MCS-51系列单片机是 8位 的单片机。
-
P0.0~P0.7(Pin32-Pin39),漏极开路的8位准双向口,内部无上拉电阻,所以做IO口使用时,必须外接上拉电阻。同时当与外部存储器通信时,它复用为低8位地址线和数据线。
-
P1.0~P1.7(Pin1-Pin8),内部带上拉电阻的8位准双向IO口。
-
P2.0~P2.7(Pin21-Pin28),内部带上拉电阻的8位准双向IO口。同时当与外部存储器通信时,它复用为高8位地址线。
-
P3.0~P3.7(Pin10-Pin17),内部带上拉电阻的8位准双向IO口,同时还有特殊功能。
a) P3.0/RXD为串行输入口
b) P3.1/TXD为串行输出口
c) P3.2 / INT0 ‾ overline{text{INT0}} INT0为外部中断0输入口
d) P3.3 / INT1 ‾ overline{text{INT1}} INT1为外部中断1输入口
e) P3.4 / T0为定时器0外部输入口
f) P3.5 / T1为定时器1外部输入口
g) P3.6 / WR ‾ overline{text{WR}} WR为写选通输出口(用于与外部存储器通信时)
h) P3.7 / RD ‾ overline{text{RD}} RD为读选通输出口(用于与外部存储器通信时)
-
RST(P9)为复位口,高电平有效(持续两个机器周期)。
-
XTAL2, XTAL1(P18、P19)为时钟电路引脚,可选择接入外部时钟或晶振电路。
-
PSEN ‾ overline{text{PSEN}} PSEN(P29)是片外程序存储器的读选通信号,低电平有效,CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。
-
ALE(P30)地址锁存允许,单片机正常上电时以时钟频率的1/6输出脉冲信号。当与外部存储器通信时,用于控制锁存器锁存P0口低8位地址,以实现P0口低8位地址线与8位数据线的复用。
-
EA ‾ overline{text{EA}} EA(P31)程序存储器地址允许输入端:
a) 高电平时,CPU执行片内ROM指令,但当PC(程序计数器)的值超过0FFFH(因为这 里ROM为4KB)时,自动跳转到外部程序存储器,地址空间允许范围为1000H—FFFFH(因为PC为32位寄存器,寻址空间为64KB)。
b) 低电平时,CPU执行片外ROM(程序存储器)指令,地址空间允许范围为0000H—FFFH(80C51的片外ROM是64KB)。
-
一个8位CPU
-
一个时电路
-
4KB程序存储器
-
128B数据存储器(这里指的是内部数据RAM区大小,不包括SFR(专用寄存器)区,所以这里指的是内部RAM低128个单元,00H-7FH)
-
两个16位定时/计数器
-
64KB扩展总线控制电路。为什么是64KB?因为扩展电路时P0口和P2口分别用作地址低八位和高八位,总共16位寻址空间,即64KB
-
4个8位并行IO端口
-
1个可编程串行接口
-
5个中断源(2个定时器,2个外部中断,1个串行通信中断),包括两个中断优先级嵌套
低128单元为内部数据RAM区(00H-0FH),高128单元为SFR区(80H-FFH)。
2.2.1 内部低128个单元C语言使用data关键字读写内部RAM单元内容,可采用直接或间接寻址方式进行数据传送
-
00H—1FH为通用寄存器区,共四组,每组为R0~R7八个寄存器单元。寄存器组的选取通过程序状态寄存器PSW的RS1、RS0位确定。
-
20H—2FH为位寻址区,可对单元里的每一位进行位操作,也可作为一般的RAM区进行字节操作。
-
30H—7FH为堆栈区、数据缓冲区,即用户RAM区。栈顶位置由SP指针确定,堆栈地址空间是向上增长的,一般将SP初始化设置为大于30H。
| 地址 | 功能 |
|---|---|
| 80H~FFH | 高128字节,用于SFR |
| 30H~7FH | 数据缓冲区 |
| 20H~2FH | 16个字节(28位)可位寻址bdata区 |
| 18H~1FH | 第四组寄存器R0~R7 |
| 10H~17H | 第三组寄存器R0~R7 |
| 08H~0FH | 第二组寄存器R0~R7 |
| 00H~07H | 第一组寄存器R0~R7 |
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 | 串行口数据缓冲寄存器 |
| TCON | 88H | 定时器控制寄存器 |
| TMOD | 89H | 定时器方式选择寄存器 |
| TL0 | 8AH | 定时器0低8位 |
| TL1 | 8BH | 定时器1低8位 |
| TH0 | 8CH | 定时器0高8位 |
| TH1 | 8DH | 定时器1高8位 |
通常用A表示。该标志常用于程序分支转移的判断条件。
(2)B——一个寄存器在做乘、除法时放乘数或除数。
(3)PSW——程序状态字存放CPU工作时的状态。
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| CY | AC | F0 | RS1 | RS0 | OV | P |
用途:
-
CY:进位标志。
-
AC:辅助进、借位(高半字节与低半字节间的进、借位)。
-
F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。
-
RS1、RS0:工作寄存器组选择位。
-
OV:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。
-
P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。
(5)P0、P1、P2、P3——四个并行输入/输出口的寄存器。 (6)IE——中断充许寄存器按位寻址,地址:A8H。
| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
|---|---|---|---|---|---|---|---|
| EA | - | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
-
EA (IE.7): EA=0时,所有中断禁止(即不产生中断)
EA=1时,各中断的产生由个别的允许位决定 -
-(IE.6) :保留
-
ET2(IE.5):定时2溢出中断充许(8052用)
-
ES (IE.4):串行口中断充许(ES=1充许,ES=0禁止)
-
ET1(IE.3):定时1中断充许
-
EX1(IE.2):外中断INT1中断充许
-
ET0(IE.1):定时器0中断充许
-
EX0(IE.0):外部中断INT0的中断允许
中断的自然优先级:
| 中断函数编号 | 中断名称 | 中断标志位 | 中断使能位 | 中断向量地址 | 默认优先级 |
|---|---|---|---|---|---|
| 0 | 外部中断0 | IE0 | EX0 | 03H | 1(最高) |
| 1 | 定时器T0中断 | TF0 | ET0 | 0BH | 2 |
| 2 | 外部中断1 | IE1 | EX1 | 13H | 3 |
| 3 | 定时器T1中断 | TF1 | ET1 | 1BH | 4 |
| 4 | UART中断(串口) | T1/R1 | ES | 23H | 5 |



