您的位置 首页 报告

关于单片机仓库概念的一个风趣的解说

因为单片机有CPU、存储器、IO等等,使他(人性化一点以配合下文)看起来就像一个比较小的计算机,所以,在理解单片机的时候如果能把你之前

由于单片机有CPU、存储器、IO等等,使他(人性化一点以合作下文)看起来就像一个比较小的计算机,所以,在了解单片机的时分假如能把你之前有的那些或许仅仅是直觉上的对计算机的了解融入进来的话,或许会对你学习单片机的概念有极大的协助,至少关于我是这样的。
我想在关于单片机的很多让你头晕脑胀、摸不着头脑乃至想撞墙的概念里边,“仓库”或许是其间最憎恶的一个,由于即便单单是从汉语的视点来了解这个词就现已让你很晕了,其实我开端也想不通这是哪位大侠的构思,不过不必忧虑,这儿咱们彻底不去评论关于这个词的问题(这个词用得其实很好“堆”和“栈”都有他们各自的意思,精确的归纳了这个区域的功用,有爱好能够Baidu一下),这儿我会打一个比较风趣的比方,以此来绕过那些令你想撞墙的概念,并使你在直觉上对“仓库”这个概念有一个深入的了解。
你基本上应该清楚,单片机里边是有存储区和CPU的,假如你不清楚,那么我刚刚告知你了,请记住。现在,请你把单片中的CPU想成一个人(你彻底能够把他想成是你宿舍的那个天天和你拌嘴的同学,一会你就会发现这会十分风趣),在这儿就叫他C哥吧,不过这个人不同于常人,有一些特色,一会咱们会渐渐说清楚,现在要告知你的关于这个人的第一个特色是:他的回忆才能很差。下面,请你把存储区幻想成一个一个排好的小盒子,这些盒子的效果大致能够分红两类:1、保存写有你指令的纸条,比方你在某个盒子里边的纸条上写着:去洗我的袜子!;2、保存你的一些东西,比方你那双正在污染宿舍空气的臭袜子。由于C哥是一个回忆力不怎么好的人,所以,这些盒子都有自己的编号,以便利他查找。
那么,现在,咱们能够来阐明一下单片机是怎么作业的了。首要,你要把一切的指令还有需求处理的东西放进那些小盒子,比方方才说到的你那双待洗的袜子还有那张纸条,这时你应该发现C哥另一个特色:笨——他只会做你清晰告知他的作业,也便是说,假如你没有在纸条上写“去洗我的袜子!”,那么C哥极有或许会无动于衷地看着你的袜子直到他被熏晕倒,当然,更或许的状况是他底子找不到你的袜子…好了,当你把要做的作业和该怎么做写到盒子里之后,下面的使命就交给C哥了。C哥干事真的很讲准则,他会依照你给定的次序或许——假如你没有给定的话,依据盒子上面的编号依照从小到大的次序——一个一个地翻开盒子,读取里边的指令、处理相应的作业,直到一切的作业都履行结束,他就会歇息。请你紧记这个简略而风趣的进程,由于其实单片机便是这样作业的,当然,这儿疏忽了许多细节,可是这对你从直觉上了解单片机的概念以及足够了。
下面,就要开端阐明仓库这个概念了,思来想去,仍是觉得假如直接把“仓库”这个词用到文中来,真实不契合本文的风格,考虑到其实“仓库”也是存贮区(这一点你要记住,仓库并不是一个像专用寄存器那样专门的一个区域,它是由你在通用RAM区指定的。),依照本文的说法也便是一些盒子,所以,现在咱们把“仓库”改名叫“回忆盒子”,你能够感觉到,“仓库”的效果和回忆有极大的联系,不过你也不必在这儿纠结这个姓名的由来,下面我会说的。
现在,请留意,我要开端解说“回忆盒子”了,也便是“仓库”。大致上说,“回忆盒子”的效果是当C哥履行某使命到一半的时分忽然有了更紧迫的是作业要履行的时分用来保存当前使命的(包含盒子的编号和盒子里边的东西)。这么说你必定晕了,其实,浅显一点,便是当C哥洗袜子洗到一半的时分忽然接到你的指令要去翻开另一个盒子(那个盒子里的纸条上或许写着“给我换尿布”)并履行里边的指令,由于C哥回忆力很差,以至于他做完那件紧迫的作业跋文不起要回到哪个盒子来持续履行“洗袜子”这个指令,这时分,他要把现在手头的东西保存到“回忆盒子”里,要保存的东西有:1、放着纸条和袜子的盒子的编号(留意这儿其实是两项内容);2、那双袜子。这样,当他履行完紧迫使命后会去回忆盒子里,从里边找到两张纸条,和一双袜子(这个时分C哥仍是没有想起来他要洗袜子,他有必要要到那张写着洗袜子指令的纸条),他依照两张纸条的信息知道自己要去哪个盒子去洗袜子,并在那里持续完结洗袜子的使命。你或许会发现,在这一段的解说里边有一个重要的缝隙,那便是在C哥履行完紧迫使命后他是怎么知道储存着原本的使命信息的盒子的编号是存储在哪个“回忆盒子”里呢?别着急,下面我会解说的。
从实质来说,“回忆盒子”与一般的盒子是没有差异的,他们都是单片机里边的存储单元,证明这一点的最好依据便是仓库是需求你来指定的,也便是说,你要预先把一些盒子指定为“回忆盒子”。下面,阐明一下是怎么指定“回忆盒子”的。其实这个进程很简略,在单片机的专用寄存器里边有一个SP指针(81H),这个指针里边记录着仓库的开端处的地址。用契合本文的话来解说便是,C哥的衣服上有一个口袋(也便是SP指针),这个口袋里边的“奇特纸条”上记录着第一个“回忆盒子”的编号,而指定“回忆盒子”的进程便是你在这张“奇特纸条”上写上一个盒子的编号(作为第一个“回忆盒子”的编号),这个纸条会主动地将纸条上的编号加1或许减1,所以,某个现在并不确认的区域内盒子具有了成为“回忆盒子”的或许,留意,仓库的巨细是不能规则的,这便是为什么用“成长”这个词来描述仓库。
现在,关于仓库的概念基本上都介绍完了,可是,我知道,你或许仍是很晕,乃至比看之前还晕,那是由于方才叙说的这个进程是分隔的,并且逻辑上并不是次序的,下面,次序的说一下,相信你立刻就理解了。
主角仍然是傻傻笨笨但勤勤恳恳的C哥,他一个一个的翻开盒子依照里边的纸条上的阐明履行你规则的使命。而你,为了避免他在履行杂乱使命时犯傻,把一个盒子指定为“回忆盒子”,并把这个“回忆盒子”的方位写在了一张 “奇特纸条”上放在了C哥的口袋里。现在,C哥正在洗你的袜子,这个时分,他忽然接到你的指令要去给你换尿布,而C哥知道自己很笨,所以他主动地掏出了口袋里的纸条,找到了第一个“回忆盒子”,然后拿出一张空白纸条,把装着“给我洗袜子”那张纸条的盒子的编号写在了上面并放进“回忆盒子”。然后,他把“奇特纸条”放回了口袋里。当这个使命完结后“奇特纸条”会主动将写在它上面的编号加1,也便是将一个新的、空的“回忆盒子”的编号写在上面。之后,他会依照方才的进程把装着袜子的那个盒子的编号以及袜子自身别离放进不同的回忆盒子(现在现已有三个盒子成为“回忆盒子”,仓库现已长大了,赤色下划线的字体便是这三个盒子里的内容,留意是有先后次序的)。再然后,他就去给你换尿布了…
现在,尿布换完了,不过,果不其然,C哥彻底忘记了他要给你洗袜子这件作业了,不过,他记住一件事,那便是看口袋里的纸条。所以,他摸出了口袋里的纸条,上面当然是一个“回忆盒子”的编号,他依照编号找到了第一个“回忆盒子”(依照上一段的次序应该是第三个“回忆盒子”),里边应该是一双你的袜子,所以他拿到了你的袜子。可是,他仍是不知道该干什么,所以他再次摸出了“奇特纸条”,这时,纸条上的编号现已主动减1了,所以,他找到了新的“回忆盒子”,里边的纸条上记录着袜子原本放置的盒子的编号,所以,他把袜子放到了那个盒子里。恩,你能够想到,现在C哥仍是不知道要对袜子做些什么,他耐性的又一次摸出了那张“奇特纸条”,这次依照上面的编号,他找到了一张纸条,上面写着的仍然是一个盒子的编号。C哥依照编号找到了那个盒子,发现那个盒子里的纸条上写着“给我洗袜子!”…至此,C哥又回到了原本的使命——洗袜子。
现在,我期望你现已理解了,仓库其实便是你指定的一个些存储单元,这些存储单元被指定只用来保存一些特别信息,比方地址(维护断点)或许一些数据(维护现场),假如你必定要说这个存储区有什么特别的话,那便是:1、这些存储单元内的内容都是CPU在履行某使命半途被打断时的一些相关参数;2、这些存储单元的地址被记在了一个叫仓库指针的当地,也便是C哥口袋里的那张纸条上!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/261133.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部