• 猿创征文|『单片机原理』程序存储器的结构


    Hello🥂謓泽👋多多指教😛

    HY点赞👍收藏⭐️留言📝​

    前言

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

    ✔程序存储器的结构目录👇

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

    ​编辑

    ⒈程序存储器ROM 

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

    ㈡ 程序存储器ROM ⇿ EA

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

    ®数据存储器RAM

    ㈣ 数据存储器RAM

    ㈤ 堆区和栈区

    ㈥ 特殊功能寄存器

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

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

    ⒈程序存储器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】程序计数器,用于指示当前将要执行的下一条机器指令的内存地址。

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

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

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

    ®数据存储器RAM

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

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

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

    ㈣ 数据存储器RAM

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

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

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

    工作寄存器组区

    位寻址区

    一般RAM区

    堆栈区与堆栈指针 

    ㈤ 堆区和栈区

    堆区

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

    栈区

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

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

    ㈥ 特殊功能寄存器

    特殊功能寄存器(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

    电源控制寄存器

  • 相关阅读:
    2024测试工程师必学的Jmeter:利用jmeter插件收集性能测试结果&汇总报告和聚合报告
    延时任务-基于redis zset的完整实现
    redis基础知识:数据结构SDS
    MindSponge分子动力学模拟——软件架构(2023.08)
    期货开户风险因素都考虑清楚
    MySQL MHA
    Linux:进程池制作(匿名管道版本 & 命名管道版本)
    移动端开发:WebView介绍和使用、JSBridge等
    Ubuntu服务器中java -jar 后台运行Spring Boot项目
    方圆的秒杀系统优化方案实战,(九)Sentinel限流和Nacos配置
  • 原文地址:https://blog.csdn.net/weixin_52632755/article/details/125153827