欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    用类设计思想实现单片机软件的C程序模块封装.pdf

    • 资源ID:74641928       资源大小:341.60KB        全文页数:5页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    用类设计思想实现单片机软件的C程序模块封装.pdf

    光电子技术与信息,应用技术用类设计思想实现单片机软件 的程序模块封装采国明,李琦成都电子机械高等专科学校,四川成都摘要在分析程序和程序特点的基础 上,以单片机 系统多串口设备驱动程序的模块化设计为例,提出一种采用类设计思想,实现程序模块封装的方案,以提高程序设计质量该方法适用于嵌入式操作系统、设备驱动程序等复杂的程序设计,特别是基于单片机系统等无法使 用语言编程的驱动程序关 键 词程序设计模块封装单片机系统串口驱动程序中图分 类 号文 献 标识 码文献编号一一一一卜一,。,饰,、,一一、箕,一,一弓言随着计算机软件技术 的发展,软件设计越来越大型化、系统化。支持各种大型软件设计的高级语言和工具有多种,如十、等,其中程序由于有较好的设计思想和较好的编译工具,为程序员最 为钟爱。但是在单 片机程序设计和嵌入式软件系统的开发 中,程序仍占据主导地位。虽然有些嵌入式 系统支持十编程,但程序设计 为了兼容大 多编译 系统,仍然采用程序编写应 用程序,以方一便移植。在进 行程序设计时,要 尽量满足程序的兼容性、可移植性等,这往往令许多开发人员望而生畏。保证兼容性、可移植性的常用方法是模块化设计,但往 往仅停留在对功能的模块化上,真正在编码时很难实现模块 化,各程序 间仍然错综复杂,关 系凌乱。如果在编写程序时不对函数及变量合理组织,将会 出现全局变量、全局 函数太多,以致于还得花费许多精力在命名上,以防止重名在程序设计过程中,收稿日期修改日期一光电子技术与信息还要在使用某些变量时用声明,却不知道对该变量或函数的具体描述和 实现位置,带来了诸多不便,大大降低 程序的可读性,在可移植性方面也体现不 出优势。在经过对、等开发语言和编译工具的一定应用后,进行了另一种尝试,用类设计的思想,尽量 使程序能够达到十的效果。现在有一些嵌入式 系统的驱动程序也 采用类似 的方法,以达到 程序封装的效果。类与结构分析的类结构 与程序中的结构设计相似,但又有很大的优势 即的类结构 不仅有成员属性,而且 还有函数方法、继 承、派 生等性能,因此具有较好 的封装性,为大型程序设计打下 了很好的基础。由于程序和编译器的特点,很难实现继承和派生等功能,如果能够使程序也将属性和方法封装在每个模块中,则可以达到类最 主要的封装功能。的构架和编程 风格与程序的最大区别在于在定义类结构 时,除 了可以声明成员变量外,还 可以声 明成员函数方法,而 且成员函数和成员变量还有公共和私有之分。但程序在定义结构时,只能定义变量,无公共变量和 私有变量之分程序封装 的目的是为了使程序结构明晰,与其他模块的接口简单、明了,调用各个模块的程序无需知道内部实现方法,模块内部和外部的变量与函数的相 互关系是松散关 系。程序设计引人类封装方法的实现把类 的成员变量和成员函数 概念 引人程序 中,当程序的结构具有了成员变量和成员函数属性后,在访问封装模块的变量和函数之前必须与特定的结构联 系起来,这样可以防止变量的重名等错误,从而增 加程序可读性和可 移植性并且模块内部的具体实现与其他模块能够较好地 隔离,达到封装效果。以下分析 的示例代码为 某单片机应用系统 的串口设备通 讯模块的封装及调用方法。经过封装后 的串口驱动程序 可以编译 成目标代码文件或库文件,供应用软件开发人员调用,该模块适用于所有同一种单片机 的软件系统,可移植性较强。即使要将该模块移植到其 他单片机系统,只需在现有框架下,对特别底层的代码做修 改即可。模块封装及初始化将每 个模块作 为一个类 来看 待,声明为一个编译器 能识别 的结构,如以下结构的定义每个模块 需要 的变量均放入该结构 中,其他模块如果需要调用该模块内的变量,则需要 引用该结构名,达到变量的封装。每个模块内部的功能函数也需要放入该结构 中,但各功能函数均定义为函数指针,真正的函数实体在结构之外,并且为局部函数,达到函数的封装。七一一一厂一串口号的主频,适应不 同主频 的单片机波特率一一发送缓冲区大小一一接收缓冲区大 小一一民发送缓冲区首地址上,份接收缓 冲区首地址,发送一个字符“”,接收一个 字符光电子技术与信息,一,发送字串幸双出飞清除接收仔、,清除发送仔忍接收不允许允许接收,检查是否接收到数据,月,、,汀检查是否有数据待发送模块实体创建规则如示例 程序、,、。、,一,。,工发一字符函数实体代码略。、二一、,。收一字符函数实体代码略,肚,一,、函数 实体代码略、。,。,。、一毛,清除接收,函数实体代码略、,、一清除发送任函数 实体代码略,不允许接收函数实体代码略,。、。允许接收函数实体代码略、,。、一,、工,。田,二检查 收数据函数 实体代码略、,。、一,汀,、检查发数据函数实体代码略一沉发送中断服务程序,不与外部接口代码略、土、汁。一接收 中断服务程序,不与外部接口代码略初 始化结构将结构 的实体程序名与相应函数指针形成一一对 应等、。川。工,一飞。一、,二一发送一个字符函数绑定,。、一乡印、。、计飞、,接收一个 字符函数绑定,工,、一、,工一发送字串函数绑定,一孙一民清除接收函数绑定,一工工、任二一、任清除发送函数绑 定,、一、一一接收不允许函数绑定,一,。、。绳一,、允许接收函数绑定光电子技术与信息,一印讯一厌,检查收数据函数绑定一汀一仃检查发数据函数绑定其他初 始化代码除了初始化函数外,函数实体均 为、类型,即只在本文件有效,有效地进行函数封装。在各函数 的参数中必须包含结构 自己的指针即。,让函数实体能够找到结构 内部的变量和函数此处是第一各参 数。初始化函数一的 主要功能是将结构的指针函数与相应 的函数 实体进行绑定,即将函数 实体的入口地 址 赋给相应的函数指针。该初始化函数与类的析构函数功 能相近。模块调 用模块进行了上述封装后,其独立性 较强,调 用者不需要 知道 内部具体实现,直接调用 内部 的变量和函数 即 可。首先,需要 声 明一个或多个模块名。当声 明多个模块名时,程序代码数量 不变,只增加 了结构需要的空旬。如一数组。其次,用户可以通过该模块名直接调用 内部变量的 内部函数,但在调用函数 时需提 供结构 名和其“成员函数,及相 应形参,在 调用“成员函数,时,实际调 用的是真正的实体函数,达到调 用模块 内部功能函数 的日的。、以,滋,一,【声 明两个测试模块龙一一【一一肋一一一一仔二,。崖。一”,”,初始化串口各参数一一串口一一一一一,一一一一一一。一一一一一一一玉一,一一、,一。,一、二串口一、,一,一一、,一二一,【一,。一一一,一,一二一、二一一仔一,一、一,工一,工、一一旋初始化串口模块光电子技术与信息,一一初始化结构一一初始化结构发送函数示例,串口发送“一,串口发送“、。,一一,一调用串口发送函数统一编程风格如果用等环境进行程序开发,在输入模块 名后,会提示模块的变量和函数,开发较 为方便。而在程序中结构的 内部变量或函数指针,在显示时均提示为变量。为 了区分变量和函数,在编码卜应统一编程风格,建议变量全部小写,中间加下划线字首为一而函数则 为大小写结合字首为印,关键 字 的首 字大写其余小 写。这样在查询结构 时,能够区分变量和函数。这样在显示封装好的结构时,变量和函数 能够 一 口了然。月,目匕,全卜了、二口已匕性七书,卜辛,小注又丢厅吴二刁、夕于王于 吴大毛刀右另一程序封装方法为采 用建模设计方法,将软件模块化,由建模工具直接生成代码,再将十程序经过 少量修改即可变成封装好的程序。在模块化时尽量用类设计的方法来进行,最好能利用建模工具如,等。生成十代码框架后,需要作适 当的修改,以便适应各种编译器,然后再添 加详细代码。主要修改工作为将中的范围分解运算符“”直接用下划线“一”代替,生成函数框架,此时函数名的前部直接 为模块名,如文 中示例代码。然后在初始化函数中,再将这些函数绑定赋函数首地址值到结构 中的函数指针上,最终完成程序的模块封装。结束语用该方法 设计程序,结构清晰,便于移植。等驱动程序也 采用类似的方法进行设 备的模块化和绑定,有很好的借鉴 意 义。进行了上述 封装后,用等编辑工具进行编码时,编程方便。在有很多个类似模块 的情况厂,采 用这种方法则可以大大节省代码,每个模块只需定义一个结构,在初始化后 即可使用,每个模块 调用的代码是相同的。而普通 的设计方法下,需要对每个模块进行编程。例如在 多串口设计中,只需设 计一个串口模块,需要添加串口时,只需增加模块定义,而不用增加模块 内部代码。采用类 似的设一于 方法,可以大大提高编码效率。参考文献川王学龙嵌入式,系统设计 与应用,北京清华大学出版社,美兀十编程思想北京机械工业出版社,周巍松系统分析与高级编程技术【北京机械工业 出版社,川史济民软件应用技术基础【北京清华大学 出版社作者简介宋国 明一,女,成都电子机械专科学校讲师,硕士李琦一女,成都电子机械专科学 校讲师。

    注意事项

    本文(用类设计思想实现单片机软件的C程序模块封装.pdf)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开