模块化

一.什么是模块化编程?

所谓模块化编程,就是我们在创建一个工程之前,先对我们的需求进行分析,根据所需功能挑选相应模块,对这些模块进行相应的编程,封装成对应的.C和.H文件,最后在我的main.c中对.h文件进行预编译,进而调用各个模块C文件内的函数,实现工程完整功能。

二.为什么要进行模块化编程?

模块化编程可以使主函数所在.c文件看起来更精简,所谓模块化就是进行分装。

1. .h文件的介绍

1.1. .h文件的书写有哪些规则?

h文件中可以对变量定义,函数声明,数组进行一个模块化封装,但不能有具体的函数。

1.2. .h文件的书写方式是什么?

例如:
led.h

#ifndef __LED_H_//
#define __LED_H_//

#include<reg52.h>
sbit LED=P2^5;
typedef unsigned char u8;
typedef unsigned int u16;

extern void delay(u16 a); //延时函数
extern void pao();	   //跑马灯函数,即使P2^5闪烁

#endif

即:

1.1.1 开头怎么写?

#ifndef __LED_H__

注:
LED前有一个空格和两个下划线,大写文件名称,一个下划线,大写H,两个空格。
ifndef的全称是“if not define”,即如果没有定义LED,则执行下一步宏定义。

#define __LED_H__

注:
同上

1.1.2 结尾怎么写?

#endif

作用:
即使.c文件中同时包含两个LED.h,也不会出现重定义的错误。

sfr P0   = 0x90;
sbit LED=P2^5;
extern void delay(u16 a);

1.3 sfr,sbit 和 extern 介绍及作用:

1.sfr :
"special function register ",特殊功能寄存器,用来存放各种功能部件的数据,状态,数据命令。
在书写.h文件时用法:
变量名=地址名,其中等号右边必须为数字常量,不能包含+ -等操作符,数值也不能随意;
作用:
用在.h文件中,相当于将地址命名;
2.sbit :
在书写.h文件时:
(1)sbit 位变量名=地址值 ;
(2)sbit 位变量名=SFR名称^变量位地址值 ;
(3)sbit 位变量名=SFR地址值^变量位地址值 ;
extern 即用于在.h文件中声明函数。
作用:
定义端口;
extern:
用于在.h文件中的函数或变量声明,而且声明是不分配地址空间的,只有定义才分配地址空间。
作用:
声明函数或变量,在.h文件中不得定义全局变量,以防被多个源文件引用时报错,但是可以在某个源文件中定义全局变量,然后在.h文件中进行声明,加入.h文件便可以在源文件中使用。

2. .c文件的介绍:

在一个工程中只可以有一个主函数,但并不是只可以有一个.c文件,在.c文件中可以放置具体函数等,来配合.h文件,以达到精简含有主函数的.c文件的要求。
例如:
LED.h

#ifndef __LED_H_
#define __LED_H_

#include<reg52.h>
sbit LED=P2;
typedef unsigned char u8;
typedef unsigned int u16;

extern void delay(u16 a); //延时函数
extern void marquee();	  //跑马灯函数,使led灯闪烁

#endif

LED.c

#include"led.h"

void delay(u16 a)
{
  u16 i;
  while(i--);
}  //延时函数

void marquee()
{
   LED=0;
   delay(50000);
   LED=1;
   delay(50000);//延时
}  //跑马灯函数

main.c

#include"led.h"


void main()
{
   while(1)
   {
   	  marquee();//跑马灯函数,使led灯闪烁
   }
}

3. .h文件的添加:

3.1 该工程实现的功能是什么?

使led灯闪烁。

3.2如何进行函数分装呢?

首先区分好哪一部分是主函数,哪一部分是定义具体函数,哪一部分是声明和定义;然后分别将三部分分别放在三个文件中,一一对应.c文件.c文件.h文件。

3.3如何建立一个.h文件呢?

首先点击新建文件,然后重命名(知晓功能,方便下次使用),接下来必须保存在main.c文件所在文件夹中,然后可以做好批注,方便了解另一个相匹配的.c文件内容。

3.4如何新建一个.c文件?

同.h文件,但不能含有主函数。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值