计算机工作速度是很快的,每运行一步指令大概也就是几亿分之一秒。即便是51单片机,也能达到千万分之一秒,如果我们的思绪跟着计算机跑,会被累死的,好囧!
不如我们用慢动作将整个工作过程放慢,一点点体会它到底是怎么工作的,至于多慢,一个小时一步可以了吧?呵呵,随便了,能理解了就继续下一步。
以单片机为例,通电后,系统在第一个周期内干什么呢?
单片机内部有很多部门,我们假设它就是一个工厂,工厂的中间是一条宽阔的大路,路两边是各个车间和管理部门,然后在厂区内安装了一个所有人都能听到的大喇叭,对所有部门发号施令。
好了,零号指挥员开始喊了:第一步,指针指向地址0000H,其它部门原地待命!这时候,所有的没有接到任务的部门什么都不干,只有指针瞬间移动到了仓库的0000H位置。你要是问了:指针是个什么东西啊?
这么解释吧,你见过电唱机这个东东吗?没见过?没见过先去见见......电唱机都有一个唱头,唱头和唱片接触的部门是一根针,针和唱片上蚀刻的轨迹摩擦,发出声音,经过电路放大送到喇叭就可以听啦! 这时候,你要是认为把唱头移动到另外一个位置,本来唱的好好的歌曲就换成别的音乐了(夜店里面DJ有一种专门磨片的唱机,我没去过夜店,也不知道那个唱机叫什么名字,DJ可以把一段节奏比较好的段落反复播放,就是利用的唱头的瞬间移位)!这里的唱头就像是计算机里的指针,指针指向0000H就像唱头回到唱片起点一个道理。
地址0000H在单片机里位于程序存储器(貌似是,懒得去翻资料了)的第一个位置,而程序存储器共有128个位置,分别是0000H,0001H,0002H,0003H......等等。
至于为什么单片机通电后会将指针指向0000H,我们学习最最底层的东西,这些都是绕不开的,我暂时理解为:通电后,系统将所有的部门都访问了一个遍,然后把别的数据都抛弃了,只留下0000H的数据,相当于访问了0000H。
假如说0000H里面存放了01010101这些数据,这些就是CPU下一步的指令,没有上帝,CPU的命令从来都是从上一个锦囊里面得到的!
我似乎有点开窍了!
这就是单片机第一个脉冲周期内干的全部工作,是不是感觉有点浪费啊?就干这一点小事?是的,计算机每一个周期确实干不了太多的事,但是计算机的特长是这些个周期都特别短,短到你刚想思考,它就运行了千万个周期......“天下武功,唯快不破”。
CPU系统的工作就是这样,每个部门都等着大喇叭里面给自己派任务,丝毫不敢懈怠,但是每次只有一个部门接到了任务,这就是程序,一步一步执行。
第二个周期,单片机又要干什么呢?0000H里面的数据已经告诉你了,如果没有告诉你的话,这个程序员是要被炒掉的,因为这里是一条无条件跳转指令,必须的,因为下面的地址是保留地址,是禁区。那么,跳到哪里呢?程序员设定哪里就是哪里,只要被系统允许。然后指针就去访问那个地址,再打开那里的锦囊。
同理,系统将所有部门的电平都巡测了一个遍,唯独留下了指针所在地址的数据。在这个周期,程序不再需要跳转了,开始执行正文了,当然也不排除继续跳转,除此之外,指针在没有跳转指令的情况下,在下一个周期自动加1,访问下一个地址。
本期重点:1,系统加电后先指向0000H;2,每个周期内,所有的部门都在工作,但是只有目标地址的数据被保留,其它的数据扔掉,可以理解为系统只访问了该地址,即指针指向了该地址。
上一篇:STC单片机I/O口控制程序(两个不同的跑马灯效果)
下一篇:将C程序转换成汇编程序
推荐阅读最新更新时间:2024-03-16 14:02