如何分配变量到指定的地址 举例: unsigned char temp_A@0x00; //定义无符号变量temp_A,强制其地址为0x00 unsigned char temp_B@0x100; //定义无符号变量temp_B,强制其地址为0x100 @tiny unsigned char temp_C; //定义无符号变量temp_C,由编译器自动在地址小于0x100 的RAM 中为其分配一个@near unsigned char temp_D; //定义无符号变量temp_D,由编译器自动在地址大于0xFF 的RAM 中为其分配一个另外也可以采用伪指令"pragma"将函数或者变量定义到指定的section 中,例如: #pragma section [name] // 将下面定义的未初始化变量定义到.name section 中 Unsigned char data1; Unsigned int data2; ……(任何需要定义在.name section 中的变量) …… #pragma section [] // 返回到正常的section. 注意:pragma 伪指令可以用来定位函数,初始化变量或者未初始化变量。这三者用不同的括号区分。 (name):代码 [name] :未初始化变量 {name}:初始化变量 如何在COSMIC C 文件中使用汇编语言 在COSMIC C 文件中使用汇编语言常见的方法有如下两种:使用#asm …#endasm组合格式 或_asm("…"); 单行格式。 举例1: unsigned char temp_A; Void func1(void) { ... #asm PUSH A LD A,(X) LD _temp_A,A POP A #endasm ... } 注:在C 嵌汇编环境下使用全局变量,要在该全局变量名称前加下划线"_"。 举例2: Void func1(void) { ... _asm("rim"); _asm("nop"); ... } 如何观察 RAM/FLASH/EEPROM 的最终分配情况 在Project->settings->linker选 项 页 中,将Category选 为Output ,再 勾 选Generate 点击OK 按键后,再次编译链接该项目,如果成功则会在项目输出目录中(本例是在C:\STM8_NewProject1\debug 目文件。该文件详细地列出RAM/FLASH/EEPROM 的分配使用情况。 如何生成hex 格式的输出文件 在Project->settings->PostBuild 选项页中,在commands 栏内加入下行命令: chex –fi -o $(OutputPath)$(TargetSName).hex $(OutputPath)$(TargetSName).sm8 再次编译链接该项目,如果成功则会在项目输出目录中(本例是在C:\STM8_NewProject1\debug 目录下)生成 .he什么是MEMORY MODEL STM8 的 C 编译器支持多种存储器模式。用户可以根据应用的需要选择最适合的配置。可以根据需要选择采用 2式(仅适用于 64k 以内的程序)或者 ...