模块化编程初识.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模块化编程初识

OK ,到此一个简单的工程模板就建立起来了,以后我们再新建源文件和头文件的时候,就可以直接保存到src文件目录下面了。 下面我们开始编写各个模块文件。 首先编写Timer.c 这个文件主要内容就是定时器初始化,以及定时器中断服务函数。其内容如下。 #include reg52.h bit g_bSystemTime1Ms = 0 ; // 1MS系统时标 void Timer0Init(void) { TMOD = 0xf0 ; TMOD |= 0x01 ; //定时器0工作方式1 TH0 = 0xfc ; //定时器初始值 TL0 = 0x66 ; TR0 = 1 ; ET0 = 1 ; } void Time0Isr(void) interrupt 1 { TH0 = 0xfc ; //定时器重新赋初值 TL0 = 0x66 ; g_bSystemTime1Ms = 1 ; //1MS时标标志位置位 } 由于在Led.c文件中需要调用我们的g_bSystemTime1Ms变量。同时主函数需要调用Timer0Init()初始化函数,所以应该对这个变量和函数在头文件里作外部声明。以方便其它函数调用。 Timer.h 内容如下。 #ifndef _TIMER_H_ #define _TIMER_H_ extern void Timer0Init(void) ; extern bit g_bSystemTime1Ms ; #endif 完成了定时器模块后,我们开始编写LED驱动模块。 Led.c 内容如下: #include reg52.h #include MacroAndConst.h #include Led.h #include Timer.h static uint16 g_u16LedTimeCount = 0 ; //LED计数器 static uint8 g_u8LedState = 0 ; //LED状态标志, 0表示亮,1表示熄灭 #define LED P0 //定义LED接口 #define LED_ON() LED = 0x00 ; //所有LED亮 #define LED_OFF() LED = 0xff ; //所有LED熄灭 void LedProcess(void) { if(0 == g_u8LedState) //如果LED的状态为亮,则点亮LED { LED_ON() ; } else //否则熄灭LED { LED_OFF() ; } } void LedStateChange(void) { if(g_bSystemTime1Ms) //系统1MS时标到 { g_bSystemTime1Ms = 0 ; g_u16LedTimeCount++ ; //LED计数器加一 if(g_u16LedTimeCount = 500) //计数达到500,即500MS到了,改变LED的状态。 { g_u16LedTimeCount = 0 ; g_u8LedState = ! g_u8LedState ; } } } 这个模块对外的借口只有两个函数,因此在相应的Led.h 中需要作相应的声明。 Led.h 内容: #ifndef _LED_H_ #define _LED_H_ extern void LedProcess(void) ; extern void LedStateChange(void) ; #endif 这两个模块完成后,我们将其C文件添加到工程中。然后开始编写主函数里的代码。 如下所示: #include reg52.h #include MacroAndConst.h #include Timer.h #include Led.h sbit LED_SEG = P1^4; //数码管段选 sbit LED_DIG = P1^5; //数码管位选 sbit LED_CS11 = P1^6; //led控制位 void main(void) { LED_CS11 = 1 ; //74HC595输出允许 LED_SEG =

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档