首页/文章/ 详情

单片机内存及运行原理

1小时前浏览9
      

     
         
内容          

一、单片机构成      


二、CPU的作用


三、内存管理

    首先单片机的内存可以大小分为ram和rom,这里就不再解释ROM和RAM的区别了,我们可以将其等效为flash和sram,其中根据flash和sram的定义可得,flash里面的数据掉电可保存,sram中的并不可以,但是sram的执行速度要快于flash,可以将单片机的程序分为code(代码存储区)、RO-data(只读数据存储区)、RW-data(读写数据存储区)和ZI-data(零初始化数据区)。在MDK编译器下可以观察到在代码中这4个量的值。      
其中code和RO-data存储在flash中,所以两者之和为单片机中flash需要分配给它们的空间大小(并且等于代码所生成的.bin文件大小),另外RW-data和ZI-data存储在sram中,同样两者之和为单片机中sram需要分配给它们的空间大小。      
另外,我们必然会想到栈区(stack)、堆区(heap)、全局区(静态区)(staTIc)、文字常量区和程序代码区和上面所介绍的code、RO-data等的关系。      
1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。这些值是可读写的,那么stack应该被包含在RW-data(读写数据存储区),也就是单片机的sram中。      
2、堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。可以理解,这些也是被包含在单片机的sram中的。      
3、全局区(静态区)(staTIc):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。这些数据也是可读可写的,和stack、heap一样,被包含在sram中。      
4、文字常量区:常量字符串就是放在这里的。这些数据是只读的,分配在RO-data(只读数据存储区),则被包含在flash中。      
5、程序代码区:存放函数体的二进制代码,可以想象也是被包含在flash,因为对于MCU来说,当其重新上电,代码还会继续运行,并不会消失,所以存储在flash中。      
辅助理解:例子MCS-51单片机芯片内部存储器包括程序存储器和数据存储器两大类。      
(1)程序存储器(ROM)      
一般用来存放固定程序和数据,特点是程序写入后能长期保存,不会因断电而丢失,MSC-51系列单片机内部有4KB的程序存储空间,可以通过外部扩展到64KB。      

(2)数据存储器(RAM)      
主要用于存放各种数据。      

参考



本文转载自CSDN作者注释远方的文章《单片机内存及运行原理》,文章链接为:

https://blog.csdn.net/qinze5857/article/details/99654855      

声明:


 
声明:本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 

来源:硬件笔记本
电路电子芯片
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-11-20
最近编辑:1小时前
硬件笔记本
本科 一点一滴,厚积薄发。
获赞 156粉丝 45文章 641课程 0
点赞
收藏
作者推荐

目前这个电路方案已经出货100K以上了,品质很稳定,客户希望我们抄板......

前几天收到一台客户提供的竞品机器,电路板方面客户希望我们抄板,目前这个电路板方案已经出货100K以上了,品质很稳定,客户希望我们照抄设计,仔细看了样机的电路板后,发现成本控制的很好,而且设计有点意思。以下是我抄板的图纸,截取部分原理图,欢迎大家来讨论分析下工作原理和各个部件的作用,以及为什么要这么设计?以下我将尝试对该电路设计进行工作原理分析,在这里我将尝试从最基础的讲解,用最通俗的语言来阐述(老鸟们不要嫌我啰嗦),阐述的不好的地方请各位大佬尽情的喷我,欢迎指正。言归正传,先上原理图:先说阻容降压部分,R8,C2,D2,D3,ZD1,ZD2构成常见阻容降压电路,交流电经过半波整流阻容降压后,在两个稳压管ZD1,ZD2两端形成11.2V左右的直流电压(这个电压是提供给后面的12V继电器使用的)。阻容降压电路交流电的正负半周的电流流向分别如下:交流电正半周电流流向交流电负半周电流流向负半周时,D2为C2提供交流通路,D3起到隔离单向截止的作用。阻容降压电路还是比较简单的,下面讲系统电源的供电电路。单片机系统供电为5V,Q2和ZD2组成5V稳压电路,Q2的发射极电压跟随基极电压,基极电压被钳位在5.6V。所以相对于GND1这个参考电位来说,Q2发射极电压为6.3V,因为Q2发射极的电压约为0.7V。我们知道ZD1,ZD2两端的电压为11.2V.根据原理图,稳压管ZD1,ZD2支路是和Q2、EC2这两个器件串联后的支路并联在一起的。分别是下图的支路1和支路2:支路1的电压为已知的11.2V。支路2中Q2的集电极和发射极的电压为上面已知的6.3V。可得知EC2上面的电压为11.2-6.3=4.9V。好了,至此,我们明白了单片机 VCC电压是如何产生的了。以下图片电流流向很好的说明了VCC是如何产生的。最终EC2上的电位差为4.9V下面来讲讲过零检测电路,在该方案中,过零检测信号是用来给单片机计时用的,一般来说,只要过零检测电路滤波做的好,软件处理的好,计时精度还是能让人满意的。一般情况下会比单片机的内震计时精度要高。我们看电路,D1,R2,R6,Q1组成过零检测电路,交流电正半周时,Q1会导通,交流电的负半周时,Q1会截止。这样在单片机的PA6口就能检测到一个高低跳变的方波,在交流电经过零点的时刻,波形会跳变(波形如下),我们知道,电网频率是固定的,也就是说每个周期内交流电经过零点的次数是固定的,根据这个道理,计数一定时间内的过零点的数量就能准确的算出经过了多少周期,以上,单片机就是通过这个方法来计时的。方波为过零信号,正弦波为交流电波形交流电正半周时的电流通路交流电负半周时的电流通路,此时Q1截止上图中D1的作用为,在交流电的负半周时,防止Q1的发射结反向击穿,因为三极管的发射结的反向耐压一般只有几伏。加入D1后,负半周时,发射极会被D1给钳位为0.7V,从而保证了Q1发射结的安全。这电路巧妙的地方,用两个稳压二极管人为的制造了两个电压,一个大概5v,一个大概12V,Q2的作用是利用稳压管稳住基极电压来稳住发射级电压,和一个稳压管相比,最大的作用是增加电流。以上就是今天的分享,因时间仓促,水平有限,写的不准确的地方请大佬们批评指正。最后,写文不易,请大家帮忙点赞分享,谢谢你们的支持!声明: 声明:文章转载来自:喝枸杞论电子(头条)。本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 来源:硬件笔记本

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