• 程序的模块化的一些见解5-移植性-实例说明


           我一直以来觉得技术性的文档非常重要,但其实我做得不好。主要是我想做。但我做得不够细致,不够清晰,不够完整。只是,我一直在改善着,希望各位多多指点。
      今天我想表达的是一个关于程序模块化的移植性,通过一个实例来描写叙述。

    说得好。大家顶一下。说得不好,大家顶两下,嘻嘻。
           函数功能非常easy:扫描LED  LED的显示有不亮、闪烁、常亮 3种方式,当中闪烁次数是有规定的,我的是3次(详细是 闪烁3次,周期是0.5秒,即亮0.25秒 灭0.25秒)

    F_FlsLock = 1;//启动时闪烁3次
    F_FlsLock =0; F_LockEn =0;//LED不亮
    F_FlsLock = 0; F_LockEn =1;//LED常亮

    这是我第一次写的程序,5毫秒扫描一次。

    void LedLock(void)
    {
    	static uint8 TimeFlash = 0;//闪烁时间
    	static uint8 FlashTimes = 0;//闪烁次数
    
    	
    	if(F_FlsLock)
    	{
    	  if(++TimeFlash <= 50)
    	  {
    	  	 P_LED = 1;
    	  }
    	  else if(++TimeFlash <= (100-1))
    	  {
    	  	  P_LED = 0;
    	  }
    	  else
    	  {
    	  	TimeFlash = 0;
    
    		if(++FlashTimes >= 3)
    		{
    		  FlashTimes = 0;
    		  F_FlsLock = 0;
    		}
    
    	  }
    	}
    	else
    	{ 
    	   
    	   if(F_LockEn)
    	   {
    		P_LED = 1;
    	   }
    	   else
    	   {
    	       P_LED = 0;
    	   }
    	}
    }


    这是我第二次写的程序,5毫秒扫描一次。



    void LedLock(void)
    {
    	static uint8 TimeFlash = 0;//闪烁时间
    	static uint8 FlashTimes = 0;//闪烁次数
    
    	if(F_FlsLock)
    	{//须要闪烁
    	  if(++TimeFlash <= 50)
    	  {
    	  	 F_LedLockEn = 0;
    	  }
    	  else if(++TimeFlash <= (100-1))
    	  {
    	  	 F_LedLockEn = 1;
    	  }
    	  else
    	  {
    	  	TimeFlash = 0;
    
    		if(++FlashTimes >= 3)
    		{
    		  FlashTimes = 0;
    		  F_FlsLock = 0;
    		}
    
    	  }
    	}
    	else
    	{ 
    	   F_LedLockEn = F_LockEn;
    	}
    }
    //
    	if(F_LedLockEn)
    	{
    	  	P_LED = 1;
    	}
    	else
    	{
    		P_LED = 0;
    	}


    表面能够看出。第2次的程序比第一次多了I个标志位F_LedLockEn 。

    更深一点:假设这两个程序的移植性是那个好呢?这就是我今天主要说的。假设

    这两个程序都用在一个同样的驱动电路,即VDD-LED-电阻-GND,那么
    就没有什么差别。

    但假设用在复用,即按键和LED共用一个IO或者LED共
    用COM,这时功能同样,LED驱动更改肯定要的,但推断是否显示和闪烁是
    时间和次数能够不改,对此,假设抑制第一个程序。那得大改了,哈哈,
    那又得浪费时间了。但第二个程序,仅仅须要更改LED驱动方式。再通过
    F_LedLockEn来确定是否亮与不亮就可以。
    总的来说。这里就是将推断LED是否亮的模块和LED驱动模块全然区分开,
    这样。两个模块就能够单独移植和改动却不相互影响。


    此篇见解至此已完,说得不好,欢迎扔砖。




    点点滴滴的努力着!!。    



  • 相关阅读:
    开放的Web平台才是是我们想要的——HTML5变为HTML
    Web字体格式介绍及浏览器兼容性一览
    E百科 | 基于MEC的边缘AI服务
    技术改变生活 浅谈阿里云混合云的探索与实践
    阿里云CDN产品经理陈章炜:边缘创新技术和落地实践
    什么是微内核架构设计?
    技术干货 | 深度解构 Android 应用面临紧急发版时的救星方案:mPaaS 热修复——DexPatch
    如何接地气地接入微前端?
    阿里云原生应用安全防护实践与 OpenKruise 的新领域
    函数计算镜像加速:从分钟到秒的跨越
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10506302.html
  • Copyright © 2020-2023  润新知