『单片机原理』程序存储器的结构

简介: 相信学习单片机的小伙伴们一定听说过一门课程,那就是单片机原理。如果你也是玩单片机的却不怎么懂单片机原理的。那么这单片机原理还是非常有必要学习一下的。如果你问我学了有什么好处,那么应该就是你可能会对单片机(内部)的理解更"深"吧&同时也对你学习单片机编程也是有极大的很多好处的👋

Hello🥂謓泽👋多多指教😛

HY点赞👍收藏⭐️留言📝

前言

相信学习单片机的小伙伴们一定听说过一门课程,那就是单片机原理。如果你也是玩单片机的却不怎么懂单片机原理的。那么这单片机原理还是非常有必要学习一下的。如果你问我学了有什么好处,那么应该就是你可能会对单片机(内部)的理解更"深"吧&同时也对你学习单片机编程也是有极大的很多好处的👋

 ㈠『MCS - 51』系列单片机存储器结构

MCS - 51 系列的单片机存储器的结构如下👇

image.gif

⒈程序存储器ROM

ROM 的功能⇢ROM的数据在程序运行的时候是不容改变的,除非你再次烧写程序,他就会改变。就像我们的书本,印上去就改不了了,除非再次印刷,这个就是ROM的原理。

🍎存放单片机工作时的程序,单片机在上电工作的时候,程序指令制导单片机完成设定的功能。没有ROM存储器,单片机是不能够进行工作的。

⒉程序存储器的编制与访问

在MCS - 51系列当中不同的机型的程序存储器。

一、8031和8032内部没有ROM。访问空间就只能是片外的存储器。

二、8051片内有4kB的ROM。8751内部有4kB。

三、8052片内有8kB的ROM。8752内部有8kB。

拓展知识点[kB]:指的是单片机的容量。

K的意思是KB 也就是1024字节。每字节有8bit(比特位)也就是每字节有8位,1个字节=8个比特位。

㈡ 程序存储器ROM ⇿ EA

MCS - 51单片机的程序存储器从物理结构上被分为如下↓两种

⒈⇢ 片内程序存储器 ROM〖不同型号的容量不同〗

⒉⇢ 片外程序序存储器 ROM〖64kB地址空间,外部通过总线来进行访问〗

对于8051单片机鉴于片外ROM有4kB与片内的ROM编制是由重复的,为了取指令操作码的时候仅仅访问一个存储单元,单片机设置了一根控制线EA[非]

🍘EA[非] = 1(5V) PC值大于某值(由容量决定)为访问外部程序存储器,PC值小于某值(由容量决定)只为访问内部程序存储器。

🍙EA[非] = 0(0V) 内部程序存储器被忽略。

🍅注→【PC】程序计数器,用于指示当前将要执行的下一条机器指令的内存地址。

image.gif

㈢ 程序存储器的7个特殊地址

MCS-51系列单片机复位后的PC的内容为0000H(0000[H]代表着十六进制的数)故单片机复位后将从0000H单元开始执行车光绪。程序存储器的0000H单元地址是系统程序的启动的地址。这里一般放一条绝对转移指令。

image.gif编辑

在上述图中有⒍个中断源的地址之间仅隔⑧个单元,存放中断服务程序往往不够用。这是通常放一条绝对转移的指令,转到真正的中断服务程序,真正的中断服务程序放到后面当中。

®数据存储器RAM

RAM 的功能⇢RAM就是在程序运行中,数据会随时改变的,就像我们的黑板,写上了可以擦,擦完再写上去,相当于程序运行的时候,调用ROM里面的数据进行各种运算。

🍏数据存储器(RAM)存储单片机运行期间所需要的数据和临时生成的数据是需要能够快速读出和写入数据的。此类存储器在掉电之后,存储的数据会丢失,并不能永久保存。

由于数据存储器包含单片机工作时所需要的多种用途的存储器,各部分存储器特性不同访问方式也是不同的。

㈣ 数据存储器RAM

