特别讲解模块化编程.pdf

特别讲解模块化编程.pdf

ID:52242341

大小:112.28 KB

页数:4页

时间:2020-03-25

特别讲解模块化编程.pdf_第1页
特别讲解模块化编程.pdf_第2页
特别讲解模块化编程.pdf_第3页
特别讲解模块化编程.pdf_第4页
资源描述:

《特别讲解模块化编程.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、2.h>#include"intrins.h"#defineucharunsignedchar#defineuintunsignedintvoidDelay_Ms(uintxms){uinti,j;for(i=0;i

3、灯功能,程序非常简单,那么下面我们将程序模块化。模块化我们就建立一个main.cled.cled.h这三个文件,那么这三个文件里分别写什么东西呢,下面一个一个的写。用来完成流水灯功能的模块程序已经写好了,,现在就开始主函数的编写。主函数就只需要调用一个Display_Led()函数就行了,看现在是怎么写的。51单片机lzh电子论坛led.h里内容如下#ifndef__LED_H__//理解为ifnotdefineled.h#define__LED_H__//如果没有定义led.h,这里就定义一个led.h#include"reg52.h"//由于led,c里面要用到51单片机寄存器P1,/

4、/所以这里包含51单片机的头文件#include"intrins.h"//循环移位用到#defineucharunsignedchar#defineuintunsignedint//这些宏定义都可以在头文件.h里定义voidDelay_Ms(uintxms);voidDisplay_Led();//将led.c里的函数在led.h里面申明#endif//定义结束led.c里内容如下,将流水灯的主要程序放在这个.c里面。作为单独的流水灯模块,在以后的程序中如果要用到这个流水灯程序就直接把led.c和led.h移植过去。#include“led.h”//这里包含led.h这个头文件voidDe

5、lay_Ms(uintxms){uinti,j;for(i=0;i

6、有问题。下面给出几个模块化编程的注意点:先分模块一个个编程调试,确保无误后在一个个联合起来调试,千万不要写了一堆后再去调试,会很麻烦。一个点c文件对应的一个点h文件#ifndef_LED_H#define_LED_H/*内容*/endif全局变量前面加extern如externcharNum;数组申明不能带数组的大小如:externcharNum[];正确externcharNum[8];错误二维数组externcharNum[][8];正确externcharNum[6][8];错误externcharNum[][];错误#include“led.h”//在main.c里现在包含的也是l

7、ed.h而不是reg52.h了voidmain(){while(1){Display_Led();//这样直接调用就行。}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。