su-409464 发表于 2015-10-15 17:12:50

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

请问大家在51单片机 的程序中有这样的定义:
extern xdata unsigned char send_buf;               //发送缓冲区
extern idata unsigned char recd_buf;                         //接收缓冲区
extern dataunsigned char temp_buf;


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

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

磊元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”条件编译结束

ts2000 发表于 2015-10-17 08:14:43

STM8   codexdata这些都是无效的。数据直接存储在flash区。这些都去掉。:)

cxy 发表于 2015-10-15 17:27:58

外部变量数组全局使用告诉编译器外部有使用

cxy 发表于 2015-10-15 17:29:20

xdataidata 看编译器支不支持了   这个应该是存放地方

su-409464 发表于 2015-10-15 17:53:02

cxy 发表于 2015-10-15 17:29
xdataidata 看编译器支不支持了   这个应该是存放地方

怎么看呢?我的编译器用到的是 STVD

su-409464 发表于 2015-10-15 18:33:05

su-409464 发表于 2015-10-15 17:53
怎么看呢?我的编译器用到的是 STVD

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

显示缺少" ; "

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


页: [1]
查看完整版本: 51单片机与 STM8 变量定义 区分问题