特别讲解模块化编程.pdf

上传人:qwe****56 文档编号:70015082 上传时间:2023-01-14 格式:PDF 页数:4 大小:112.28KB
返回 下载 相关 举报
特别讲解模块化编程.pdf_第1页
第1页 / 共4页
特别讲解模块化编程.pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《特别讲解模块化编程.pdf》由会员分享,可在线阅读,更多相关《特别讲解模块化编程.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、51 单片机lzh 电子论坛模块化编程模块化编程这一讲是由 Admin 编写!有什么问题的可以在 lzhlzh 电子论坛电子论坛的51 版块发帖提问!在刚接触单片机,刚编写代码的时候都只是有一个.h 和一个.c文件。把所有的函数都写在.c 里面。这样遇到复杂的系统时,代码量就很大,一下子就是几百行。而且把所有函数写在一个.c 里不利于移植,对于以后的开发有了很大的限制。为了解决这个缺点就必须学会模块化编程。将程序分解成一个一个模块。这样就有了多个.c和多个.h。下面开始讲解什么是模块化编程,怎么去模块化。我们以菜鸟学习 51 单片机之永远的流水灯里的程序为例子讲解。在不模块化情况下:51 单片

2、机lzh 电子论坛上面这个程序是全部写在了 main.c 一个 C 文件里。完成了一个流水灯功能,程序非常简单,那么下面我们将程序模块化。模块化我们就建立一个 main.cled.cled.h这三个文件,那么这三个文件里分别写什么东西呢,下面一个一个的写。用来完成流水灯功能的模块程序已经写好了,现在就开始主函数的编写。主函数就只需要调用一个 Display_Led()函数就行了,看现在是怎么写的。#include#include intrins.h#define uchar unsigned char#define uint unsigned intvoid Delay_Ms(uint xms

3、)uint i,j;for(i=0;ixms;i+)for(j=0;j110;j+);void Display_Led()uchar aa,j;aa=0 x7f;for(j=0;j8;j+)P1=aa;aa=_cror_(aa,1);Delay_Ms(500);void main()while(1)Display_Led();51 单片机lzh 电子论坛led.h 里内容如下#ifndef _LED_H_/理解为 if not define led.h#define _LED_H_/如果没有定义 led.h,这里就定义一个 led.h#include reg52.h/由于 led,c 里面要用

4、到 51 单片机寄存器 P1,/所以这里包含 51 单片机的头文件#include intrins.h/循环移位用到#define uchar unsigned char#define uint unsigned int/这些宏定义都可以在头文件.h里定义void Delay_Ms(uint xms);void Display_Led();/将led.c里的函数在led.h里面申明#endif/定义结束led.c 里内容如下,将流水灯的主要程序放在这个.c 里面。作为单独的流水灯模块,在以后的程序中如果要用到这个流水灯程序就直接把 led.c 和 led.h 移植过去。#include“led

5、.h”/这里包含 led.h 这个头文件void Delay_Ms(uint xms)uint i,j;for(i=0;ixms;i+)for(j=0;j110;j+);void Display_Led()uchar aa,j;aa=0 x7f;for(j=0;j8;j+)P1=aa;aa=_cror_(aa,1);Delay_Ms(500);51 单片机lzh 电子论坛模块化编程的时候要想到你把一个.c 和.h 文件给另一个人,那个人能够很轻松的运用你给的这个模块来实现效果那就算成功了。而不需要去改动很多东西。上面的例子只不过是很简单的一个小例子。对于模块化编程更深的理解要自己去编写程序。现

6、在大家可以把以前的程序模块化试试,看有没有问题。下面给出几个模块化编程的注意点:先分模块一个个编程调试,确保无误后在一个个联合起来调试,千万不要写了一堆后再去调试,会很麻烦。一个点 c 文件对应的一个点 h 文件#ifndef _LED_H#define _LED_H/*内容*/endif全局变量前面加 extern如extern char Num;数组申明不能带数组的大小如:extern char Num;正确extern char Num8;错误二维数组extern char Num8;正确extern char Num68;错误extern char Num;错误#include“led.h”/在 main.c 里现在包含的也是 led.h 而不是 reg52.h 了void main()while(1)Display_Led();/这样直接调用就行。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

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

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