当前位置: 首页 > news >正文

有关应广单片机数据类型与ROM空间优化的一点看法

       引子:前一段时间做一个倒计时项目,带显示,由于涉及到各种运算和模式切换,把2k空间给填满了,但是还有一些特性没有完成,因此就想着看看这么样优化一下,扣点空间出来,这样就可以不用换3k空间的单品机了。毕竟3k空间单片机要贵一点。后面发现,eword运算比较耗空间,然后就用word+byte方式实现。

为了达到这个对比目的,把其中一部分代码扣下来,专门做了一个工程来对比测试。有需要可以找我要工程代码。

不多说上代码    

void    FPPA0 (void)
{
   
    .ADJUST_IC    SYSCLK=IHRC/2,IHRC=16MHz,init_ram;        
    wdreset;
    
    /*初始化T16*/
    Timer16_Init();

     $ MS_OUT out,low;
    
    Engint;

    #if DEBUG_WORD

    ucTaskRunTmr=240;

   
    #else
    ueTaskRunTmr=240000;

    #endif

    /*开启看门狗*/
    CLKMD.En_WatchDog   =  1;
    
    while (1)
    {
        /*喂狗*/
        wdreset;
        
        /*1ms标记*/
        if(msFlag)
        {
            
            #if DEBUG_WORD
            /*word+byte 倒计时方式*/
            usMsCnt++;
            if(usMsCnt>999)
            {
                /*1ms*1000=1000ms*/
                usMsCnt=0;
                
                if(ucTaskRunTmr)
                {
                    /*在倒计时内,在不同的时间点,执行不同动作*/
                    if(ucTaskRunTmr==240)
                    {
                         $ MS_OUT out,low;
                    }
                    else if(ucTaskRunTmr==180)
                    {
                        $ MS_OUT out,high;
                    }
                    else if(ucTaskRunTmr==120)
                    {
                        $ MS_OUT out,low;
                    }
                    else if(ucTaskRunTmr==60)
                    {
                        $ MS_OUT out,high;
                    }
                    else if(ucTaskRunTmr==30)
                    {
                        $ MS_OUT out,low;
                    }
                    else if(ucTaskRunTmr==15)
                    {
                        $ MS_OUT out,high;
                    }
                    
                    ucTaskRunTmr--;
                }
                
                
            }

            #else 
            /*使用eword(3 byte) 倒计时方式*/
            if(ueTaskRunTmr)
            {
                if(ueTaskRunTmr==240000)
                {
                    $ MS_OUT out,low;
                }
                else if(ueTaskRunTmr==180000)
                {
                    $ MS_OUT out,high;
                }
                else if(ueTaskRunTmr==120000)
                {
                    $ MS_OUT out,low;
                }
                else if(ueTaskRunTmr==60000)
                {
                    $ MS_OUT out,high;
                }
                else if(ueTaskRunTmr==30000)
                {
                    $ MS_OUT out,low;
                }
                else if(ueTaskRunTmr==15000)
                {
                    $ MS_OUT out,high;
                }
                
                ueTaskRunTmr--;
            }

              #endif
            
            /*1ms task*/

            msFlag=0;
        }

    }
}

使用 word+byte 模式

使用 eword 模式

 

  0xFd-0xD5= 0x28=40 word 。代码改一下就多出40个wrod空间,看来还蛮有效果的。

       空间虽然腾出来一点,但是要注意的是:用了不同的数据类型,会导致定时的精度不同和和产生+/-1的问题,word+byte 的精度是1s(每秒判断一次),而eword的精度是1ms(每ms判断一次),因此进行优化的是时候一定要注意以上的问题,并且做好相关测试,否则优化之后可能出现问题。

下面就做一个总结:

        因为应广单片机是一种8bit单片机,对大于8bit的数据处理能力有限,虽然可以处理16bit 24bit 32bit 这种数据,但是处理起来会耗费不少的空间和时间,因此,在做算法或是流程的时候,要考虑一下这种特性,能够用8bit数据尽量用8bit数据,这样才能使单片机处理效率高,性价比最大化。

  

http://www.dtcms.com/a/503575.html

相关文章:

  • 【2026计算机毕业设计】基于Jsp的医疗设备及业务综合巡检系统
  • 个人业务技能提升如何助力:从“做事”到“成事”的跃迁之路
  • 我们需要的中文编程是什么样子的?
  • 那些网站可以接私活做做兼职有哪些网站
  • 绚星智慧科技斩获智享会三项大奖,领跑AI时代学习与发展赛道
  • 零基础入门Java·基础篇 学习大纲
  • XSS 攻击详解:原理、类型与防范策略
  • 青岛网站建设 百度天津基础设施建设
  • 内蒙古住房和建设厅网站wordpress会员修改
  • 网站排名优化教程wordpress themes.php
  • 机器学习18:扩散模型(Diffusion Model)与Stable Diffusion
  • 17-机器学习与大模型开发数学教程-第1章 1-9 凸函数与凸优化基础
  • 空间建设网站企业建站程序推荐
  • 网站建设 点指成名网站开发调查问卷
  • 【经典书籍】C++ Primer 第10到12章精华讲解
  • 前端数据存储localStorage、sessionStorage 与 Cookie
  • 电影网站制作有哪些做微信小游戏的网站
  • Git从入门到精通教程
  • 课程视频网站建设的必要性色母图片
  • GEO内容更新与迭代策略:趋势话题的快速响应机制
  • 【Spring】Spring事务和事务传播机制
  • php网站开发源码网站开发部门结构
  • 03-流程控制语句-导读
  • MATLAB基于混合算法改进灰色模型的装备故障预测
  • Next.JS环境搭建,对接Rust的RESTful API
  • 目前流行的网站分辨率做多大自己做网站需要备份么
  • NativeScript-Vue 开发指南:直接使用 Vue构建原生移动应用
  • 珠海市横琴建设局网站html网站自带字体怎么做
  • 看汽车图片的网站可以做壁纸差异基因做聚类分析网站
  • 了解制造过程中的BOM类型