单片机C语言模块化设计方案_第1页
单片机C语言模块化设计方案_第2页
单片机C语言模块化设计方案_第3页
单片机C语言模块化设计方案_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机C语言模块化设计 leech 自顶向下,逐步细分,分功能实现的模块化设计,将让你的程序更清晰。 下面,我将以点亮两个 LED的程序向大家介绍模块化设计的框架结构的写法。 每一个功能模块都是由.H和.C文件组成,c文件是功能的实现,H文件是该功能与外 部的接口 C文件如下:ledC ii第一部分,包含相应的头文件 #i nclude stm8_example.h #include led.h/该功能模块的接口 ii第二部分,定义该功能模块要用到的变量 int flagGreen。/绿灯亮的标志 int flagCount。/绿灯亮的次数 II第三部分,声明该模块要实现的函数 void Le

2、d_Control(uchar ch)。 void delayNms(int ms)。 ii第四部分,函数的具体实现。 /各位同学不用关心实现的是什么功能,我们的目的是了解这个结构就行了 void Led_Control(uchar ch) switch(ch) case GREEN: PD_ODR&=0 x08 PD_ODR|=0 x04。 break。 case RED: PD_ODR&=0 x04 PD_ODR|=0 x 0& break。 case BON: PD_ODR&=0 x0C break。 case BOFF: PD_ODR|=0 x0C break。 default: PD

3、_ODR|=0 x0G break void delayNms(int ms) int x。 for(。ms0。ms-) for(x=2000。x0。x-)。 同学们应该发现,跟我们平时的写法没什么两样,只是少了MAIN()函数。因为它只是 一个功能模块,是被其它函数(包括MAIN函数)调用的。问题是,在其它文件里的函数 怎样调用在led.C里的函数呢。这就得靠头文件了。 头文件的写法步骤如下: H文件如下:led.h 第一步,做是否已经调用过该头文件判断,避免重复定义: #ifndef _led_h_ #define _led_h_ /头文件具体内容 #endif 第二步,把C文件里的变量定

4、义和函数声明复制进来: #ifndef _led_h_ #defi ne _led_h_ II还可以define 些常量,方便程序阅读 #define GREEN 1 #define RED 2 #define BON 3 #define BOFF 0 extern void Led_Control(uchar ch) extern void delayNms(int ms。 II复制进来的变量和函数声明,要在前面加上 避免重复定义 /extern int flagGreen 。 II 绿灯亮的标志 extern int flagCoun% / 绿灯亮的次数 extern,说明是在其他地方已经

5、定义过的, #en dif 至此,头文件已经完成。当然,不是所有的变量和函数都是外部需要调用的,在头文件里 可以不写,例如 extern int flagGreen。/绿灯亮的标志,只是在该模块里要用到,在这里可 以删除,在外部就调用不了这个变量。 注意,有同学会发现,函数声明前面不加extern也可以通过编译,那是因为C标准里默认 所有的函数声明前面都是带extern的,所以可以省去不写。 现在我们来看一下,在主函数里应该如何调用led.C里的函数。其实,跟在同一个文件里的 调用方法一样,只是 先要把led.h先包括进去。 主函数: /把要调用的模块的头文件都包括进去 #in elude stm8_example.h/* Registers and memory mapp ing file. */ #i nclude gpio.h #include led.h void mai n(void) GPIO_Init()。/GPIO 初始化 while(1) Led_Control(GREEN) 点亮绿灯 delayNms(1000)。/ 延时 1S Led_Control(RED) / 点亮红灯 delayNms

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论