51单片机架构

本文详细介绍了8051单片机的基本组成,包括CPU、存储器、时钟电路、中断系统、定时器/计数器和I/O等部分。阐述了各部分的原理、功能及工作方式,如CPU中三极管的作用、存储器的分类和使用、定时器的不同模式等,为深入了解8051单片机提供了全面的知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8051单片机的基本组成

(1)一个 ** **8 ** **位微处理器 ** **CPU ** **。

(2)片内数据存储器 ** **RAM ** **和特殊功能寄存器 ** **SFR ** **。

(3)片内程序存储器 ** **ROM ** **。

(4 )两个定时/计数器 ** **T0 ** **、 ** **T1 ** **,可用作定时器,也可用以对外部脉冲进行计数。

(5)四个8位可编程的并行 ** **I/O ** **端口,每个端口既可作输入,也可作输出。

(6)一个串行端口,用于数据的串行通信。

(7)中断控制系统。

(8)内部时钟电路。

01 CPU

CPU内部组成;主要由三极管组成的逻辑电路;构成运算器;控制器

三极管原理

** **三极管在cpu中主要作用:开关 ** **(构成逻辑门电路)

三极管的集电极电流在一定范围内随基极电流呈线性变化,这就是放大特性。当基极电流高过此范围时,三极管集电极电流会达到饱和值 (导通),基极电流低于此范围时,三极管会进入截止状态(断路), 这种导通或截止的特性在电路中可起到开关作用;

三极管共有有三种工作方式,根据其可搭建逻辑门电路

** **逻辑非 ** **
请添加图片描述

** **逻辑与 ** **

在这里插入图片描述

** **逻辑或 ** **

在这里插入图片描述

根据逻辑门可搭建简单加法器

1位加法器(也称之为半加法器),

在这里插入图片描述

在此基础上可实现全加法器。

在计算机中负数以补码表示;
原码:将一个整数,转换成二进制,就是其原码。
如单字节的5的原码为:0000 0101;-5的原码为1000 0101。
反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。
如单字节的5的反码为:0000 0101;-5的反码为1111 1010。
补码:正数的补码就是其原码;负数的反码+1就是补码。
如单字节的5的补码为:0000 0101;-5的原码为1111 1011。
在计算机中,正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。
负数用补码表示,如单字节-5,在计算机中表示为1111 1011。
乘法运算;除法运算均可转化为“+”运行算;最终将数学运算转换成逻辑运算;
在这里插入图片描述

运算器

运算器以算术逻辑单元ALU为核心,加上累加器ACC、暂存寄存器TMP和程序状态字寄存器PSW等所组成。ALU主要用于完成二进制数据的算术和逻辑运算,并通过对运算结果的判断影响程序状态字寄存器PSW中有关位的状态。

控制器

控制器包括程序计数器PC、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协调单片机各部分正常工作。

**程序计数器 ** **PC ** : 当一条指令按PC所指向的地址从程序存储器中取出之后,PC的值会自动增量,即指向下一条指令。

**堆栈指针 ** **SP ** : 用来指示堆栈的起始地址。80C51单片机的堆栈位于片内RAM中,而且属于“上长型”堆栈,复位后SP被初始化为07H,使得堆栈实际上由08H单元开始。

指令译码器: 当指令送入指令译码器后,由译码器对该指令进行译码,CPU根据译码器输出的电平信号使定时控制电路产生执行该指令所需要的各种控制信号。

**数据指针寄存器 ** DRTR: 它是一个16位寄存器,由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对片外64kB的数据RAM区进行读写操作。

02 存储器

程序存储器

程序存储器用于存放用户程序、数据和表格等信息。

​ STC89C51RC系列单片机内部有
​ 512字节的数据存储器,其在物理和逻辑上都分为两个地址空间:内部RAM(256字节)和内部扩
​ 展RAM(256字节)。另外,STC89C51RC/RD+系列单片机还可以访问在片外扩展的64KB外部
​ 数据存储器。

单片机内部集
成了4K~64K字节的Flash程序存储器。STC89C51RC/RD+系列各种型号单片机的片内程序Flash
存储器的地址如下表所示。

在这里插入图片描述

​ 单片机复位后,程序计数器(PC)的内容为0000H,从0000H单元开始执行程序。 STC89C51RC/RD+单片机利用EA引脚来确定是访问片内程序存储器还是访问片外程序存储器。当EA引脚接高电平时,对单片机首先访问片内程序存储器,当PC的内容超过片内程序存储器的地址范围时,系统会自动转到片外程序存储器。当若EA引脚接高电平,单片机首先从片内程序存储器的0000H单元开始执行程序,当PC的内容超过3FFFH时系统自动转到片外程序存储器中取指令。此时外部程序存储器的地址从4000H开始。
​ 中断服务程序的入口地址(又称中断向量由于相邻中断入口地址的间隔区间(8个字节)有限,一般情况下无法保存完整的中断服务程序,因此,一般在中断响应的地址区域存放一条无条件转移指令,指向真正存放中断服务程序的空间去执行。)也位于程序存储器单元。在程序存储器中,每个中断都有一个固定的入口地址,当中断发生并得到响应后,单片机就会自动跳转到相应的中断入口地址去执行程序。外部中断0的中断服务程序的入口地址是0003H,定时器/计数器0中断服务程序的入口地址是000BH,外部中断1的中断服务程序的入口地址是0013H,定时器 /计数器1的中断服务程序的入口地址是001BH等。

内部RAM(数据存储器)

​ 内部RAM共256字节,可分为3个部分:128字节RAM(与传统51兼容)、128字节RAM(Intel在8052中扩展了高128字节RAM)及特殊功能寄存器区。低128字节的数据存储器既可直接寻址也可间接寻址。高128字节RAM与特殊功能寄存器区貌似共用相同的地址范围,都使用80H~FFH,地址空间虽然貌似重叠,但物理上是独立的,使用时通过不同的寻址方式加以区分。高128字节RAM只能间接寻址,特殊功能寄存器区只可直接寻址。

在这里插入图片描述

​ 低128字节RAM也称通用RAM区。通用RAM区又可分为工作寄存器组区,可位寻址区,用户 RAM区和堆栈区。工作寄存器组区地址从00H~1FH共32B(字节)单元,分为4组(每一组称为一个寄存器组),每组包含8个8位的工作寄存器,编号均为R0 ~ R7,但属于不同的物理空间。通过使用工作寄存器组,可以提高运算速度。R0~R7是常用的寄存器,提供4组是因为1组往往不够用。程序状态字PSW寄存器中的RS1和RS0组合决定当前使用的工作寄存器组。见下面PSW寄存器的介绍。可位寻址区的地址从20H ~ 2FH共16个字节单元。20H—2FH单元既可向普通RAM单元一样按字节存取,也可以对单元中的任何一位单独存取,共128位,所对应的地址范围是00H—7FH。位地址范围是00H----7FH,内部RAM低128字节的地址也是00H–7FH;从外表看,二者地址是一样的,实际上二者具有本质的区别;位地址指向的是一个位而字节地址指向的是 一个字节单元,在程序中使用不同的指令区分。内部RAM中的30H~FFH单元是用户RAM和堆栈区。一个8位的堆栈指针(SP),用于指向堆栈区。单片机复位后,堆栈指针SP为07H,指向了工作寄存器组0中的R7,因此,用户初始化程序都应对SP设置初值,一般设置在80H以后的单元为宜。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值