ABB 3HAB 7215-1
价格:999.00
我们不生产PLC,我们只做全新原装的搬运工!供应ABB3HAB7215-1DSQC331ucharc1;idataucharc2;ucharc3;变量c2肯定会以间接寻址,但它有可能落在data区域,就浪费了一个可直接寻址的空间变量优化一般要注意几点:①让尽可能多的变量使用直接寻址,提高速度假如有两个单字节的变量,一个长119的字符型数组因为总长超过120字节,不可能都定义在data区按这条原则,定义的方式如下:dataUCHARtab[119];dataUCAHRc1;idataUCHaRc2;但也不是绝的,如果c1,c2需要以极高的频率访问,而tab访问不那么频繁则应该让访问量大的变量使用直接寻址:dataUCAHRc1;dataUCHaRc2;idataUCHARtab[119];这个是要根据具体项目需求来确定的②提高内存的重复利用率就是尽可能的利用局部变量,局部变量还有个好处是访问速度比较快由前面的例子可以看出,局部变量i,j是没有单独占用内存的子程序中使用内存数目不大的变量尽量定义为局部变量③对于指针数组的定义,尽可能指明存储类型尽量使用无符号类型变量一般指针需要一个字节额外的字节指明存储类型8051系列本身不支持符号数,需要外加库来处理符号数,一是大大降低程序运行效率,二是需要额外的内存④避免出现内存空洞可以通过查看编译器输出符号表文件(.M51)查看对前面的代码,M51文件中关于内存一节如下:*******DATAMEMORY*******REG0000H0008HABSOLUTE"REGBANK0"DATA0008H0078HUNIT?DT?TESTIDATA0080H007FHUNIT?ID?TESTIDATA00FFH0001HUNIT?STACK***行显示寄存器组0从地址0000H开始,占用0008H个字节第二行显示DATA区变量从0008H开始,占用0078H个字节第三行显示IDATA区变量从0080H开始,占用007F个字节第四行显示堆栈从00FFH开始,占0001H个字节由于前面代码中变量定义比较简单,且连续用完了所有空间,所以这里显示比较简单变量定义较多时,这里会有很多行如果全局变量与局部变量分配不合理,就有可能出现类似下面的行0010H0012H***GAP***该行表示从0010H开始连续0012H个字节未充分利用或根本未用到出现这种情况***常见的原因是局变量太多、多个子程序中的局部变量数目差异太大、使用了寄存器切换但未充分利用ucharc1;idataucharc2;ucharc3;变量c2肯定会以间接寻址,但它有可能落在data区域,就浪费了一个可直接寻址的空间变量优化一般要注意几点:①让尽可能多的变量使用直接寻址,提高速度假如有两个单字节的变量,一个长119的字符型数组因为总长超过120字节,不可能都定义在data区按这条原则,定义的方式如下:dataUCHARtab[119];dataUCAHRc1;idataUCHaRc2;但也不是绝的,如果c1,c2需要以极高的频率访问,而tab访问不那么频繁则应该让访问量大的变量使用直接寻址:dataUCAHRc1;dataUCHaRc2;idataUCHARtab[119];这个是要根据具体项目需求来确定的②提高内存的重复利用率就是尽可能的利用局部变量,局部变量还有个好处是访问速度比较快由前面的例子可以看出,局部变量i,j是没有单独占用内存的子程序中使用内存数目不大的变量尽量定义为局部变量③对于指针数组的定义,尽可能指明存储类型尽量使用无符号类型变量一般指针需要一个字节额外的字节指明存储类型8051系列本身不支持符号数,需要外加库来处理符号数,一是大大降低程序运行效率,二是需要额外的内存④避免出现内存空洞可以通过查看编译器输出符号表文件(.M51)查看对前面的代码,M51文件中关于内存一节如下:*******DATAMEMORY*******REG0000H0008HABSOLUTE"REGBANK0"DATA0008H0078HUNIT?DT?TESTIDATA0080H007FHUNIT?ID?TESTIDATA00FFH0001HUNIT?STACK***行显示寄存器组0从地址0000H开始,占用0008H个字节第二行显示DATA区变量从0008H开始,占用0078H个字节第三行显示IDATA区变量从0080H开始,占用007F个字节第四行显示堆栈从00FFH开始,占0001H个字节由于前面代码中变量定义比较简单,且连续用完了所有空间,所以这里显示比较简单变量定义较多时,这里会有很多行如果全局变量与局部变量分配不合理,就有可能出现类似下面的行0010H0012H***GAP***该行表示从0010H开始连续0012H个字节未充分利用或根本未用到出现这种情况***常见的原因是局变量太多、多个子程序中的局部变量数目差异太大、使用了寄存器切换但未充分利用)
厦门莫格电气自动化有限公司
业务 QQ: 1982497648