


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文格式为Word版,下载可任意编辑单片机模块化编程的原则 目前我们在学习和开发单片机时广泛采纳 c 语言进行编程,当我们开发的单片机项目较小时,或者我们所写的练习程序很小时,我们总是习惯于将全部代码编写在同一个 c 文件下,由于程序代码量较少,通常为几十行或者上百行, 此时这种操作是可行便利的, 也没有什么问题。但假如要开发的项目较大,代码量上千行或者上万行甚至更大,假如你还连续将全部代码全部编写在仅有的一个 c 文件下, 这种方式的弊病会凸显出来, 它会给代码调试、更改及后期维护都会带来极大的不便。试想一下,当你尝试着从几千几万行代码中定位到某一位置或者去查找某一错误点,上下拉动巨长的滚动
2、条渐渐地、一点点地扫瞄整个 c 文件, 是件多么令人眼花缭乱,头昏脑胀的事。 模块化编程可解决这个问题,我们只要依据实际需要使用模块化编程的思维将具有不同功能的程序封装在不同模块中,将各个不同模块存放在不同的 c 文件中。 模块化编程后的程序不但使整体的程序功能结构清楚明白,同时也提高程序代码的利用率,有些模块代码我们可以直接进行移植或者经简洁修改就可另作他用,好比封装好的函数。那么什么是模块化呢?首先我们来简洁来聊聊模块概念,我们可能听说过电源模块,通信模块,这些是硬件模块,它们都供应一些接口,譬如电源模块会有输出额定电压电流的接口,通信模块可能供应了RS232、 USB等接口。那么对软件来
3、说模块是怎样的呢?软件里的模块跟硬件模块类似,抽象地说就像一个黑盒子,盒子内部细节我们可以不予理睬,我们只关怀盒子给我们供应什么东西,即供应了什么接口,利用这些接口我们能实现什么功能。我们把相对独立,具有独立功能用代码编写在一个 c 文件下,把需要对外的函数或变量进行声明供外部使用, 把不需要的细节尽可能对外部屏蔽起来,这就是软件模块化编程的思维。这样不同的模块占用不同 c 文件,一个个 c 文件将整个项目串接起来实现全部的功能。1. 模块化编程的原则:模块化编程通常要遵循以下几个原则: 每一个 c 文件对应一个同名的 h 头文件 一个 h 文件伴随相应 c 文件存在, 头文件是为了声明对外公
4、开的接口。假如一个 c 文件不需要对外公布任何接口,则其就不应当存在,除非它是程序的入口,如 main 函数所在的文件,同时 main 函数所在文件可以没有对应的头文件。 如有一个 LED.c,那应当同时制作一个 led.h 头文件。 ? 头文件中适合放置接口的声明,不适合放置实现头文件是模块的对外的接口,供外部程序调用。头文件中应放置对外部的声明,如对外供应的函数声明、宏定义、变量类型声明等。 函数的实现、变量的赋值、语句的操作等决不能放在头文件中。由于头文件的功能是向外供应接口,譬如函数,变量,详细如何实现是在 c 文件中进行,头文件仅是进行了描述声明。 任意一个 c 文件只要使用了其他
5、c 文件供应的接口, 都要同时包含其对应的头文件,每个 c 文件应当头文件自包含 任意一个 c 文件只要使用了其他 c 文件供应的接口, 都要将其对应的头文件包含到该 c文件中,没有使用到其他 c 文件的接口就不应当将其匹配的头文件包含,并且每个 c 文件都应当包含自己的头文件。 防止头文件被重复包含 避开一个头文件被重复包含,通常使用条件编译命令#ifndef-#endif,如下示例:示例 1:#ifndefTIME_H#defineTIME_H#endif示例 2:#ifndefLED_H#defineLED_H#endif其中#define FILENAME_H 为基本格式, FILEN
6、AME_H 为头文件名称,但要全部使用大写形式,使用单下划线后紧跟一个 H 表明是头文件。 不要在宏名最前面加上“ _“或“ _” ,即使用 FILENAME_H 代替_FILENAME_H_, 由于一般以”_“和” _”开头的标识符为系统保留或者标准库使用。2. 模块化编程实例我们使用 AT89C52 单片机,在编程软件 keil 环境下实施一个工程,来说明模块化编程详细操作的方法和步骤。例子要实现的功能:和 P1 相连的 8 个 LED 灯每 500ms 亮灭交替闪耀,通过串口将数字 0-9 发送给单片机并显示在一个数码管上。 LED 闪耀的时间使用定时器 0 中断方式来掌握, T0 每
7、50ms 溢出产生中断,定义一个计数器,每次 T0 中断就计数一次,累计计数 10 次,那么时长为 500ms,作为 LED 闪耀时间间隔。 单片机的时钟为11.0592MHz。那么使用模块化编程的方法, 整个项目将会有如下表中的文件。表 1 工程文件清单C 文件H 头文件描述main.c无Main 文件可以没有对应的头文件TImer0.cTImer0.h定时器 0 定时 50ms 中断led.cled.hLed 闪耀实现uart.cuart.h串口通信配置实现digitron.cdigitron.h数码管显示2.1创建工程步骤2.1.1新建工程文件名目新建工程文件名目(如 test),在工程
8、名目下创建 Project、 Source、 Output、 LisTIng 和Readme 这 5 个文件夹,并在文件夹 Readme 下创建 Readme.txt 文件。 这样做的目的是为了增加工程文件的可读性及结构化,便于维护和管理。? Project 存放工程文件? Source 存放用户编写的 c 文件及 h 头文件? Output 存放各种输出文件,如 hex 文件? Listing 存放编译过程中产生的各种中间文件? Readme 存放工程项目的说明文件2.1.2创建keil工程( 1) 启动软件 Keil Vision, 点击工具栏上的 Project,选择 NewVision
9、 Project,新建 test工程到名目 Project 下。( 2) 选择目标器件,点击“ OK”确认。( 3) 消失是否添加启动文件到工程中对话框,选择否。( 4) 目标选项设置, 点击 target option 工具进入选项配置界面。( 5) 选中 Target 项,依据实际状况设置晶振频率。本例子频率为 11.0592MHz。( 6) 选中 output 选项,点击“ Select Folder for Objects”选择工程名目下的 Output 文件夹, 将“ Create HEX File”勾选中。( 7) 选中 Listing 选项,点击“ Select Folder for Listings”选择工程名目下的 Listing 文件夹。( 8) 最终点击“ OK”保存各选项的设置,至此完成 Target Option 的配置。( 9)新建 5 个文件,以 c 为后缀名保存到工程名目的 Source 文件下,并分别命名为 main.c、led.c、 u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借款合同范本 租金
- epc融资合同范本
- 利用合同范本制定
- 劳务招工接人合同范本
- 会议现场保障合同范本
- 农村购房无证合同范本
- 公司解聘补偿合同范本
- 加工槽钢合同范本
- 中介返利合同范本
- 乡镇礼炮租赁合同范本
- 2025年企业法务顾问聘用协议范本
- 教育部人文社科 申请书
- 无菌手术台铺置的细节管理
- 《康复评定技术》课件-第五章 运动控制
- 议论文8(试题+审题+范文+点评+素材)-2025年高考语文写作复习
- 【理特咨询】2024生成式人工智能GenAI在生物医药大健康行业应用进展报告
- 2025新人教版英语七年级下单词默写表(小学部分)
- 2025年春新外研版(三起)英语三年级下册课件 Unit6第1课时Startup
- 2025江苏苏州高新区狮山商务创新区下属国企业招聘9人高频重点提升(共500题)附带答案详解
- 《蒙牛集团实施财务共享过程中存在的问题及优化建议探析》8800字(论文)
- 平抛运动的经典例题
评论
0/150
提交评论