51单片机与 STM8 变量定义 区分问题
请问大家在51单片机 的程序中有这样的定义:extern xdata unsigned char send_buf; //发送缓冲区
extern idata unsigned char recd_buf; //接收缓冲区
extern dataunsigned char temp_buf;
如果程序需要移植到STM8上的话, 请问 这样的变量定义应该怎样定义?
还是 可以直接 复制过来, 直接运行就OK 了???
#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”条件编译结束 STM8 codexdata这些都是无效的。数据直接存储在flash区。这些都去掉。:) 外部变量数组全局使用告诉编译器外部有使用 xdataidata 看编译器支不支持了 这个应该是存放地方 cxy 发表于 2015-10-15 17:29
xdataidata 看编译器支不支持了 这个应该是存放地方
怎么看呢?我的编译器用到的是 STVD su-409464 发表于 2015-10-15 17:53
怎么看呢?我的编译器用到的是 STVD
例如 我直接 拷贝的话就出现了这样的错误
显示缺少" ; "
而实际 code 也是没有颜色标示~~~~
页:
[1]