8051单片机原理学习
8051单片机原理学习
单片机结构框图
51单片机的结构框图如下所示
51单片机主要组成部件有:
- 8bit微处理器(CPU): 主要进行算术运行和逻辑控制
- 片内4KB程序存储器(4KB ROM): 用以可执行程序,只读数据和表格
- 片内256B数据存储器(256B RAM): 用于存放可读写数据,如算术运行的中间值和最终值等
- 4个8位并行I/O口(输入/输出口) P0 ~ P3: 每个并口可以用作输入,也可以用作输出
- 2个定时/计数器:每个定时/计数器可以设置为计数方式,也可以设置为定时方式,计数方式用于对外部事件进行技术。定时方式根据计数或者定时的结果进行相应的周期性处理。
- 1个全双工串口通信I/O口:用于实现单片机与其他外围设备进行串口通信
- 片内振荡器和时钟产生电路:需外借晶振和电容给单片机提供原始时钟
- 5个中断源的中断控制系统:
单片机内部结构图
单片机内部的详细组件图如下所示
看上图似乎非常的复杂,不过主要分为四大部分,如下图不同颜色框出来的所示
- 运算单元(红色框图):主要进行算术运算(加减乘除)和逻辑运行(与,或,非)
- 控制单元(蓝色框图):控制单片机的各种操作
- 存储单元(粉色框图):主要有ROM和RAM,其中ROM用于存储程序,RAM用于存储定义的变量等。
注: 可以通过code这个指令来将定义的变量放在ROM,而不是RAM中,节省RAM资源 - 外部接口(绿色框图):主要是对外部设备的I/O控制接口
51单片机存储单元结构
单片机中执行的程序先保存在存储单元中,然后才能被执行,因此先对单片机中的存储单元结构进行介绍。
51单片机的存储单元结构如下:
- 内置4KB大小的ROM
- 内置256B大小的RAM
- 可以外接64K的ROM和64K的RAM
因此,从物理结构角度看,51单片机的存储系统分为4个存储空间: - 片内ROM
- 片内RAM
- 片外ROM
- 片外RAM
从单片机执行程序角度看,51单片机的存储系统实际上分为3个存储空间
- 片内RAM
- 片外RAM
- 片内ROM或者片外ROM(由引脚EA电平来确定,EA = 1选择片内ROM, EA = 0选择片外ROM)
ROM中存储的是程序,常量或者表格等,当执行程序时,由EA引脚的电平来决定是从片内ROM中取指令执行还是从片外ROM中取指令执行。
EA = 1时,CPU执行片内ROM中的程序
EA = 0时,CPU执行片外ROM中的程序
无论从片内ROM还是片外ROM中的程序,都是从ROM的地址0000H处开始执行。
注
虽然系统可能同时具备片内ROM和外部ROM,但是在一般正常使用时,通过/EA引脚的电平来选择其一(或者使用内部ROM,或者使用外部ROM)。
由于片内ROM的大小是4KB,那么当程序大小超过4KB时,有如下两种使用ROM的方式
- 方式1:设置EA = 0,直接使用片外ROM,从地址0000H开始
- 方式2:设置EA = 1,使用片内4KB ROM(从0000H地址开始)和片外64KB ROM(片外ROM从1000H地址开始
如下图所示
需要特别注意的地方时, ROM中有6个地址空间位置具有特定的功能
- 0000H地址:上电或者复位时,程序计数器PC所指向的单元,用来存放程序的第一条指令
- 0003H地址:外部中断/INT0的向量入口地址
- 000BH地址:定时器T0溢出中断的向量入口地址
- 0013H地址:外部中断/INT1的向量入口地址
- 001BH地址:定时器T1的溢出中断向量入口地址
- 0023H地址:串行口接收、发送的中断向量入口地址
向量入口地址,指的是当中断产生时,调用的入口函数所在的存储位置。
因此,程序在ROM中布局结构如下图
从上图可知,单片机在上电开机或者复位后的第一条指令存储在0000H地址处,该地址处的指令是一条跳转指令,直接跳转到0100H地址处, 而0100H地址处才是真正的主程序入口地址。