AT89S51单片机片内硬件结构
( 本节以AT89S51为例介绍51单片机的基本结构,如下图所示)
AT89S51单片机的片内结构,从图中可见 AT89S51单片机的基本组成:
1. CPU:8位的CPU 由控制器和运算器构成
2. 数据存储器(RAM):128B 用于存放读写数据、运算的中间结果
3. 程序存储器(ROM):4KB 用于存放用户程序、原始数据或表格
4. 4个8位的并行I/O口:P0~P3 用于数据的输入/输出
5. 1个全双工的异步串行口:UART 用于与其他设备间的串行数据传送
6. 中断系统: 具有5个中断源,2级中断优先级
7. 定时/计数器:有2个16位的T/C 可作为定时器也可作为计数器使用
8. 特殊功能寄存器:SFR 在80H~FFH地址区间内,离散地分布26个特殊功能寄存器
9. 看门狗定时器:WDT 可将单片机复位,使程序恢复正常运行
单片机的外部结构
目前,51单片机多采用40引脚双列直插式(PDIP)封装形式。此外,还有44引脚塑料方型扁平式(TQFP)封装形式的芯片,如下图所示
AT89S51的引脚功能
40个引脚按其功能可分为4类:
1.电源引脚:Vcc(40脚):接+5V电源正端
Vss(20脚):接+5V电源地端
2.时钟电路引脚:XTAL1(19脚):片内振荡器的反相放大器输入端
XTAL2(18脚):片内振荡器的反相放大器输出端。
3.并行I/O口引脚: 4个并行I/O口(P0~P3),每个口都有8个引脚,用于传送数据和地址
4. 控制引脚
(1)RST(9脚):复位信号输入引脚,在该引脚出现2个机器周期以上的高电平,可使单片机复位。正常工作,此引脚应为≤ 0.5V的低电平
(2) PSEN(29脚):片外程序存储器读选通信号输出引脚,低电平有效
(3)ALE/PROG(30脚):低8位地址锁存控制信号输出引脚,低电平有效
① CPU访问外部程序存储器或外部数据存储器时,将低8位地址锁存在片外的地址锁存器中
② 单片机正常运行时,ALE端一直有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6
(4)EA/VPP(31脚):外部程序存储器访问允许控制信号输入引脚
AT89S51单片机存储器的结构
存储器分为两大类:
数据 存储器 (RAM):CPU在运行时,能随时对其进行数据的写入和读出。但在关闭电源时,其所存储的数据信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果
程序 存储器 (ROM):是一种写入信息后,不易改写的存储器。 断电后,ROM中的信息保留不变。用来存放固定的程序、原始的数据或表格等
AT89S51单片机的存储器有4个存储物理空间,具体如下图所示:
存储器中的每个存储单元是8位,每一个单元有一个地址编号,从0000H~FFFFH
~ROM和RAM分别在两个独立的空间,即分开编址
程序存储器(ROM)
1. 计算机的工作原理:计算机在工作时,CPU自动从程序存储器中逐条取出指令、分析指令,并根据指令的操作类型和操作对象执行指令,完成相应的操作。如此重复,直至执行完程序的所有指令,从而实现程序的基本功能,这就是微型计算机的基本工作原理
2.程序计数器PC: PC是CPU中的一个16位寄存器,用于存放CPU将要从ROM中读取的下一个指令字节码的地址,因此也称为地址指针;单片机复位后,PC的值为0000H,CPU从程序存储器0000H地址单元开始读取一个指令字节,并开始执行程序,同时PC+1→PC;依次进行,一次读取一个指令字节
3.片内与片外程序存储器的选择:
(1)EA引脚接高电平,EA接+5V
① 当PC值没有超出0FFFH时,只读取片内Flash存储器中程序
② 当PC值超出0FFFH时,CPU会自动转向读取片外程序存储器空间1000H~FFFFH内的程序
(2)EA引脚接低电平,EA接地
CPU只根据PC值读取片外程序存储器(0000H~FFFFH)中的程序。不会读取片内4KB Flash存储器
4.程序存储器低端的几个特殊单元
程序存储器中几个低端的地址固定用作特定的入口地址
0000H:单片机复位后的地址
0003H:外部中断0的中断程序入口地址
000BH:定时/计数器0溢出中断程序入口地址
0013H:外部中断1的中断程序入口地址
001BH:定时/计数器1溢出中断程序入口地址
0023H:串行口的中断程序入口地址
数据存储器(RAM)
一、 片内数据存储器
AT89S51片内RAM 128字节(00H—7FH) AT89S52片内RAM 256字节(00H—FFH)
1.工作寄存器区
片内RAM前32个单元(00H—1FH)是4个工作寄存器区
4个工作 寄存器区:每个工作寄存器区有8个工作寄存器: R0、R1、R2、R3、R4、R5、R6、R7
注:当前工作寄存器区只能有一个
当前工作寄存器的选择:首先由RS1,RS0选择工作寄存器区,然后确定工作寄存器对应的单元。 复位后,默认的工作寄存器区为0区
程序状态字寄存器PSW:
▼RS1(PSW.4)、RS0(PSW.3)工作寄存器区选择位
若在一个实际的单片机应用系统中,并不需要4个工作寄存器区,这个区域的多余单元可以作为一般的数据缓冲器使用
2. 位寻址区
片内RAM中,20H-2FH 这16个单元是位寻址区
这16个单元中共有128位, 每一位都有一个位地址
位地址空间:00H—7FH
CPU对位寻址区内的RAM单元(20H~2FH):
1、既可以采用字节操作指令,整体操作某个字节
2、又可以采用位操作指令,直接对字节中的某一位进行操作
用途: 一般可用作程序运行标志、开关量控制以及位变量等
这种位寻址能力是一般微机所不具备的,是单片机所独有的
位寻址区多余的RAM单元也可以作为一般的数据缓冲器使用
3. 数据缓冲区
地址:30H-7FH(30H-FFH)单元
用途:存放各种读写数据和中间结果,起到数据缓冲的作用
二、片外数据存储器
片内RAM不够用时,AT89S51最多可外扩64KB的片外RAM
注意:片外RAM和外扩的I/O接口是统一编址的,要注意地址分配的问题
特殊功能寄存器区
特殊功能寄存器区:80H~FFH的地址空间,只允许直接寻址SFR,26个特殊功能寄存器 离散地分布在80H~FFH的地址空间
特殊功能寄存器SFR(专用寄存器) 专用于控制、选择、管理、存放单片机内部各功能部件的工作方式、条件、状态、结果的寄存器
不同的SFR管理不同的功能部件,负责不同的功能——各司其职
换言之:要让单片机内部各功能部件实现预定的功能,很重要的一项工作就是对SFR写命令(编程)
AT89C51特殊功能寄存器位地址和字节地址表,如下图所示
注:字节地址尾数为0或8的特殊功能寄存器,每位都有位地址,可位操作
特殊功能寄存器每一位的定义和作用与单片机的各个部件直接相关
特殊功能寄存器详细用法在相应的章节进行说明
AT89S51的中央处理器(CPU)
组成:运算器+控制器
功能:从ROM中读取指令、分析指令并根据指令的操作类型和操作对象,控制各个功能部件执行指令
运算器
组成:算术逻辑单元ALU+有关寄存器
功能:进行数据的算术运算、逻辑运算、位操作运算以及数据传输等
专用寄存器
1.累加器A(E0H):是CPU中使用最频繁的一个8位寄存器。它既是ALU的输入数据源之一,同时又是ALU运算结果的存放单元之一;CPU中的数据传送大多都通过累加器A
2.通用寄存器B(F0H):用于乘、除法运算;若不作乘除法运算时,则可作为通用寄存器使用
3.程序状态字PSW(D0H):用于保存指令执行结果的状态信息,以供程序查询和判断
▼CY(PSW.7) 进位/借位标志位:若在执行某些算术运算类指令时,最高位发生了进位或借位,则CY=1,否则CY=0。它也是位处理器中的位累加器C,可用于位操作
▼AC(PSW.6) 辅助进位/借位标志位:若在执行某些算术运算类指令时,D3位向D4位发生了进位或借位,则AC=1,否则AC=0
▼F0(PSW.5) 用户自定义标志位:在编程时,用户可根据需要对F0赋予一定的含义,通过指令来使它置1或清0;也可由指令来测试该标志位,根据测试结果控制程序的流向
▼OV (PSW.2) 溢出标志位:当执行带符号8位二进制数(-128~+127)的某些算术运算类指令时,用来指示运算结果是否产生溢出(超出范围)。如果结果产生溢出,OV=1;否则,OV=0
▼P (PSW.0) 奇偶标志位:在指令执行完后,CPU根据累加器A中“1”的个数是奇数还是偶数自动给该标志位置1或清0。累加器A中“1”的个数为奇数:P=1;为偶数:P=0
控制器
组成:程序计数器(PC)、指令寄存器、指令译码器、定时控制逻辑电路等
功能:是整个单片机的控制中心;
对内:控制指令的读入、译码和执行,从而对各功能部件进行定时和逻辑控制
对外:发出ALE、PSEN等控制信号