MCS - 51单片机的程序存储器从物理结构上被分为如下⇲两种

⒈⇢片内数据存储器RAM(片内连线访问,不同型号大小不同)

⒉⇢片外数据存储器RAM(64kB地址空间,外部通过16地址总线来进行访问)

工作寄存器组区

image.gif

位寻址区

image.gif

一般RAM区

image.gif

堆栈区与堆栈指针

image.gif

㈤ 堆区和栈区

堆区

在执行函数的时候,函数内部局部变量的存储单元都是可以在栈上进行创建的,函数执行结束的时候这些存储单元会被自动的进行释放。栈区主要存放运行函数所分配的局部变量,函数的参数、返回数据、返回地址等。

栈区

通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配;有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态存储分配。所有动态存储分配都在堆区中进行。

当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对象。当不再使用该变量或对象时,也就是它的生命结束时,要显式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源。

㈥ 特殊功能寄存器

特殊功能寄存器(Special Function Register) 专门用于控制、管理片内的算数逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作,用户在编程的时候可以给其设定值,但不能移作它用。分布在80[H]~FF[H]地址空间。与片内数据存储存储器统一编制,除PC外,51的子系列有18个特殊功能的寄存器。52子系列一共有21个特殊功能寄存器。

注⇢以下篮字所标注的一些特殊功能寄存器的词汇不懂可以前往百度查阅相关知识🉑

MCS-51单片机的特殊功能寄存器

符号

地址

功能介绍

B

F0H

B寄存器

ACC

E0H

累加器

PSW

D0H

程序状态存储器

TH2*

CDH

定时器/计数器2(高8位)

TL2

CCH

定时器/计数器2(低8位)

RLDH

CBH

外部输入(P1.1)计数器/自动再装入模式时初值寄存器高八位

RLDL

CAH

外部输入(P1.1)计数器/自动再装入模式时初值寄存器低八位

T2CON*

C8H

T2定时器/计数器控制寄存器

IP

B8H

中断优先级控制寄存器

P3

B0H

P3口锁存器

IE

A8H

中断允许控制寄存器

P2

A0H

P2口锁存器

SBUF

99H

串行口锁存器

SCON

98H

串行口控制寄存器

P1

90H

P1口锁存器

TH1

8DH

定时器/计数器1(高8位)

TH0

8CH

定时器/计数器0(高8位)

TL1

8BH

定时器/计数器1(低8位)

TL0

8AH

定时器/计数器0(低8位)

TMOD

89H

T0、T1定时器/计数器方式控制寄存器

TCON

88H

T0、T1定时器/计数器控制寄存器

DPH

83H

数据地址指针(高8位)

DPL

82H

数据地址指针(低8位)

SP

81H

堆栈指针

P0

80H

P0口锁存器

PCON

87H

电源控制寄存器

目录
相关文章
|
7月前
|
开发框架 .NET 网络性能优化
MCS-51单片机的基本结构
MCS-51单片机的基本结构
513 1
|
2月前
|
传感器 存储 物联网
单片机的原理与应用
单片机是一种将计算机的CPU、存储器、输入输出接口等功能集成在一块芯片上的微型计算机,被广泛应用于各类控制系统和智能设备中。
82 5
|
4月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
132 3
|
4月前
|
人工智能 开发者 芯片
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
使用AI大语言模型编写 单片机程序. 使用的是 OpenAI公司发布的 ChatGPT .在ChatGPT上有别人训练好的 单片机工程师 with Keil uVision 5 - C Code Explainer模型, 可以上传电路图改模型可以通过这个用户所给的电路图进行编程.
361 0
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
|
7月前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
5月前
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
|
6月前
技术心得记录:单片机开发过程中使用结构体简化程序
技术心得记录:单片机开发过程中使用结构体简化程序
36 0
|
7月前
|
存储 监控 芯片
单片机的扩展结构
单片机的扩展结构
193 2
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】利用【时间延迟】的原理规避【按键抖动问题】
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)