马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
实现目标
1、把握.h 文件的格式、extern 的用法;
2、握模块化编程方法步调;
3、详细实现:(1)提供一个C文件,将其按照功能模块举行模块化。
一、为什么要举行模块化编程?
传统的编程方式:
全部的函数均在main.c里,若利用的模块比力多,则一个文件内会有很多代码,倒霉于代码的构造和管理。而且很影响开发职员的思绪。
模块化编程:
把各个模块的代码放在差别的.c文件里,在.h文件里提供外部可调用函数的声明,其他.c文件想利用此中的代码时,只须要 **#include<XXX.h>**即可。利用模块化编程可以极大的进步代码的可阅读性、可维护性以及可移植性。
二、准备知识
2.1 .c文件
存放的是函数、变量的界说
2.2 .h文件
可被外部调用的函数、变量的声明
2.3 预编译
三、模块化编程紧张步调
0、文件夹的创建
建一个文件夹装工程,再新建2个文件装各模块文件。
1、新建一个51单片机工程(参照从前)
建好工程后,新建两个组:USER、和DRIVER。
2、新增与模块对应的 .h .c 文件(此例:main.c 、delay.c、delay.h)
将main.c 生存至USER文件夹;将delay.h、delay.c 生存至DRIVER文件夹。
(1) .h 文件格式- #ifndef _DELAY_H_
- #define _DELAY_H_
- void Delay(unsigned int xms);
-
- #endif
复制代码 (2) .c 文件格式- #include "delay.h"
- void Delay(unsigned int xms)
- {
- while(xms--)
- {
- unsigned char i, j;
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- }
- }
复制代码 (3)主函数C文件- #include <REG52.h>
- #include "delay.h"
- void main()
- {
- while(1)
- {
- Delay(10);
- }
- }
复制代码 3、将各 .c文件添加至工程的组
将main.c 添加至USER组;将delay.c 添加至DRIVER组,delay.h不消添加。
4、给有.h文件的组添加路径包罗
如果不给.h 文件的路径包罗进来,将会出现下面的错误。
四、训练
给定下面步伐,请参照上面的步调,将其模块化。要求:(1)创建USER、和DRIVER两个组;(2)新建main.c/delay.c/ delay.h/seg.c /seg.h 。- #include <REGX52.H>
- sbit A1 = P2^2;
- sbit B1 = P2^3;
- sbit C1 = P2^4;
- unsigned char gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void SEG_DIS(void);
-
- void Delay500ms() //@11.0592MHz
- {
- unsigned char i, j, k;
- i = 4;
- j = 129;
- k = 119;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void main()
- {
- while(1)
- {
-
- SEG_DIS();
- }
- }
- void SEG_DIS(void)
- {
- int i;
- C1 = 0;B1 =0;A1 =0;//数码管1 工作
- for(i = 0;i < 16;i++)
- {
- P0 = gsmg_code[i]; //显示
- Delay500ms();
- }
- Delay500ms();
- for(i = 15;i >= 0;i--)
- {
- P0 = gsmg_code[i]; //显示
- Delay500ms();
- }
- }
复制代码
五、实验效果
六、仿真实现
总结
|