单片机模块化编程(一)初探
哈喽艾威玩,还记得上课时给大家讲到的单片机模块化编程的思想么?有些同学没有练习,有些同学一定也都忘却了。在这里我重新整理一下,作为我们进阶学习的第一弹内容给大家热热身咯~
本文引用地址:http://www.amcfsurvey.com/article/269323.htm
俗话说,不会模块化编程的厨师不是好司机。那么如何进行单片机的模块化编程呢?且听我给大家慢慢说来。
(一)What is单片机的模块化编程?
模块化编程是指将一个庞大的程序划分为若干个功能独立的模块,对各个模块进行独立开发,然后再将这些模块统一合并为一个完整的程序。举个栗子,大家都玩过七巧板,我们都知道,七巧板巧在七块板子随意组合,可以组成很多种形状。我让大家拼出一个小房子,大家能很轻易的做到,下次我又让大家用这些拼出来一个小钟楼,大家还是能够毫无鸭梨的完成任务。七块板还是这七块板,只不过进行了不同的排序罢了,但却收到了两种不同的产品。这就是模块化编程的优势,只要我“七块板”到手,任你魔高一尺,我则道高一丈。
在单片机程序里,程序比较小或者功能比较简单的时候,我们不需要采用模块化编程,但是,当程序功能复杂、涉及的资源较多的时候,模块化编程就能体现它的优越性了。如前面我们写过的DS18B20的驱动程序、独立按键扫描程序和12864程序,每一个程序都是只用一个源文件编写就能完成,但是,当您制作一个12864液晶日历的时候,需要用到DS18B20驱动程序、独立按键扫描程序和12864显示程序,如果把这三个程序全部集中在一个源文件里,将导致主体程序臃肿且杂乱,这样做并非不可取,只是降低了程序可读性、可维护性和代码的重用率。如果把这三个程序当做三个独立的模块放到你的主体工程进行模块化编程,效果就不一样了。
实际上,模块化编程就是模块合并的过程,就是建立每个模块的头文件和源文件并将其加入到主体程序的过程。主体程序调用模块的函数是通过包含模块的头文件来实现,模块的头文件和源文件是模块密不可分的两个部分,缺一不可。所以,模块化编程必须提供每个模块的头文件和源文件。
(二)模块化编程的好处
想当年,我还是一枚单片机清新小菜的时候,记得大学的时候参加一个电子设计大赛,用单片机做了个点阵+数码管显示环境信息和万年历的程序,调试了几个星期,所有程序加起来小1000行,瘦长且杂乱的一个程序,编程的规范性也很差,从上浏览下来都要好半天。出了错误去问老师,见我这乱七八糟的程序,老师看都懒得看。于是自己调试,出了一些简单的语法错误还好定位,其它一些错误,找半天才能找的到。那个时候被自己挖的大坑折腾的够呛,那段岁月也不堪回首,每每回想起来(我先去吐会儿血),仍然会觉得脑袋里一团乱麻。
生活就是这样,总是在你觉得“山穷水复疑无路”的时候让你“柳暗花明”“又一村”。一个偶然的机会,我接触到了模块化编程。于是开始了解,觉得这个是解决困扰我N久的问题的绝好机会。于是果断开始“模块化”。每天我都会写一些函数并调试,比如us级的延时函数,ms级的延时函数,I2C协议函数,串口通信函数,1602和12864液晶驱动函数,还有例如DS18B20等各种常用的传感器驱动函数等等。由于长期的积累,我收获了一大堆非常给力的函数,编程也渐渐变的规范起来,不再像以前那么难以阅读了。当然这都不是重点,重点是,我做单片机设计的速度和效率快了好几个数量级。
那么具体是怎么实现的呢,敬请关注《第一弹---单片机模块化编程(二)》且听我慢慢道来。
单片机相关文章:单片机教程
单片机相关文章:单片机视频教程
单片机相关文章:单片机工作原理
评论