5017|5

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM8与51核变更定义区域比较(转贴) [复制链接]



                        stm8与51核变量定义区域比较:
1)idata与@tiny:
  熟悉51核的都知道,idata是定义内部ram地址的,而stm8的@tiny是把变量指定在zero page,zero page是0地址到0xff之间的与ram分开的256字节空间。操作zero page这段地址内的数据的指令,比操作其他ram区域的指令更快速,更高效。位操作指令指令只能处理这段地址中的数据(用途和原理和idata都类似)。所以编译器会把经常用到的数据分配到这个区间。zero page 又分多段:
   a).bsct:在zero page区域的初始化变量。
   b).ubsct:在zero pgae里面的未初始化变量。
   c).bit:位操作段。
   d).share:共享段?不太明白。
用户也可以使用这部分空间,只要在定义变量时要加上@tiny定义。如:@tiny char a 。在这@tiny char a;与 char idata a;形成比较。

2)xdata与@near:
用@near定义的变量会出现在stm8的ram区域。ram区域分段如下:
a) .bss:未初始化变量区域;
b) .data:已初始化变量区域;
c) .const:常量区域
另外还可以自己分配其他的段。如.fdata,.fconst.....
在这形成char xdata a[]与@near char a[]对比,和51核一样,如果不把大量的变量定义在外部ram区域(在这是ram区域),会造成zero page地址溢出。常见错误如:

3)pdata与@far???
这个不知道能不能比较,pdata不说了,@far定义的变量会出现在.fdata段(large variable)中,要自己添加这个段。

4)bit与_Bool:
  都是位操作,布尔变量。
另外stm8还有eeprom空间,所以还有@eeprom类型。

5)总结:
简单的说了一下,详细见Cosmic手册。在移植51程序到stm8时,这几个地方也是要注意的。
此帖出自stm32/stm8论坛

最新回复

                                 为什么一定要跟51比较呢  详情 回复 发表于 2010-6-24 21:13
点赞 关注
 

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 不错的贴
此帖出自stm32/stm8论坛
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 不过好像很眼熟,呵呵
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
熟悉 51核的用 stm8需要点脑筋急转弯。
熟悉 6502, 6800核的用 stm8上手特快,因为 stm8就是增强型的6502(6800)核。
此帖出自stm32/stm8论坛
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 总结的很不错
此帖出自stm32/stm8论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 为什么一定要跟51比较呢
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved