你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

51单片机与 STM8 变量定义 区分问题

[复制链接]
su-409464 提问时间:2015-10-15 17:12 /
请问大家  在51单片机 的程序中  有这样的定义:
extern xdata unsigned char send_buf[64];               //发送缓冲区
extern idata unsigned char recd_buf[64];                         //接收缓冲区
extern data  unsigned char temp_buf[72];


如果程序需要移植到  STM8上的话, 请问 这样的变量定义  应该怎样定义?

还是 可以直接 复制过来  , 直接运行就OK 了???

收藏 评论6 发布时间:2015-10-15 17:12

举报

6个回答
磊元lystudio 回答时间:2015-10-15 23:04:22
#if defined(_IAR_EW_STM8_)                                // “IAR Embedded Workbench STM8”条件编译开始
#define regv                  __tiny __no_init volatile
#define sfr                   __tiny __no_init volatile
#define data                  __tiny
#define idata                 __tiny
#define bdata                 __tiny
#define bit                   __tiny
#define xdata                 __near
#define fdata                 __far
#define ixdata                __near
#define flash                 const
#define farflash              const __far
#define code                  const
#define ncode                 const __near
#define fcode                 const __far
#define eeprom                __eeprom
#define rome                  eeprom
#define nrome                 __eeprom
#define frome                 __eeprom
#define romf                  __no_init __eeprom
#define nromf                 __no_init __eeprom
#define fromf                 __no_init __eeprom
#define pts1                  __tiny                      // 存储器指针:1位,最大地址:0xFF    (256 bytes)
#define pts2                  __near                      // 存储器指针:2位,最大地址:0xFFFF  (64K bytes)
#define pts3                  __far                       // 存储器指针:3位,最大地址:0xFFFFFF(16M bytes)
#endif                                                    // “IAR Embedded Workbench STM8”条件编译结束

#if defined(_COSMIC_STM8_)                                // “COSMIC for STM8”条件编译开始
#define regv                  @tiny volatile
#define sfr                   @tiny volatile
#define data                  @tiny
#define idata                 @tiny
#define bdata                 @tiny
#define bit                   @tiny
#define xdata                 @near
#define fdata                 @far
#define ixdata                @near
#define flash                 const
#define farflash              @far const
#define code                  const
#define ncode                 @near const
#define fcode                 @far const
#define eeprom                @eeprom
#define rome                  eeprom
#define nrome                 @near eeprom
#define frome                 @far eeprom
#define romf                  eeprom
#define nromf                 @near eeprom
#define fromf                 @far eeprom
#define pts1                  @tiny                       // 存储器指针:1位,最大地址:0xFF    (256 bytes)
#define pts2                  @near                       // 存储器指针:2位,最大地址:0xFFFF  (64K bytes)
#define pts3                  @far                        // 存储器指针:3位,最大地址:0xFFFFFF(16M bytes)
#endif                                                    // “COSMIC for STM8”条件编译结束
小小超 回答时间:2015-10-17 08:14:43
STM8   code  xdata  这些都是无效的。数据直接存储在flash区。这些都去掉。
cxy 回答时间:2015-10-15 17:27:58
外部变量数组  全局使用  告诉编译器外部有使用
cxy 回答时间:2015-10-15 17:29:20
xdata  idata 看编译器支不支持了   这个应该是存放地方
su-409464 回答时间:2015-10-15 17:53:02
cxy 发表于 2015-10-15 17:29
xdata  idata 看编译器支不支持了   这个应该是存放地方

怎么看呢?  我的编译器  用到的是 STVD
su-409464 回答时间:2015-10-15 18:33:05
su-409464 发表于 2015-10-15 17:53
怎么看呢?  我的编译器  用到的是 STVD

例如 我直接 拷贝的话  就出现了这样的错误

显示缺少" ; "

而实际 code 也是没有颜色标示~~~~


2015-10-15_182813.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版