我的单片机经验谈(一)

来源:互联网 发布:西门子编程器 编辑:程序博客网 时间:2024/04/23 19:05

[注]这几篇文章是我在豆瓣上创建的“嵌入式小家”组里发表的一个系列。

我的单片机经验谈

单片机是什么

      对你面朝着的这台电脑你了解多少?你拿它玩过游戏,上过网,做过很多事,但是因为司空见惯,你对它能够出色实现这些功能没啥感觉。对它内部的软硬件机理想要深究终竟是非常困难的,因为这个 复杂的系统是很多精于不同领域的专家合力的成果。但是我们可以拿一个简单的模型来理解它:硬盘 里存储着数据,计算机启动的时候,有一个东西(什么东西?没必要深究,集中精力于我们所关注的 方向)把硬盘里的数据复制到内存里,然后cpu从内存中固定位置(每次开机都是同一位置,它是机 器)读取代码(告诉cpu要干什么),如果不出现跳转代码的话,cpu会严格的按照代码在内存中的顺序执行代码。其实代码和数据在内存里都是一串二进制数,从这个意义上来说它们是没差别的,但是为什么会有的被解释为代码而另外一些被看作是数,那是因为cpu每次从内存的固定位置开始读取 ,并把这里读取的东西看作是代码,然后严格按顺序执行代码,代码中可能出现要处理内存的某个位 置的数,那么cpu就会把那个地方的内容看作数;代码中如果出现要跳转到内存的某个位置执行代码 ,那么cpu就会把跳转位置的内容看作代码。


      为什么要设计得这么复杂?直接把所有的数据按照一定顺序放到内存中就好了,何须从硬盘中读取 到内存?原因之一在于目前的内存掉电之后会丢失内容(关机后再启动的时得内容不能保证与关机前 相同),而硬盘不会。所以如果照你这么设计的话,那会是一台一次性的电脑。那么又何需内存, 不能让cpu直接从硬盘里读取代码并执行吗?这个问题的答案是硬盘比较慢,如果让cpu从硬盘里读 一条代码执行一下再从硬盘里读下一条代码并接着执行的话,你会受不了。 为什么一直在讲的都是电脑,和单片机有什么关系?那是因为两者功用和原理类似。 从功用上来说,电脑可以帮你完成很多事情,比如看电影,浏览网页什么的,但是如果你想用它 去实现一些较低层次的控制功能,那就有点大材小用了。比如洗衣机,使用者可以在洗衣机的控制板 上选择洗衣机的工作模式,是清洗还是脱水,可以设置清洗的遍数,时间等等,如果想用电脑去控 制,也能够做到:你可以用键盘当洗衣机的控制板,在电脑上写一个控制程序获取你按下的是哪个键 ,并根据你按下的按键向串口输出不同的信息,另外再做一个解码电路一端接到电脑串口,另外一端 接到洗衣机里电机的驱动电路上。在实际使用中,这样的控制功能是用单片机来实现的。在这种场合 ,单片机完全能够胜任,而且价格更加便宜。同样的,你可以在单片机上写一个程序(其实是用电脑编辑然后把编译好的程序下载到单片机里),让它帮你完成一些逻辑控制。你可以把单片机(及其外设)看做一个精简的电脑。

      从工作原理上来说,单片机有一个cpu核,它读取并执行代码,读取的代码在ROM存储器里(Read Only Memory只读存储器,只能读不能写,但其实现在某些单片机也有能够写ROM的,这里 的ROM类似电脑里的硬盘,一个不同之处在于在电脑中cpu所执行的代码并不是直接从硬盘中读取的,而是经内存转交的;但单片机的cpu核一般是直接从ROM中直接读取),处理的数据多数存在RAM中(还有一部分在cpu核的寄存器里),我们一般也沿用电脑上的称呼,把这里的RAM叫作内存。

      单片机里面有很多外设,这里的“外”是相对cpu核而言的。他们在cpu核之外,但还是在单片机之内。使用这些外设的一个通用的模式是,在程序中向外设的对应特殊功能寄存器写入或者读取一 些内容,就行了,这里的特殊功能寄存器是除ROM,RAM,cpu寄存器之外的另一类存储器。比如单 片机的引脚上输出电平的高低通常都会由好几个特殊功能寄存器来控制,你需要先设置一个寄存器,把这个引脚配置为输出,再设置另一个寄存器来控制输出电平的高低。通常说来,量产之后的芯片的价格高低与它的引脚多少是有一定联系的,所以为了降低价格以使单片机有广泛的市场,单片机的同一引脚通常都有很多不同的功能,需要通过特殊功能寄存器来配置。常用的一些外设有输入输出端口,定时器,串行通信模块等。

       基本上,单片机是个什么东西,如果你原本没什么了解的话,也大致清楚了些吧。 

       这样的类比还是很有益的。如果你希望你为一个单片机所写的程序以后再能拿出来用到另外的单片机上,你就需要考虑它的可移植性了。这个时候程序设计中的分层思想很重要。分为一部分是硬件相关的,另外一部分是在它之上的,与硬件无关的。甚至可以把它移植到电脑上,并用软件仿真你电路板上的器件。很多人以为单片机的程序和电脑上的程序是两个概念的东西,但是在一个复杂的单片机程序里(比如说带个简单的操作系统的程序),很大一部分是与硬件没有关系的,这些部分与电脑上软件的设计思想是完全一样的。


转帖请注明http://www.douban.com/group/173154/

原创粉丝点击