AVR学习笔记十四、模块化程序设计2.docx
《AVR学习笔记十四、模块化程序设计2.docx》由会员分享,可在线阅读,更多相关《AVR学习笔记十四、模块化程序设计2.docx(7页珍藏版)》请在优知文库上搜索。
1、AVR学习笔记十四、模块化程序设计(二)14.1程序模块化设计(二)14.1 .K实例功能在前面一讲里,我们已经初步了解了模块化程序设计的简单知识,今天我们再深入探讨一下模块化程序设计.我们先回忆一下前面,讲的主要内容:模块化程序设计是指将实现同一功能的程序整合起来,时装到一个程序模块中.这样在使用该功能的时候,可以直.接调用该模块中的相关函数进行操作。我们在单片机编程中经常用到的按段检测、液晶显示、数眄管显示.串1.J通信、DS18B20温友检测、DS1302实时时仲等经常用到的程序都可以实现模块化.模块化编程的增大优点是:思路清晰、移植方便、程序简化,通常的做法是将某一模块中所有用到的瑞定
2、义,函数声明,函数定义等一起写到一个“h或者”.C.文件中.然后在主程序里面使用*inc1.ude预编译指令将这些内容包含到主程序中.这样做调用坦然简单.但是对于模块化程序设计来说还是显得有些不太直观因为我们谓用模块中的函数的时帔,需要在这一个模块文件中很费力的找出需要的函数,同样对于移植到别的单片机系统中的时候,需要遍历该模块文件,然后一一更改。如果不小心,很容易造成楷谈.更为标准的做法是我们将某一个功能模块的端口定义,函数声明这些内容放在一个h文件中而把具体的函数实现(执行具体操作的函数放在一个tt-c-文件中.这样我们在编写主程序文件的时候,可以直接使用“inc1.ude预编译指令将“.
3、h”文件包含迸主程序文件中,而在埸译的时候将“.c”文件和主程序文件一起8译.这样做的优点是,我们可以点接在“文件中查找到我们需要的函数名称.从而在主程序里面直接调用.而不用去关心Jc”文件中的具体内容.如果我们要粗该程序移位到不同型号的单片机上,我们同样只需在“.h文件中改相应的端口定义即可。在这一讲中,我们继续学习一下模块化程序设计.本实例有两个功能模块: 继续了解模块化程序设计的思路和方法。 编用申口通信的模块化程序。通过本实例的学习,掌握以下知识点: 初步掌握模块化程序设计的方法. 了解模块化程序设计中需要注意的一些问题14.2 模块化程序设计需要注意的两点14.2.1 模块化程序设计
4、中的史复声明在编写蟆块程序的过程中,我们在编写具体函数实现的“.c”文件时,需要调用包含相关的端口定义和函数声明的”.h文件,调用时,我们使用使用街nc1.udc”预编译指令来调用”.h文件。同样的,在姐写主程序文件时,我们仍然需要将需要调用模块的“h文件包含到主程序中,这样就出现了一个单片机系统程序中同一个文件被展次网用的情况,这在很多编洋系统中进行编译的时候会有“某某.h文件被史友调用的编译警告或错误提示。事实上,再同一个单片机系统程序中,在编译的时候出现fE何的警告或者错误提示都表示我们的程序编写的有问遨.虽然有些警告信息不会影响程序的最终运行结果,但我们希望编译程序的时候不出现任何的警
5、告或者错误提示.那这种Hi复调用的情况该怎么防止呢?一种解决方法是,当我们在调用某一个程序文件时,先判断一下在前面的程序里面是否已经定义或者调用了这个文件,如果这个文件没有被定义或者询用,那么我们就执行调用指令.否则我们就略过调用指令.要实现这种判断.我们需要用到条件预编译指令.Sifndef,FdefinJ,“tJondif.这三条指令使用格式如下:RifndefXXXKX语句块1defineXXXXXX语句块2endif具体作用是:如果没有定义文件XXXXXX以及语句块1:3ifndefxxxxx(该处Ur以为文件名)语句块1定义文件xxxxxx以及i?1.句块2UdefineXXXXXX
6、语句块2结束文件XXXXXX以及语句块的定义Sendif举例如下;下面是文件usari.h”的防止正复定义的书用方法,具体作用姑,先判断是否认义了文件“USar1.h,如果没有定义Uifndef)文件“USarI.h,则定义文件“usar1.h,并且填写文件“usar1.h.的具体内容(即需要定义的内容):填写完露要定义的内容后.使用肥ndif结束定义.#ifndef_USARTJI_如果usart.h没有定义defineUSARTI1.则定义USar1.h/下面是USmth的内容#inc1.ude#inc1.ude中断函数头文件常艮声明UdefineRAUD9600函数声明voidPorj1
7、.nit(void);珊口初始化配置voidUsartInit(VOid);/USART存放器设置voidUSar1.pUtChar(UnSignCdcharCTXDaIa);字节发送函数void1.srtPUtS1.rinR(UnSiRn1charpcStri11):/USart.h的内容写完后.结束条件编洋Rendif结束判断条件指示符可以防止头文件的值复处理.标准格式如下#define表达式Wifndef表达式执行语句1e1.se执行语句2Wenddef意思:在执行#ifdef时。如果在前面使用define定义了“表达式”的话就执行“执行语句K否则执行“执行语句2例如:#inc1.ude
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 学习 笔记 十四 模块化 程序设计