原创 闲扯单片机

2011-5-6 15:28 3183 7 12 分类: MCU/ 嵌入式

        提起单片机,相信对电工的你来说应该不会陌生,是的,它已在这个世界上横行了三四十年了,它还将横行下去。自从它诞生以来,它就神奇的改变着这个世界,带给我们一个又一个的惊喜……

      看到那些不懂行的人们带着好奇的眼神拿着单片机产品,或许作为电工的我们会小小的窃喜一下,心里暗想,单片机其实没那么神奇,敲敲代码,或给端口赋值为1或给端口一个低电平而已。当然事实远非如此,每一个产品都凝结着研发者无尽的心血,越是细节的东西越要掏空心思。每一款单片机产品其实可以理解成一个系统,单片机就在这个系统中起着指挥官的作用,指挥官当然要有作战思想,这个作战思想就是下载到单片机的程序。

        说起单片机程序,其实也可以把下载到单片机的程序称之为一个系统,当然每一个系统可以包括若干子系统。举个简单的例子,暂且先不考虑单片机型号与振荡频率,现在在它端口上接有三个LED灯,一个按键。我们暂且把它们编号为LED1、LED2、LED3与KEY1。要求编一个程序,实现以下功能:

                 1、  LED1每1秒钟闪烁一次

                 2、  LED2每5秒钟闪烁一次

                 3、  当有按键按下时LED3状态变换一次

这个要求应该很简单,我们可以有以下几种写法:

        1、设置一个时器,1 秒钟时间到就让LED1闪烁一次,5秒钟时间到就让LED2闪烁一次,然后让单片机在没有定时中断时就一直检测按键。假如把这个程序看成一个最简单的系统,那定时器可以看成一个子系统,按键可以看成是一个子系统,定时器子系统中又包括两个任务LED1闪烁,LED2闪烁。而按键子系统中包括一个任务--变换LED3状态,LED3状态的变换属于一个事件触发任务

        上面的编程方法没问题,所要求的功能都能实现,但是那样的话,单片机一直在工作,没有喘气的机会,单片机内部都是由CMOS电路搭建,它的运算处理功能,深入内部往细小处看,其实也就是内部CMOS电路的通断,CMOS电路的通断肯定会引起电容的充放电,还有CMOS的关断损耗,所以长此以往,单片机的寿命肯定会大大的缩短,这也是为什么主板上的CPU要加一个大大的风扇的原因,也是频率越高芯片发热量越大的原因之一。所以可以找另外一种方法,这可能要用到调度器。

         2、当然用到调度器,还要设置一个定时器,比如我们可以让定时器每10ms中断一次,为什么设置为10MS,而不设置成1s,这个要看该程序中事件触发的频率,如果是1S查询一闪,可能就会错过按键触,所以时间要定短一些。当然还可以设置几个计时变量,每次定时中断时就让单片机工作起来,检测一下LED灯该不该闪烁,按键有没有按下,也许你用过这种方法,是的这就是简单的时间查询法。虽然这种方法还不能让单片机在没有任务时美美的睡上一大觉,但至小能让单片机有个喘息的机会了。

         现在全世界都在提倡低碳、环保、节能,那么我们能不能也让单片机在没有任务时美美的睡一觉呢?答案是肯定的。这个可能人稍微修改一下电路,可以把连接按键的引脚也引到中断源上。

         3、顺着这个思路,继续写程序。当有外部中断时,就让单片机检测按键状态,如果没有就找个地睡觉去,当定时时间到,就看一下该哪个灯闪烁了,处理完灯,继续睡觉去。你看,现在单片机轻松多。

        方法3虽然好,但可能要用过中断源,如果中断源不够就要考虑方法2了,当然如果任务较多,可能考虑将方法2与3结合起来用这便成了合作式调度了。如果你不放心这样写,可以再加上一些标志量,再加上看门狗,可以加上消息邮箱与消息队列,然后再往深处发掘一点点,写着写着你就发现原来你和程序越来越像世面上流行的这些操作系统了。

        随着时间的发展,人们对电子产品的要求越来越高,于是单片机的程序也越来越大,但由于现在晶圆工艺的改进,所以单片机空间也越来越大,可以支持更高级的语言来编写程序,这也大缩短的开发周期,毕竟越是高级的东东越是人性一点点。说过这也许有些电工们想争论一下汇编与高级语言树优属劣了,关于这个懒猫认为不管是黑猫白猫捉住老鼠就是好猫,不管是用汇编还是高级语言或者嵌入式汇编,,只要开发出来的产品性能稳定可靠,运行良好,用户满意就是好产品。就像是我们电工一样,虽然男性电工占大多数,但无论男女只要能胜任岗位就是最合适的工程师。

        好了,先扯这么多吧,改天再扯一下单片机选型的问题。最后再吼一下懒猫的口号:

每天进步一点点,开心多一点^_^

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

xucun915_925777961 2016-1-11 09:15

也许这就是所谓吃饭与做饭的区别。一个做研发的人员,可能会更像是一个厨子,做为厨子,不但要会做菜,还要了解各种原料,原料的产地,原料的特性,这样才能掌握火候,做出可口的菜

用户1543914 2015-4-6 23:00

汗... 咋还是2011年的时候发表的?

用户1543914 2015-4-6 22:59

单片机没那么复杂 ,如您所说的复杂我想吃饭这个事情也挺复杂的 这关乎怎么夹菜 是先夹菜还是后吃饭 这个过程别人不需要去了解 最终的目的是要吃饱

用户1543914 2015-4-6 22:56

话说我们老家的电工天天爬电杆! 今天大家电杆爬了吗?

用户1483310 2011-5-13 15:55

不错
相关推荐阅读
xucun915_925777961 2013-04-28 11:31
毕业后的五年拉开大家差距的原因在哪里?【转】
  有人工作,有人继续上学,大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!...
xucun915_925777961 2013-03-31 20:28
职场大牛精彩总结:职场上,如何做人做事做管理【转】(文/张子阳)
      大道至简,越是根源和基本的问题,道理实际上越简单。关于如何做人、做事、做管理的书很多,我看得不多,但是我觉得这些书更多是侧重技术和实现细节上的,而很少从人的思想和观念去讲。实际...
xucun915_925777961 2013-03-28 14:03
介绍几种优秀的UML工具
统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言...
xucun915_925777961 2013-03-27 18:05
IAR EW FOR 8051 修改工程名称的方法
        近段时间一直在搞蓝牙4.0的开发任务,所以用到了IAR编译器,话说IAR编译器用途蛮广,可以编译MSP430,ARM,还有TI的51核芯片,当然,这要不同的版本,我现在用的是for...
xucun915_925777961 2013-03-26 16:40
Cortex-M3学习日志(八)-- TFT实验Part(a)
    自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。 我的开发板上的液晶屏的用的是SPI接口,当...
xucun915_925777961 2013-03-25 20:48
说说那几款查看源代码的工具
说说那几款查看代码的工具 今天给大家介绍几款单片机工程师所喜欢的几款查看源代码的工具,这几款工具在懒猫的日常工作中可是帮了不少忙。 一、 Source Insight     Source Insig...
EE直播间
更多
我要评论
5
7
关闭 站长推荐上一条 /3 下一条